65 lines
1.4 KiB
JavaScript
65 lines
1.4 KiB
JavaScript
'use strict';
|
|
|
|
const Merchant = require('mongoose').model('Merchant');
|
|
const config = require('../etc');
|
|
const atob = require('abab').atob;
|
|
const Response = require('../etc/responses.json');
|
|
|
|
|
|
module.exports = (req, res, next) => {
|
|
var lang;
|
|
if (req.query.language) {
|
|
lang = req.query.language;
|
|
}
|
|
else if (req.body.language) {
|
|
lang = req.body.language;
|
|
}
|
|
else {
|
|
req.body.language = 'en';
|
|
}
|
|
|
|
if (!req.headers.authorization) {
|
|
return res.status(401).json({
|
|
success: false,
|
|
message: Response.r81[lang],
|
|
error_code: 'e51'
|
|
})
|
|
}
|
|
|
|
const decoded = atob(req.headers.authorization.split(/ /)[1]);
|
|
const userId = decoded.split(/:/)[0];
|
|
const pwd = decoded.split(/:/)[1];
|
|
|
|
return Merchant.findById(userId, (userErr, user) => {
|
|
// Check user id
|
|
if (userErr || !user) {
|
|
return res.status(401).json({
|
|
success: false,
|
|
message: 'UserId ' + userId + Response.r82[lang]
|
|
});
|
|
}
|
|
|
|
// Check password
|
|
return user.comparePassword(pwd, (pwdErr, isMatch) => {
|
|
if (pwdErr) {
|
|
return done(pwdErr);
|
|
}
|
|
|
|
if (!isMatch) {
|
|
return res.status(401).json({
|
|
success: false,
|
|
message: Response.r83[lang]
|
|
})
|
|
}
|
|
|
|
if (!req.body.merchant_id) {
|
|
req.body.merchant_id = userId;
|
|
}
|
|
else {
|
|
console.log('Merchant déjà');
|
|
}
|
|
|
|
return next();
|
|
})
|
|
});
|
|
};
|