const Helper = require('../library/LibHelper'); const DriversModels = require('../models/DriversModels'); const LibJwt = require('../library/LibJwt'); const response = require('../config/response'); class AuthDriverMiddleware { static async initialize(req, res, next) { let apiRes = {}; try { const tokenData = await LibJwt.verifyToken(req.headers['x-api-key']); if (tokenData.type !== 'success') { apiRes = JSON.parse(JSON.stringify(response[401])); apiRes.meta.message += Helper.setErrMsg(': ' + tokenData.message); return res.status(200).json(apiRes); } const phoneDevice = await DriversModels.getDeviceByImei(tokenData.data.device_id); if (phoneDevice.length < 1) { apiRes = JSON.parse(JSON.stringify(response[401])); apiRes.meta.message += Helper.setErrMsg(': your session has expired'); return res.status(200).json(apiRes); } if (phoneDevice[0].is_login !== DriversModels.IS_LOGIN) { apiRes = JSON.parse(JSON.stringify(response[401])); apiRes.meta.message += Helper.setErrMsg(': your session has expired'); return res.status(200).json(apiRes); } req.auth = JSON.parse(JSON.stringify(tokenData.data)); next(); } catch (e) { apiRes = JSON.parse(JSON.stringify(response[401])); apiRes.meta.message += Helper.setErrMsg(': ' + e.message); return res.status(200).json(apiRes); } } } module.exports = AuthDriverMiddleware.initialize;