¿Todo esto no sobra si usamos el atributo encrypt en el modelo ?
https://sailsjs.com/documentation/concepts/models-and-orm/attributes#encryption-at-rest
Introducción
Qué aprenderás sobre API con Sails.js
Presentando el proyecto
Comenzando con Sails
Introducción a Sails.js
Estructura de archivos
Preparación del ambiente de desarrollo
Setup de Espacio de Trabajo
Generando rutas REST con blueprint
Instalación de MongoDB
Conexión a Mongo
Instalar MySQL y usarlo con Sails (a través de WaterLine)
CRUD
Entendiendo operaciones CRUD
Crear modelo de rodada
Crear app de Ionic
Obtener todas las Rodadas: preparando la aplicación para mostrar datos
Obtener todas las Rodadas: mostrando los datos
Crear Rodada: recibiendo parámetros desde la URL
Crear Rodada: enviando información desde el formulario
Actualizar Rodada
Eliminar Rodadas
Autenticación y Usuarios
Obtener Rodada
Crear Modelo y Controller de Usuarios
Implementar validación de modelo
Nueva versión de la librería Joi
Crear Usuario
Cifrado de contraseña
Implementación de Login
Sistemas Externos
Uso de JSON Web Token
Policies: verificar si usuario está loggeado
Agregar usuario a Ride
Preparando la App para implementar el Login y Sign up
Implementando Login
Implementando Sign up
Agregar puntos de Rodada
Obtener API Keys para Clima y Distancias
Integración Google Geocoding: definiendo la lógica
Integración Google Geocoding: probando la funcionalidad
Integración Weather API
Desplegar clima, distancia y tiempo en cada punto de Rodada
Cierre
Cierre
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Eduardo Ibarra
Aportes 4
Preguntas 0
¿Todo esto no sobra si usamos el atributo encrypt en el modelo ?
https://sailsjs.com/documentation/concepts/models-and-orm/attributes#encryption-at-rest
Sails tiene algo parecido a las señales de Django que permite implementar acciones antes o después de que se guarde un usuario. Es decir, podríamos guardar la contraseña en texto plano y sails automáticamente se encarga de hashearla en el momento justo antes de guardarla en la base de datos. Dejo aquí el enlace a la documentación https://sailsjs.com/documentation/concepts/models-and-orm/lifecycle-callbacks#example
Yo recomendaría crear un helper:
const bcrypt = require('bcrypt');
module.exports = {
friendlyName: 'Generate password',
description: 'Generate password',
inputs: {
password: {
type: 'string',
required: true
}
},
exits: {},
fn: async function (inputs, exits) {
const hash = bcrypt.hashSync(inputs.password, 10);
return exits.success(hash);
}
};
Y en tu controller:
module.exports = async function signup (req, res) {
const email = req.param('email');
const pass = req.param('password');
// No olvides tus validaciones...
const hash = await sails.helpers.generatePassword(pass);
var user = await User.create({
email: email, password: hash
}).fetch();
return res.status(201).send("OK");
};
✌
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?