UNPKG

@qelos/auth

Version:

Express Passport authentication service

94 lines (84 loc) 2.25 kB
import { getCookieTokenName } from '../services/users'; const { validateBasicSignUpForm, } = require("../../helpers/form-validations"); const { setCookie } = require("../services/tokens"); import { Response } from "express"; /** * Validate the sign up form * * @param {object} payload - the HTTP body message * @returns {object} The result of validation. Object contains a boolean validation result, * errors tips, and a global message for the whole form. */ export function validateSignUpForm(payload: any) { const errors = validateBasicSignUpForm(payload); if ( !payload || typeof payload.firstName !== "string" || !/^[a-zA-Z]+([\-\s]?[a-zA-Z]+)*$/.test(payload.firstName.trim()) ) { errors.firstName = { code: "INVALID_NAME", }; } if ( !payload || typeof payload.password !== "string" || payload.password.trim().length < 8 ) { errors.password = { code: "INVALID_PASSWORD", }; } return errors; } /** * Validate the login form * * @param {object} payload - the HTTP body message * @returns {object} The result of validation. Object contains a boolean validation result, * errors tips, and a global message for the whole form. */ export function validateSignInForm(payload: any) { const errors: any = {}; if ( !payload || typeof payload.password !== "string" || payload.password.trim().length === 0 ) { errors.password = { code: "EMPTY_PASSWORD", }; } return errors; } export function tokenPayload(host: string, res: Response, data: any) { const { tenant, token, refreshToken, cookieToken, user, workspace } = data; if (cookieToken) { res = setCookie(res, getCookieTokenName(tenant), cookieToken, null, host); return res .status(200) .json({ payload: { user, workspace }, }) .end(); } else { return res .status(200) .json({ payload: { token, refreshToken, user, workspace: workspace && { _id: workspace._id, name: workspace.name, roles: workspace.roles, labels: workspace.labels } }, }) .end(); } }