54 lines
1.1 KiB
TypeScript
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
|
|
}
|
|
}
|
|
}
|
|
);
|