Web:Common:OAuth: add new utils, new interfaces
This commit is contained in:
parent
a56a46236c
commit
3b9c56c5f4
@ -1,6 +1,17 @@
|
|||||||
import axios, { AxiosRequestConfig } from "axios";
|
import axios, { AxiosRequestConfig } from "axios";
|
||||||
|
|
||||||
import { ClientDTO, ClientListDTO } from "../../utils/oauth/dto";
|
import {
|
||||||
|
transformToClientProps,
|
||||||
|
transformToClientDTO,
|
||||||
|
} from "./../../utils/oauth/index";
|
||||||
|
|
||||||
|
import {
|
||||||
|
ClientDTO,
|
||||||
|
ClientListDTO,
|
||||||
|
ClientListProps,
|
||||||
|
ClientProps,
|
||||||
|
ScopeDTO,
|
||||||
|
} from "../../utils/oauth/dto";
|
||||||
|
|
||||||
const axiosConfig: AxiosRequestConfig = {
|
const axiosConfig: AxiosRequestConfig = {
|
||||||
baseURL: "/api",
|
baseURL: "/api",
|
||||||
@ -24,49 +35,56 @@ const request = (options: any): Promise<any> => {
|
|||||||
return client(options).then(onSuccess).catch(onError);
|
return client(options).then(onSuccess).catch(onError);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const getClient = async (clientId: string): Promise<ClientDTO> => {
|
export const getClient = async (clientId: string): Promise<ClientProps> => {
|
||||||
const client: ClientDTO = await request({
|
const client: ClientDTO = await request({
|
||||||
method: "get",
|
method: "get",
|
||||||
url: `/clients/${clientId}`,
|
url: `/clients/${clientId}`,
|
||||||
});
|
});
|
||||||
return client;
|
|
||||||
|
return transformToClientProps(client);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const getClientList = async (
|
export const getClientList = async (
|
||||||
page: number,
|
page: number,
|
||||||
limit: number
|
limit: number
|
||||||
): Promise<ClientListDTO> => {
|
): Promise<ClientListProps> => {
|
||||||
const clients: ClientListDTO = (
|
const { data }: { data: ClientListDTO } = await request({
|
||||||
await request({
|
|
||||||
method: "get",
|
method: "get",
|
||||||
url: `/clients?page=${page}&limit=${limit}`,
|
url: `/clients?page=${page}&limit=${limit}`,
|
||||||
})
|
});
|
||||||
).data;
|
|
||||||
|
const clients = { ...data, content: [] as ClientProps[] };
|
||||||
|
|
||||||
|
data.content.forEach((item) => {
|
||||||
|
const client = transformToClientProps(item);
|
||||||
|
|
||||||
|
clients.content.push({ ...client });
|
||||||
|
});
|
||||||
|
|
||||||
return clients;
|
return clients;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const addClient = async (data: ClientDTO): Promise<ClientDTO> => {
|
export const addClient = async (data: ClientProps): Promise<ClientProps> => {
|
||||||
const client: ClientDTO = await request({
|
const client: ClientDTO = await request({
|
||||||
method: "post",
|
method: "post",
|
||||||
url: `/clients`,
|
url: `/clients`,
|
||||||
data,
|
data: transformToClientDTO(data),
|
||||||
});
|
});
|
||||||
|
|
||||||
return client;
|
return transformToClientProps(client);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const updateClient = async (
|
export const updateClient = async (
|
||||||
clientId: string,
|
clientId: string,
|
||||||
data: ClientDTO
|
data: ClientProps
|
||||||
): Promise<ClientDTO> => {
|
): Promise<ClientProps> => {
|
||||||
const client: ClientDTO = await request({
|
const client: ClientDTO = await request({
|
||||||
method: "put",
|
method: "put",
|
||||||
url: `/clients/${clientId}`,
|
url: `/clients/${clientId}`,
|
||||||
data,
|
data: transformToClientDTO(data),
|
||||||
});
|
});
|
||||||
|
|
||||||
return client;
|
return transformToClientProps(client);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const regenerateSecret = async (clientId: string): Promise<string> => {
|
export const regenerateSecret = async (clientId: string): Promise<string> => {
|
||||||
@ -86,3 +104,21 @@ export const deleteClient = async (clientId: string): Promise<void> => {
|
|||||||
url: `/clients/${clientId}`,
|
url: `/clients/${clientId}`,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const getScope = async (name: string): Promise<ScopeDTO> => {
|
||||||
|
const scope: ScopeDTO = await request({
|
||||||
|
method: "get",
|
||||||
|
url: `/scopes/${name}`,
|
||||||
|
});
|
||||||
|
|
||||||
|
return scope;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const getScopeList = async (): Promise<ScopeDTO[]> => {
|
||||||
|
const scopeList: ScopeDTO[] = await request({
|
||||||
|
method: "get",
|
||||||
|
url: `/scopes`,
|
||||||
|
});
|
||||||
|
|
||||||
|
return scopeList;
|
||||||
|
};
|
||||||
|
@ -1,4 +1,23 @@
|
|||||||
import { OauthScopes } from "./enums";
|
export type ScopeDTO = {
|
||||||
|
name: string;
|
||||||
|
description: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export interface ClientProps {
|
||||||
|
clientId: string;
|
||||||
|
secret: string;
|
||||||
|
description: string;
|
||||||
|
termsUrl: string;
|
||||||
|
policyUrl: string;
|
||||||
|
logoUrl: string;
|
||||||
|
authenticationMethod: string;
|
||||||
|
redirectUri: string;
|
||||||
|
logoutRedirectUri: string;
|
||||||
|
scopes: string[];
|
||||||
|
tenant: number;
|
||||||
|
invalidated?: boolean;
|
||||||
|
name: string;
|
||||||
|
}
|
||||||
|
|
||||||
export type ClientDTO = {
|
export type ClientDTO = {
|
||||||
client_id: string;
|
client_id: string;
|
||||||
@ -10,11 +29,41 @@ export type ClientDTO = {
|
|||||||
authenticationMethod: string;
|
authenticationMethod: string;
|
||||||
redirect_uri: string;
|
redirect_uri: string;
|
||||||
logout_redirect_uri: string;
|
logout_redirect_uri: string;
|
||||||
scopes: OauthScopes[];
|
scopes: string[];
|
||||||
tenant: number;
|
tenant: number;
|
||||||
invalidated?: boolean;
|
invalidated?: boolean;
|
||||||
|
name: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export interface ClientListProps {
|
||||||
|
content: ClientProps[];
|
||||||
|
empty: boolean;
|
||||||
|
first: boolean;
|
||||||
|
last: true;
|
||||||
|
number: number;
|
||||||
|
numberOfElements: number;
|
||||||
|
pageable: {
|
||||||
|
offset: number;
|
||||||
|
pageNumber: number;
|
||||||
|
pageSize: number;
|
||||||
|
paged: boolean;
|
||||||
|
sort: {
|
||||||
|
empty: boolean;
|
||||||
|
sorted: boolean;
|
||||||
|
unsorted: boolean;
|
||||||
|
};
|
||||||
|
unpaged: boolean;
|
||||||
|
};
|
||||||
|
size: number;
|
||||||
|
sort: {
|
||||||
|
empty: boolean;
|
||||||
|
sorted: boolean;
|
||||||
|
unsorted: boolean;
|
||||||
|
};
|
||||||
|
totalElements: number;
|
||||||
|
totalPages: number;
|
||||||
|
}
|
||||||
|
|
||||||
export type ClientListDTO = {
|
export type ClientListDTO = {
|
||||||
content: ClientDTO[];
|
content: ClientDTO[];
|
||||||
empty: boolean;
|
empty: boolean;
|
||||||
|
73
packages/common/utils/oauth/index.ts
Normal file
73
packages/common/utils/oauth/index.ts
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
import { ClientDTO, ClientProps } from "./dto";
|
||||||
|
|
||||||
|
export const transformToClientProps = (clientDto: ClientDTO): ClientProps => {
|
||||||
|
const {
|
||||||
|
client_id,
|
||||||
|
client_secret,
|
||||||
|
description,
|
||||||
|
terms_url,
|
||||||
|
policy_url,
|
||||||
|
logo_url,
|
||||||
|
authenticationMethod,
|
||||||
|
redirect_uri,
|
||||||
|
logout_redirect_uri,
|
||||||
|
scopes,
|
||||||
|
tenant,
|
||||||
|
invalidated,
|
||||||
|
name,
|
||||||
|
} = clientDto;
|
||||||
|
|
||||||
|
const client: ClientProps = {
|
||||||
|
clientId: client_id,
|
||||||
|
secret: client_secret,
|
||||||
|
description,
|
||||||
|
termsUrl: terms_url,
|
||||||
|
policyUrl: policy_url,
|
||||||
|
logoUrl: logo_url,
|
||||||
|
authenticationMethod,
|
||||||
|
redirectUri: redirect_uri,
|
||||||
|
logoutRedirectUri: logout_redirect_uri,
|
||||||
|
scopes,
|
||||||
|
tenant,
|
||||||
|
invalidated,
|
||||||
|
name,
|
||||||
|
};
|
||||||
|
|
||||||
|
return client;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const transformToClientDTO = (clientProps: ClientProps): ClientDTO => {
|
||||||
|
const {
|
||||||
|
clientId: client_id,
|
||||||
|
secret: client_secret,
|
||||||
|
description,
|
||||||
|
termsUrl: terms_url,
|
||||||
|
policyUrl: policy_url,
|
||||||
|
logoUrl: logo_url,
|
||||||
|
authenticationMethod,
|
||||||
|
redirectUri: redirect_uri,
|
||||||
|
logoutRedirectUri: logout_redirect_uri,
|
||||||
|
scopes,
|
||||||
|
tenant,
|
||||||
|
invalidated,
|
||||||
|
name,
|
||||||
|
} = clientProps;
|
||||||
|
|
||||||
|
const client: ClientDTO = {
|
||||||
|
client_id,
|
||||||
|
client_secret,
|
||||||
|
description,
|
||||||
|
terms_url,
|
||||||
|
policy_url,
|
||||||
|
logo_url,
|
||||||
|
authenticationMethod,
|
||||||
|
redirect_uri,
|
||||||
|
logout_redirect_uri,
|
||||||
|
scopes,
|
||||||
|
tenant,
|
||||||
|
invalidated,
|
||||||
|
name,
|
||||||
|
};
|
||||||
|
|
||||||
|
return client;
|
||||||
|
};
|
Loading…
Reference in New Issue
Block a user