create-magner
Version:
CLI for bootstrapping Magner projects
51 lines (40 loc) • 957 B
text/typescript
import { request } from '~/utils/request';
import { ROLE } from '~/constants';
type ProxyFunc<BEFORE, AFTER> = (data: BEFORE) => AFTER;
interface User {
id: string,
name: string,
roles: ROLE[],
}
export interface Response {
status: boolean,
code: number,
msg: 'ok',
user: User,
token: string,
}
export interface Proxy {
role: string | null,
token: string,
user: User,
}
export const dataToProxy: ProxyFunc<Response, Proxy> = (data) => ({
token: data.token,
role: data.user.roles?.length ? data.user.roles[0] : null,
user: data.user,
});
const loginRequest = request.profile(async ({ api, parseError }) => {
const res = await api.get<Response>('auth/profile');
if (res.error) {
return { error: parseError(res.error) };
}
const proxied = dataToProxy(res.data);
return {
data: {
user: proxied.user,
token: proxied.token,
role: proxied.role,
},
};
});
export default loginRequest;