import { Query } from "@kevisual/query"; import { authCache } from './cache-auth.ts'; const getTokenUser = async (token: string) => { const query = new Query(); const res = await query.post({ path: 'user', key: 'me', token: token, }); return res; } export const getTokenUserCache = async (token: string) => { const tokenUser = await authCache.get(token); if (tokenUser) { return { code: 200, data: tokenUser, }; } const res = await getTokenUser(token); if (res.code === 200) { authCache.set(token, res.data); } return res; } export const checkAuth = async (ctx: any, isAdmin = false) => { const token = ctx.query.token; if (!token) { return { code: 401, message: '未登录', } } // 鉴权代理 let tokenUser = await authCache.get(token); if (!tokenUser) { const tokenUserRes = await getTokenUser(token); if (tokenUserRes.code !== 200) { return { code: tokenUserRes.code, message: '验证失败' + tokenUserRes.message, } } else { tokenUser = tokenUserRes.data; } authCache.set(token, tokenUser); } ctx.state = { ...ctx.state, token, tokenUser, }; return { code: 200, data: { tokenUser, token } } };