Paul-API-Next/src/server/api/auth/login.ts

54 lines
1.1 KiB
TypeScript

import { Api, Get, Query, useContext, useInject } from "@midwayjs/hooks";
import { JwtService } from "@midwayjs/jwt";
import { prisma } from "../../utils/prisma";
export default Api(
Get(),
Query<{ username: string, password: string }>(),
async () => {
const ctx = useContext();
const jwt = await useInject(JwtService);
const token = await jwt.sign({ name: "Paul" });
const user = await prisma.user.findFirst({
where: {
name: ctx.query.username,
password: ctx.query.password
}
});
if (!user) {
return {
code: 0,
msg: "Invalid username or password"
}
}
// Token
ctx.cookies.set("paul-token", token, {
maxAge: 60 * 60 * 24 * 2 * 100,
httpOnly: true
});
// 标记已登录
ctx.cookies.set("paul-logined", 1, {
maxAge: 60 * 60 * 24 * 2 * 100,
httpOnly: false
});
return {
code: 1,
msg: "Success",
data: {
profile: {
name: "Paul",
avatar: "https://sdn.geekzu.org/avatar/d22eb460ecab37fcd7205e6a3c55c228?s=200&r=X&d=",
},
token
}
}
}
);