UNPKG

@paroicms/server

Version:
53 lines 2.06 kB
import { ApiError } from "@paroicms/public-server-lib"; import { type } from "arktype"; import { getVerifiedAccountFromToken, loginByPlatformToken, loginUser, } from "../auth/auth.service.js"; export async function loginController(siteContext, httpContext, _routeParams) { const defaultLanguage = siteContext.status === "migration" ? (siteContext.deprecatedSiteSchema.languages[0] ?? "en") : siteContext.siteSchema.defaultLanguage; const loginInput = formatLoginAction(httpContext.req.body); if (loginInput.action === "loginWithPlatformToken") { return await loginByPlatformToken(siteContext, { token: loginInput.token, defaultLanguage, }); } if (loginInput.action === "signIn") { return await loginUser(siteContext, { user: { email: loginInput.email, password: loginInput.password, }, defaultLanguage, }); } return getVerifiedAccountFromToken(siteContext, { token: loginInput.token, defaultLanguage, }); } const LoginActionUrlQuery = type({ action: "string", "email?": "string|undefined", "password?": "string|undefined", "token?": "string|undefined", "+": "reject", }); function formatLoginAction(val) { const validated = LoginActionUrlQuery.assert(val); const action = validated.action; if (action === "signIn") { if (!validated.email || !validated.password) { throw new ApiError("Email and password are required for signIn action", 400); } return { action, email: validated.email, password: validated.password }; } if (action === "verify" || action === "loginWithPlatformToken") { if (!validated.token) { throw new ApiError("Token is required for verify/loginWithPlatformToken action", 400); } return { action, token: validated.token }; } throw new ApiError(`Invalid login action: ${action}`, 400); } //# sourceMappingURL=login.controller.js.map