const bcrypt = require('bcrypt'); const Errors = { EMAIL_NOT_EXIST: { unauthorized: 'Email does not exist', }, PASSWORD_NOT_VALID: { unauthorized: 'Password is not valid', }, }; module.exports = { inputs: { email: { type: 'string', required: true, isEmail: true, }, password: { type: 'string', required: true, }, }, exits: { unauthorized: { responseType: 'unauthorized', }, }, async fn(inputs, exits) { const user = await sails.helpers.getUser({ email: inputs.email.toLowerCase(), }); if (!user) { throw Errors.EMAIL_NOT_EXIST; } if (!bcrypt.compareSync(inputs.password, user.password)) { throw Errors.PASSWORD_NOT_VALID; } return exits.success({ item: sails.helpers.signToken(user.id), }); }, };