You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

37 lines
1.0 KiB

import { verifyAccessToken } from "../service/auth/lib/jwt";
import { dbGlobal } from "@/drizzle-pkg/lib/db";
import { users } from "@/drizzle-pkg/lib/schema/auth";
import { eq } from "drizzle-orm";
export default defineEventHandler(async (event) => {
const accessToken = getHeader(event, "authorization")?.replace("Bearer ", "");
if (!accessToken) {
setResponseStatus(event, 401);
return { error: { code: "TOKEN_EXPIRED", message: "未登录" } };
}
const payload = await verifyAccessToken(accessToken);
if (!payload) {
setResponseStatus(event, 401);
return { error: { code: "TOKEN_EXPIRED", message: "Token 无效" } };
}
const [user] = await dbGlobal
.select({
id: users.id,
email: users.email,
username: users.username,
role: users.role,
status: users.status,
})
.from(users)
.where(eq(users.id, payload.userId))
.limit(1);
if (!user) {
setResponseStatus(event, 401);
return { error: { code: "TOKEN_EXPIRED", message: "用户状态异常" } };
}
return { user };
});