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}) }