Web:Client:Store: rewrite OAuth store to typescipt
This commit is contained in:
parent
dc1274fb88
commit
74e94c0a10
@ -1,106 +0,0 @@
|
|||||||
import { makeAutoObservable, runInAction } from "mobx";
|
|
||||||
|
|
||||||
import {
|
|
||||||
addClient,
|
|
||||||
deleteClient,
|
|
||||||
getClient,
|
|
||||||
getClientList,
|
|
||||||
regenerateSecret,
|
|
||||||
updateClient,
|
|
||||||
} from "@docspace/common/api/oauth";
|
|
||||||
|
|
||||||
const clients = [...Array(5)].map((value, index) => {
|
|
||||||
return {
|
|
||||||
enabled: true,
|
|
||||||
id: index,
|
|
||||||
name: `7383bc80-b0ad-4fad-8850-${index}`,
|
|
||||||
description: "Application description",
|
|
||||||
client_id: "46192a5a-e19c-453c-aec3-50617290edbe",
|
|
||||||
client_secret: "e5ff57e4-4ce2-4dac-a265-88bc7e726684",
|
|
||||||
root_url: "https://google.com",
|
|
||||||
redirect_uris: ["https://openidconnect.net/callback"],
|
|
||||||
allowed_origins: [
|
|
||||||
"https://google.com",
|
|
||||||
"https://openidconnect.net/callback",
|
|
||||||
],
|
|
||||||
scopes: ["accounts:write", "accounts:read"],
|
|
||||||
logo_uri: "https://logo2.example",
|
|
||||||
policy_uri: "https://policy2.example",
|
|
||||||
terms_uri: "https://terms2.example",
|
|
||||||
state: "draft",
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
const scopes = [
|
|
||||||
"files:read",
|
|
||||||
"files:write",
|
|
||||||
"rooms:read",
|
|
||||||
"rooms:write",
|
|
||||||
"account.self:read",
|
|
||||||
"account.self:write",
|
|
||||||
"accounts:read",
|
|
||||||
"accounts:write",
|
|
||||||
];
|
|
||||||
|
|
||||||
class OAuthStore {
|
|
||||||
clients = [];
|
|
||||||
currentClient = clients[0];
|
|
||||||
|
|
||||||
constructor() {
|
|
||||||
makeAutoObservable(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
fetchClient = async (clientId) => {
|
|
||||||
await getClient(clientId);
|
|
||||||
};
|
|
||||||
|
|
||||||
fetchClients = async (page, limit) => {
|
|
||||||
this.clients = clients;
|
|
||||||
|
|
||||||
await getClientList(0, 20);
|
|
||||||
};
|
|
||||||
|
|
||||||
saveClient = async (client) => {
|
|
||||||
await addClient(client);
|
|
||||||
};
|
|
||||||
|
|
||||||
updateClient = async (clientId, client) => {
|
|
||||||
await updateClient(clientId, client);
|
|
||||||
};
|
|
||||||
|
|
||||||
regenerateSecret = async (clientId) => {
|
|
||||||
await regenerateSecret(clientId);
|
|
||||||
};
|
|
||||||
|
|
||||||
deleteClient = async (clientId) => {
|
|
||||||
await deleteClient(clientId);
|
|
||||||
};
|
|
||||||
|
|
||||||
setCurrentClient = (client) => {
|
|
||||||
this.currentClient = client;
|
|
||||||
};
|
|
||||||
|
|
||||||
addClient = (client) => {
|
|
||||||
this.clients = [...this.clients, client];
|
|
||||||
};
|
|
||||||
|
|
||||||
setEnabled = (id) => {
|
|
||||||
const index = this.clients.findIndex((proj) => proj.id === id);
|
|
||||||
|
|
||||||
this.clients[index].enabled = !this.clients[index].enabled;
|
|
||||||
};
|
|
||||||
|
|
||||||
// deleteClient = (id) => {
|
|
||||||
// this.clients = this.clients.filter((proj) => proj.id !== id);
|
|
||||||
// };
|
|
||||||
|
|
||||||
editClient = (client) => {
|
|
||||||
const index = this.clients.findIndex((proj) => proj.id === client.id);
|
|
||||||
|
|
||||||
runInAction(() => {
|
|
||||||
this.clients[index] = client;
|
|
||||||
});
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
export default OAuthStore;
|
|
107
packages/client/src/store/OAuthStore.ts
Normal file
107
packages/client/src/store/OAuthStore.ts
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
import { makeAutoObservable } from "mobx";
|
||||||
|
|
||||||
|
import {
|
||||||
|
addClient,
|
||||||
|
deleteClient,
|
||||||
|
getClient,
|
||||||
|
getClientList,
|
||||||
|
getScope,
|
||||||
|
getScopeList,
|
||||||
|
regenerateSecret,
|
||||||
|
updateClient,
|
||||||
|
} from "@docspace/common/api/oauth";
|
||||||
|
|
||||||
|
import {
|
||||||
|
ClientDTO,
|
||||||
|
ClientListDTO,
|
||||||
|
ClientListProps,
|
||||||
|
ClientProps,
|
||||||
|
ScopeDTO,
|
||||||
|
} from "@docspace/common/utils/oauth/dto";
|
||||||
|
|
||||||
|
export interface OAuthStoreProps {
|
||||||
|
clients: ClientProps[];
|
||||||
|
currentClient: null | ClientProps;
|
||||||
|
|
||||||
|
scopes: ScopeDTO[];
|
||||||
|
|
||||||
|
fetchClient: (clientId: string) => Promise<ClientProps>;
|
||||||
|
fetchClients: (page: number, limit: number) => Promise<void>;
|
||||||
|
saveClient: (client: ClientProps) => Promise<ClientProps>;
|
||||||
|
updateClient: (clientId: string, client: ClientProps) => Promise<ClientProps>;
|
||||||
|
regenerateSecret: (clientId: string) => Promise<string>;
|
||||||
|
deleteClient: (clientId: string) => Promise<void>;
|
||||||
|
|
||||||
|
fetchScope: (name: string) => Promise<ScopeDTO>;
|
||||||
|
fetchScopes: () => Promise<void>;
|
||||||
|
|
||||||
|
clientList: ClientProps[];
|
||||||
|
scopeList: ScopeDTO[];
|
||||||
|
}
|
||||||
|
|
||||||
|
class OAuthStore implements OAuthStoreProps {
|
||||||
|
clients: ClientProps[] = [];
|
||||||
|
currentClient: ClientProps | null = null;
|
||||||
|
|
||||||
|
scopes: ScopeDTO[] = [];
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
makeAutoObservable(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
fetchClient = async (clientId: string) => {
|
||||||
|
const client = await getClient(clientId);
|
||||||
|
|
||||||
|
return client;
|
||||||
|
};
|
||||||
|
|
||||||
|
fetchClients = async (page: number, limit: number) => {
|
||||||
|
const clientList: ClientListProps = await getClientList(0, 20);
|
||||||
|
|
||||||
|
this.clients = clientList.content;
|
||||||
|
};
|
||||||
|
|
||||||
|
saveClient = async (client: ClientProps) => {
|
||||||
|
const newClient = await addClient(client);
|
||||||
|
|
||||||
|
return newClient;
|
||||||
|
};
|
||||||
|
|
||||||
|
updateClient = async (clientId: string, client: ClientProps) => {
|
||||||
|
const newClient = await updateClient(clientId, client);
|
||||||
|
|
||||||
|
return newClient;
|
||||||
|
};
|
||||||
|
|
||||||
|
regenerateSecret = async (clientId: string) => {
|
||||||
|
const secret = await regenerateSecret(clientId);
|
||||||
|
|
||||||
|
return secret;
|
||||||
|
};
|
||||||
|
|
||||||
|
deleteClient = async (clientId: string) => {
|
||||||
|
await deleteClient(clientId);
|
||||||
|
};
|
||||||
|
|
||||||
|
fetchScope = async (name: string) => {
|
||||||
|
const scope = await getScope(name);
|
||||||
|
|
||||||
|
return scope;
|
||||||
|
};
|
||||||
|
|
||||||
|
fetchScopes = async () => {
|
||||||
|
const scopes = await getScopeList();
|
||||||
|
|
||||||
|
this.scopes = scopes;
|
||||||
|
};
|
||||||
|
|
||||||
|
get clientList() {
|
||||||
|
return this.clients;
|
||||||
|
}
|
||||||
|
|
||||||
|
get scopeList() {
|
||||||
|
return this.scopes;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default OAuthStore;
|
Loading…
Reference in New Issue
Block a user