const AuthService = require('../services/auth.service');
const authenticate = req => new Promise(async (resolve, reject) => {
try {
if (req.path() === '/users/' && req.method === 'POST') return resolve();
if (req.path() === '/auth' && req.method === 'POST') return resolve();
if (!req.headers.authorization) return reject(Error('No token'));
const token = (req.headers.authorization.replace(/^Bearer\s/, ''));
req.authenticatedUser = await AuthService.authenticate(token);
return resolve();
} catch (err) {
return reject(err);
}
});
const login = req => new Promise(async (resolve, reject) => {
try {
const tokenUserObject = await AuthService.login(req.body);
return resolve(tokenUserObject);
} catch (err) {
return reject(err);
}
});
const authorize = async (req, callback) => {
try {
await AuthService.authorize(req.authenticated_user, req.params.userId);
callback(null);
} catch (err) {
callback(err);
}
};
module.exports = {
authenticate,
authorize,
login,
};
|