2023-08-21 15:36:10 +08:00

46 lines
1.3 KiB
TypeScript

import {RouteHandleFunction} from "../core/types.ts";
import {login} from "../service/app.ts";
import {UserModel} from "../../model";
export function encodeUserToken(user: UserModel) {
if (user == null) throw new Error('user is null')
const token = JSON.stringify(user)
return btoa(encodeURIComponent(token));
}
export function decodeUserToken(token: string) {
// 将token转回UserModel对象数据
const user = decodeURIComponent(atob(token));
return JSON.parse(user) as UserModel
}
export const loginHandler: RouteHandleFunction
= async ({
body, res
}) => {
if (!body.username || !body.password) {
// 没有用户名或者密码
res.send({code: 2, message: '用户名和密码不能为空'})
return;
}
const userinfo = await login(body.username, body.password);
if (!userinfo) {
res.send({code: 1, message: '用户名或密码错误'})
return;
}
res.send({
code: 0, data: {
...userinfo,
token: encodeUserToken(userinfo)
}
})
}
export const getUserInfo: RouteHandleFunction =
({headers, res}) => {
const token = headers.Authorization
const user = decodeUserToken(token)
res.send({code: 0, message: '登录成功', data: user})
}