mi-auth-client
Version:
Use to MI product authorization and authentication
130 lines (129 loc) • 3.77 kB
TypeScript
export declare type ID = number;
export declare type Token = string;
export interface UserRegisterInfo {
username: string;
email: string;
password: string;
role: string;
platform: string[];
advertisers?: ID[];
}
export interface updateUser {
username: string;
role: string;
platform: string[];
password?: string;
brand?: number[];
advertisers?: number[];
}
export interface User {
id?: ID;
username: string;
email: string;
role: string;
platform: string[];
password?: string;
brand?: Brand[];
advertisers?: Advertiser[];
}
export interface UserPermissionLogin {
jwt: Token;
user: User;
}
export interface updateRole {
id: ID;
name: string;
permissions: string[];
}
export interface Role {
id: ID;
name: string;
permissions?: Object[];
nb_users?: number;
}
export interface Brand {
id?: ID;
name: string;
advertisers?: Advertiser[];
owners?: BrandOwner[];
manager?: BrandOwner[];
}
export declare type BrandOwner = {
id?: ID;
username?: string;
email?: string;
role?: string;
platform?: string[];
};
export interface updateBrand {
id?: ID;
name: string;
advertisers?: number[];
owners?: number[];
manager?: number[];
disabled?: boolean;
}
export interface Advertiser {
id?: ID;
name: string;
brand: ID;
users?: User[];
}
export interface Platform {
id?: ID;
name: string;
}
export interface updateAdvertiser {
id?: ID;
name?: string;
brand?: ID;
users?: number[];
disabled?: boolean;
}
export interface result {
data: any;
error: any;
}
export interface ClientTool {
login(name: string, password: string): Promise<result>;
getMe(token: Token): Promise<result>;
createUser(token: Token, profile: UserRegisterInfo): Promise<result>;
listUsers(token: Token, params: listParams, options?: sortParams): Promise<result>;
updateUser(token: Token, id: ID, profile: updateUser): Promise<result>;
deleteUser(token: Token, id: ID): Promise<result>;
deleteSuperAdmin?(token: Token, brand: ID, advertisers: ID[]): void;
deleteManager?(token: Token, brand: ID, advertisers: ID[]): void;
addBrandOwner?(token: Token, owner: ID[], advertisers: ID[]): void;
addBrandManager?(token: Token, owner: ID[], advertisers: ID[]): void;
listRoles(token: Token): Promise<Role[]>;
createRole?(token: Token, params: updateRole): Promise<result>;
updateRole?(token: Token, params: updateRole): Promise<result>;
deleteRole?(token: Token, id: ID): Promise<result>;
listPlatforms?(token: Token): Promise<Platform[]>;
createBrand(token: Token, profile: updateBrand): Promise<result>;
listBrands(token: Token, params: Pick<listParams, "ids" | "disabled">, options?: sortParams): Promise<result>;
updateBrand(token: Token, id: ID, profile: updateBrand): Promise<result>;
deleteBrand(token: Token, id: ID): Promise<result>;
createAdvertiser(token: Token, profile: updateAdvertiser): Promise<result>;
listAdvertisers(token: Token, params: Pick<listParams, "ids" | "brands" | "disabled">, options?: sortParams): Promise<result>;
updateAdvertiser(token: Token, id: ID, profile: updateAdvertiser): Promise<result>;
deleteAdvertiser(token: Token, id: ID): Promise<result>;
}
export interface ClientToolParams {
url?: string;
mock?: boolean;
}
export interface listParams {
ids?: ID[];
brands?: ID[];
advertisers?: ID[];
roles?: string[];
disabled?: boolean;
}
declare type sortKey = 'created_at' | 'updated_at' | 'id' | 'name' | 'username';
declare type Sort = Map<sortKey, 1 | -1>;
export interface sortParams {
sort?: Sort;
limit?: number;
}
export {};