UNPKG

rewardwee_auth_access

Version:

auth verify access for all microservices

158 lines (116 loc) 3.4 kB
import { Request, Response, NextFunction } from "express"; import { extractTokenContent, response } from "../helpers/misc"; import { RESPONSE_TYPE } from "../helpers/customTypes"; import {AuthLogin} from "../controllers/login" import { MyHttpRequest } from "../types"; function extractTokenFromHeader(header: string | undefined): string[] | undefined { if (header == undefined) { return undefined; } const parts = header.split(' '); if (parts.length === 3 && parts[0] === 'Bearer') { // console.log({part1: parts[1], part2: parts[2] }) return [parts[1], parts[2] ] ; } return undefined; } export const isTokenCorrect = (req: MyHttpRequest, res: Response, next: NextFunction)=>{ const authHeader = req.headers.authorization; const tokenData = extractTokenFromHeader(authHeader); // console.log({authHeader, tokenData}) if (tokenData != undefined) { let token = tokenData[0]; // get token extractTokenContent(token as string, req.body.jk) .then((verified: RESPONSE_TYPE)=>{ console.log({verified, data: verified.data[0]}) delete req.body.jk ; let {id, email , time , role } = verified.data[0]; let user_id = tokenData[1] console.log({token, user_id}) if(id != user_id){ let error: RESPONSE_TYPE ={ data: [], message: "invalid login token.", status: 400, statusCode: "LOGIN_FAILED" } console.log({error}) response(res, error); return } AuthLogin.isUserLoggedIn(id, token as string, req.body.UserLoginRecord ) .then((success: any)=>{ delete req.body.UserLoginRecord ; if(success.statusCode=="LOGIN_SUCCESSFUL"){ req.user_id = id; req.user_email = email; req.user_token = token; req.role = role; next(); } else{ response(res, success); return; } }) .catch((err: any)=>{ delete req.body.UserLoginRecord ; response(res, err); return; }) }) .catch((err: RESPONSE_TYPE)=>{ console.log({err}) delete req.body.jk ; response(res, err); return; }) } else{ let error: RESPONSE_TYPE ={ data: [], message: "invalid login token.", status: 400, statusCode: "LOGIN_FAILED" } console.log({error}) response(res, error); return } } export const isCompany = (req: MyHttpRequest, res: Response, next: NextFunction)=>{ console.log({role: req.role}) if (req.role?.toLowerCase() == "company") { next(); } else{ let error: RESPONSE_TYPE ={ data: [], message: "access denied.", status: 403, statusCode: "LOGIN_FAILED" } response(res, error); return } } export const isTalent = (req: MyHttpRequest, res: Response, next: NextFunction)=>{ if (req.role?.toLowerCase() == "talent") { next(); } else{ let error: RESPONSE_TYPE ={ data: [], message: "access denied.", status: 403, statusCode: "LOGIN_FAILED" } response(res, error); return } }