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));
    })();
}
