Files
FrozenFriendsYume/packages/backend/built/server/api/common/signin.js
T
2026-07-26 18:25:37 +09:00

38 lines
1.2 KiB
JavaScript

import config from "../../../config/index.js";
import { Signins } from "../../../models/index.js";
import { genId } from "../../../misc/gen-id.js";
import { publishMainStream } from "../../../services/stream.js";
export default function(ctx, user, redirect = false) {
if (redirect) {
//#region Cookie
ctx.cookies.set("igi", user.token, {
path: "/",
// SEE: https://github.com/koajs/koa/issues/974
// When using a SSL proxy it should be configured to add the "X-Forwarded-Proto: https" header
secure: config.url.startsWith("https"),
httpOnly: false
});
//#endregion
ctx.redirect(config.url);
} else {
ctx.body = {
id: user.id,
i: user.token
};
ctx.status = 200;
}
(async ()=>{
// Append signin history
const record = await Signins.insert({
id: genId(),
createdAt: new Date(),
userId: user.id,
ip: ctx.ip,
headers: ctx.headers,
success: true
}).then((x)=>Signins.findOneByOrFail(x.identifiers[0]));
// Publish signin event
publishMainStream(user.id, "signin", await Signins.pack(record));
})();
}