2019-04-24 21:01:54 +00:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
|
|
const _ = require('lodash');
|
|
|
|
|
const httpStatus = require('http-status');
|
|
|
|
|
const controllerHelper = require('../../helpers/controller.helper');
|
|
|
|
|
const messageHelper = require('../../helpers/message.helper');
|
|
|
|
|
const securityHelper = require('../../helpers/security.helper');
|
2019-07-08 11:11:40 +00:00
|
|
|
const authService = require('./auth.service');
|
2019-04-24 21:01:54 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
// CONSTANTS
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
// Module Name
|
|
|
|
|
const MODULE_NAME = '[auth.controller]';
|
|
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
// PUBLIC METHODS
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
async function login(req, res, next) {
|
|
|
|
|
try {
|
2019-04-25 09:25:33 +00:00
|
|
|
const data = {
|
|
|
|
|
id: req.user.id,
|
|
|
|
|
email: req.user.email
|
|
|
|
|
};
|
|
|
|
|
|
2019-07-09 10:14:18 +00:00
|
|
|
const tokens = securityHelper.generateToken(data);
|
|
|
|
|
|
|
|
|
|
res.status(httpStatus.OK).json({
|
|
|
|
|
token: tokens.token,
|
|
|
|
|
refreshToken: tokens.refreshToken,
|
2019-04-25 09:25:33 +00:00
|
|
|
user: data,
|
|
|
|
|
});
|
2019-04-24 21:01:54 +00:00
|
|
|
} catch (error) {
|
|
|
|
|
controllerHelper.handleErrorResponse(MODULE_NAME, login.name, error, res)
|
|
|
|
|
}
|
|
|
|
|
}
|
2019-06-21 08:40:28 +00:00
|
|
|
|
|
|
|
|
async function register(req, res, next) {
|
2019-07-09 13:36:11 +00:00
|
|
|
|
2019-07-09 11:36:09 +00:00
|
|
|
function cleanAdminData(user) {
|
|
|
|
|
let cUser = user;
|
|
|
|
|
delete cUser.lastLogin;
|
|
|
|
|
delete cUser.state;
|
|
|
|
|
delete cUser.createdAt;
|
|
|
|
|
delete cUser.updatedAt;
|
|
|
|
|
return cUser;
|
|
|
|
|
}
|
|
|
|
|
|
2019-07-09 13:36:11 +00:00
|
|
|
const values = {
|
|
|
|
|
phone: req.body.phone,
|
|
|
|
|
platform: req.body.fbuid
|
|
|
|
|
};
|
|
|
|
|
const tokens = securityHelper.generateToken(values);
|
2019-07-08 11:11:40 +00:00
|
|
|
|
2019-07-09 13:36:11 +00:00
|
|
|
let newUser = req.user;
|
|
|
|
|
if (!req.user) {
|
|
|
|
|
try {
|
|
|
|
|
const data = {
|
|
|
|
|
refresh_token: tokens.refreshToken,
|
|
|
|
|
phone: req.body.phone,
|
|
|
|
|
fbuid: req.body.fbuid,
|
|
|
|
|
email: req.body.email,
|
|
|
|
|
name: req.body.name,
|
|
|
|
|
surname: req.body.surname,
|
|
|
|
|
entityid: req.body.entityid,
|
|
|
|
|
accessibility: req.body.accesssibility
|
|
|
|
|
};
|
|
|
|
|
console.log(data);
|
2019-06-21 08:40:28 +00:00
|
|
|
|
2019-07-09 13:36:11 +00:00
|
|
|
newUser = await authService.extraMethods.createUser(data);
|
|
|
|
|
newUser = cleanAdminData(newUser.toJSON());
|
|
|
|
|
newUser.token = tokens.token;
|
|
|
|
|
console.log(newUser);
|
|
|
|
|
return controllerHelper.handleResultResponse(newUser, null, req.params, res, httpStatus.OK);
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.log(error);
|
|
|
|
|
controllerHelper.handleErrorResponse(MODULE_NAME, register.name, error, res);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
2019-07-09 13:18:25 +00:00
|
|
|
newUser = cleanAdminData(newUser.toJSON());
|
|
|
|
|
newUser.token = tokens.token;
|
|
|
|
|
console.log(newUser);
|
2019-07-09 13:36:11 +00:00
|
|
|
return controllerHelper.handleResultResponse(req.user, null, req.params, res, httpStatus.OK);
|
|
|
|
|
}
|
2019-07-09 10:14:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async function regenerateToken(req, res, next) {
|
|
|
|
|
const refreshToken = req.body.refreshToken;
|
|
|
|
|
const phone = req.body.phone;
|
|
|
|
|
const user = await authService.extraMethods.findUserByRefreshToken(refreshToken);
|
|
|
|
|
|
|
|
|
|
if (user && user.phone === phone) {
|
|
|
|
|
const values = {
|
|
|
|
|
phone: user.phone,
|
|
|
|
|
platform: user.fbuid
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
const tokens = securityHelper.generateToken(values);
|
|
|
|
|
await authService.extraMethods.updateUserRefreshToken(user.id, tokens.refreshToken);
|
2019-07-09 11:36:09 +00:00
|
|
|
const result = { token: tokens.token };
|
2019-07-09 10:14:18 +00:00
|
|
|
return controllerHelper.handleResultResponse(result, null, req.params, res, httpStatus.OK);
|
|
|
|
|
} catch(error) {
|
|
|
|
|
controllerHelper.handleErrorResponse(MODULE_NAME, regenerateToken.name, error, res);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
return controllerHelper.handleResultResponse(null, null, req.params, res, httpStatus.UNAUTHORIZED);
|
2019-06-21 08:40:28 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2019-07-09 10:55:45 +00:00
|
|
|
async function rejectToken(req, res, next) {
|
|
|
|
|
const refreshToken = req.body.refreshToken;
|
|
|
|
|
const user = await authService.extraMethods.findUserByRefreshToken(refreshToken);
|
|
|
|
|
|
|
|
|
|
if (user && user.token === refreshToken ) {
|
|
|
|
|
try {
|
|
|
|
|
await authService.extraMethods.deleteRefreshToken(refreshToken);
|
|
|
|
|
return controllerHelper.handleResultResponse(result, null, req.params, res, httpStatus.OK);
|
|
|
|
|
} catch (error) {
|
|
|
|
|
controllerHelper.handleErrorResponse(MODULE_NAME, rejectToken.name, error, res);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
return controllerHelper.handleResultResponse(null, null, req.params, res, httpStatus.NOT_FOUND);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2019-04-24 21:01:54 +00:00
|
|
|
module.exports = {
|
|
|
|
|
login,
|
2019-06-21 08:40:28 +00:00
|
|
|
register,
|
2019-07-09 10:14:18 +00:00
|
|
|
regenerateToken,
|
2019-07-09 10:55:45 +00:00
|
|
|
rejectToken,
|
2019-04-24 21:01:54 +00:00
|
|
|
MODULE_NAME
|
|
|
|
|
}
|