@qelos/auth
Version:
Express Passport authentication service
94 lines (84 loc) • 2.25 kB
text/typescript
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();
}
}