import type Koa from "koa"; import { Users, UserPendings, UserProfiles } from "@/models/index.js"; import { signup } from "../common/signup.js"; import signin from "../common/signin.js"; export default async (ctx: Koa.Context) => { const body = ctx.request.body; const code = body["code"]; try { const pendingUser = await UserPendings.findOneByOrFail({ code }); const { account, secret } = await signup({ username: pendingUser.username, passwordHash: pendingUser.password, }); UserPendings.delete({ id: pendingUser.id, }); const profile = await UserProfiles.findOneByOrFail({ userId: account.id }); await UserProfiles.update( { userId: profile.userId }, { email: pendingUser.email, emailVerified: true, emailVerifyCode: null, }, ); signin(ctx, account); } catch (e) { ctx.throw(400, e); } };