/
home
/
infinitibizsol
/
.trash
/
controllers.5
/
File Upload :
llllll
Current File: /home/infinitibizsol/.trash/controllers.5/auth.js
import User from "../model/user"; import bcrypt from "bcrypt"; import jwt from "jsonwebtoken"; import { failedResponse } from "../utils/responseFormat"; const TokenGenerate = (user) => { return jwt.sign({ _id: user._id, role: user.role }, process.env.JWTSECRET, { expiresIn: "30d", }); }; const login = async (req, res) => { try { const { primary_email, password } = req.body; const user = await User.findOne({ primary_email }); if (!user) { return failedResponse({ res, error: "invalid Email" }); } const passwordMatch = await bcrypt.compare(password, user.password); if (!passwordMatch) { return failedResponse({ res, error: "invalid Password" }); } // Create a JWT token const token = TokenGenerate(user); res.setHeader("Authorization", token); res.status(200).json({ token: token, user, message: "Login successfully" }); } catch (error) { return failedResponse({ res, error: error.message, }); } }; const authenticate = async (req, res) => { try { const user = await User.findOne( { _id: req.user._id } // { createdOn: 0, modifiedOn: 0, __v: 0 } ); if (!user) { return failedResponse({ res, error: "No user found." }); } // Create a JWT token const token = TokenGenerate(user); res.setHeader("Authorization", token); res.status(200).json({ token: token, user, message: "success" }); } catch (error) { return failedResponse({ res, error: error.message, }); } }; //Abondoned const protect = async (req, res, next) => { try { // 1). getting token and check it let token; if ( req.headers.authorization && req.headers.authorization.startsWith("Bearer") ) { token = req.headers.authorization.split(" ")[1]; } if (!token) { return failedResponse({ res, error: "Invalid token" }); } //verify method // 2). Verification token like user id const decoded = await jwt.verify(token, process.env.JWTSECRET); // 3). Check if there user stil exit || deleted himself const freshUser = await User.findOne({ _id: decoded._id }); if (!freshUser) { return failedResponse({ res, error: "The user is not belong to this token! Please login to get access", }); } req.user = { _id: freshUser._id, first_name: freshUser.first_name, role: freshUser.role, }; next(); } catch (error) { return failedResponse({ res, error: error.message }); } }; const restrictTo = (...roles) => { // roles are : admin, agent return (req, res, next) => { if (!roles.includes(req.user.role)) { return failedResponse({ res, error: "You are not allowed!" }); } next(); }; }; export default { login, authenticate, protect, restrictTo };
Copyright ©2k19 -
Hexid
|
Tex7ure