This commit is contained in:
David Arranz 2019-08-03 19:11:32 +02:00
parent c129a4f35c
commit d964ba3264
4 changed files with 49 additions and 9 deletions

View File

@ -46,10 +46,7 @@ passport.use('local-email', new LocalStrategy(localEmailOptions, async (email, p
return done(null, false, { message: 'User not found' })
} else {
console.log('aaaaaaaaaaaaaaaaaaa1');
var password_encoded = crypto.createHash('sha512').update(password).digest('hex');
console.log('aaaaaaaaaaaaaaaaaaa2');
console.log(password_encoded);
const isPasswordValid = await user.comparePassword(password_encoded);
if (!isPasswordValid) {
return done(null, false, { message: 'Wrong Password' })
@ -80,13 +77,17 @@ passport.use('local-phone', new LocalStrategy(localPhoneOptions, async (phone, f
if (userRecord.toJSON().disabled)
return done(null, false, { message: 'User disabled in fb' })
else
return done(null, true, { message: 'Register user' });
return done(null, userRecord.toJSON(), { message: 'Register user' });
}
else
return done(null, false, { message: 'User not validate in fb' });
})
.catch(function (error) {
//Servicio firebase caido o no funciona pero devuelvo el usuario
const user = {
phone: phone,
fbuid: fbuid
};
return done(null, user, error);
})
} catch (error) {
@ -98,14 +99,14 @@ passport.use('local-phone', new LocalStrategy(localPhoneOptions, async (phone, f
// JWT
passport.use('jwt', new CustomStrategy(async (req, done) => {
const token = ((req && req.headers && req.headers['x-access-token']) ? req.headers['x-access-token'] : null);
console.log(token);
if (!token) {
return done(null, false, { message: 'Unauthorized'});
}
const result = securityHelper.verify(token);
if (result) {
console.log(result);
//recuperamos el usuario de la petición
let user = await authService.extraMethods.findUser({ phone: result.phone});
if (user){

View File

@ -50,6 +50,24 @@ async function login2(req, res, next) {
}
}
async function loginWithPhone(req, res, next) {
try {
console.log(req.user);
const data = {
phone: req.user.phoneNumber,
fbuid: req.user.uid
};
//Comprobamos si el usuario ya existe en nuestro sistema
let _user = await authService.extraMethods.findUser(data);
const tokens = securityHelper.generateToken(data);
_user.token = tokens.token;
return controllerHelper.handleResultResponse(_user, null, req.params, res, httpStatus.OK);
} catch (error) {
return controllerHelper.handleErrorResponse(MODULE_NAME, login.name, error, res)
}
}
async function register(req, res, next) {
function cleanAdminData(user) {
@ -116,7 +134,7 @@ async function regenerateToken(req, res, next) {
const result = { token: tokens.token };
return controllerHelper.handleResultResponse(result, null, req.params, res, httpStatus.OK);
} catch(error) {
controllerHelper.handleErrorResponse(MODULE_NAME, regenerateToken.name, error, res);
return controllerHelper.handleErrorResponse(MODULE_NAME, regenerateToken.name, error, res);
}
} else {
return controllerHelper.handleResultResponse(null, null, req.params, res, httpStatus.UNAUTHORIZED);
@ -143,6 +161,7 @@ async function rejectToken(req, res, next) {
module.exports = {
login,
login2,
loginWithPhone,
register,
regenerateToken,
rejectToken,

View File

@ -12,7 +12,7 @@ const AccessValidator = require('../../middlewares/accessValidator');
//const postHandler = new ModelHandler(models.Post);
routes.post('/auth',
SchemaValidator(authValidation.LoginInputType, true),
SchemaValidator(authValidation.LoginWinEmailInputType, true),
AccessValidator.isRegisteredUserEmail,
authController.login,
);
@ -23,12 +23,21 @@ routes.get('/auth',
authController.login2,
);
// Registro de usuario a partir del usuario de Firebase y
// los datos del formulario.
routes.post('/register',
SchemaValidator(authValidation.RegisterInputType, true),
AccessValidator.isRegisteredUserPhone,
authController.register,
);
routes.get('/loginWithPhone',
SchemaValidator(authValidation.LoginWithPhoneInputType, true),
AccessValidator.isRegisteredUserPhone,
authController.loginWithPhone,
);
routes.get('/pepepe', AccessValidator.isLoggedUser,
function (req, res, next) {
res.send(req.user.email);

View File

@ -5,6 +5,16 @@ const LoginInputType = Joi.object().keys({
password: Joi.string().required(),
});
const LoginWithPhoneInputType = Joi.object().keys({
phone: Joi.string().required(),
fbuid: Joi.string().required(),
});
const LoginWithEmailInputType = Joi.object().keys({
email: Joi.string().email().required(),
password: Joi.string().required(),
});
const RegisterInputType = Joi.object().keys({
phone: Joi.string().required(),
email: Joi.string().required(),
@ -21,7 +31,8 @@ const LoginOutputType = Joi.object().keys({
module.exports = {
LoginInputType,
LoginWithPhoneInputType,
LoginWithEmailInputType,
RegisterInputType,
LoginOutputType
};