32 lines
1.0 KiB
JavaScript
32 lines
1.0 KiB
JavaScript
const { apikeyModel } = require("../database/model/apiKeyModel");
|
|
const { userModel } = require("../database/model/userModel");
|
|
const { compareHash } = require("../functions/bcrypt");
|
|
|
|
async function auth(req, res, next){
|
|
try{
|
|
// let user = await Auth.checkToken({token: req.header('auth-token')});
|
|
let authToken = req.header('auth-token');
|
|
let splitAuthToken = authToken.split('-');
|
|
let rowid = splitAuthToken[0];
|
|
let suppliedToken = splitAuthToken.slice(1).join('-');
|
|
|
|
//get from db
|
|
let token = await apikeyModel.findByPk(rowid, {include: userModel});
|
|
if (!token) return false;
|
|
|
|
//compare
|
|
let isMatch = await compareHash(suppliedToken, token.apikey);
|
|
if (!isMatch) return false;
|
|
|
|
//else do logic
|
|
//pass hashed token to req.token (IMPORTANT ITS NOT PASSED TO CLIENT)
|
|
req.token = token
|
|
req.user = await token.getUser(); //taking user seq obj from usermodel
|
|
next();
|
|
}catch(error){
|
|
next(error);
|
|
}
|
|
}
|
|
|
|
module.exports = { auth };
|