import {RouteHandleFunction} from "../core/types"; import {login} from "../service/app"; import {UserModel} from "../../model"; import {getFromRedis, setToRedis} from "../service/redis"; export function encodeUserToken(user: UserModel) { if (user == null) throw new Error('user is null') // const token = JSON.stringify(user) const token = btoa(user.id + ':' + Date.now()) setToRedis('app-report:user:' + token, JSON.stringify(user)).then(() => console.log('setToRedis success')); return token; } export function decodeUserToken(token: string) { // 将token转回UserModel对象数据 // const user = decodeURIComponent(atob(token)); console.log('decodeUserToken token==>app-report:user:', token) return getFromRedis('app-report:user:' + 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 = async ({headers,user, res}) => { const token = headers.authorization if (!token) { res.send({code: 403, message: '请先登录'}) return; } if (!user) { res.send({code: 403, message: '请先登录'}) } res.send({code: 0, message: 'success', data: user}) }