COM auth

PHOTO EMBED

Mon May 22 2023 11:41:09 GMT+0000 (Coordinated Universal Time)

Saved by @sid_balar

const Client = require("../models/Client");
const User = require("../models/User");

const Auth = {};

Auth.check = async (req, res, next) => {
    try {
        let token;
        if (req.headers.cookie) {
            token = req.headers.cookie.replace("token=", "");
        } else if (req.headers.token) {
            token = req.headers.token;
        }
        if (!token) {
            throwError("Please Login...!");
        }
        const decode = await JWT.decodeToken(token);

        const user = await User.findOne({_id: decode._id});

        if (user) {
            req.user = user;
            if (user.role !== "customer") {
                req.client = await Client.findOne({staff: {$in: [user._id]}});
            } else {
                req.client = undefined;
            }
            if (AppDir === "core") {
                if (user.role !== "customer") {
                    throwError("Please Login as a customer");
                }
            } else {
                if (user.role === "customer") {
                    throwError("Please Login as a client");
                }
            }
        } else {
            throwError("User Not Found");
        }
        next();
    } catch (error) {
        next(error);
    }
};

module.exports = Auth;
content_copyCOPY