Open omiras opened 4 years ago
Con esta utilidad se permite al usuario registrarse o entrar en el sistema. Para ello, la aplicación comprueba si el usuario está dado de alta en la BBDD. En caso afirmativo y previa comprobación del password, queda logueado persistentemente. Si prueba a loguearse de nuevo, el sistema redirige al usuario a la pagina principal.
Caso de no estar dado de alta, permite el registro rellenando el correspondiente formulario. También permite hacer el logout.
El sistema de login de momento pide el email y el password para acceder.
Se ha modificado profundamente el Schema. El cambio principal es que, para loguearse, se ha preferido trabajar con objetos más que con campos primitivos porque Passport guarda el email y password en un objeto 'local'. Esta estrategia es muy útil ya que nos permite dejar el schema preparado para futuras ampliaciones que permitan loguearse desde Facebook, Twitter y Google.
app.js: Veréis que el archivo ha crecido mucho, pues ha sido necesario importar diversos módulos para trabajar con Passport. También se ha modificado la instrucción app.listen(3000) de manera que nos permita elegir un puerto de escucha y, si no lo encuentra, conectará con el 3000 por defecto.
userRoutes.js: Aquí tenemos definidos los endpoints. Hubiese sido mejor una estructura tipo MVC pero así ya funciona bien y luego puede refactorizarse.
passport.js: es el núcleo del login. Aquí tenemos la función que busca al usuario en el login, y la que da de alta un nuevo usuario, además de las funciones de persistencia del usuario,
database.js: Aquí tenemos el string que nos conecta a la BBDD.
user.js: Aquí está definido el schema, pero además las funciones que permiten encriptar y validar el password.
El password se encripta con el módulo bcrypt y se guarda así en la BBDD. Hay que actualizar la BBDD porque varios usuarios tienen el password sin encriptar. Por tanto, solo se crearán nuevos usuarios a través del formulario sign up.
Hemos creado dos pequeños formularios de login y sign up. De momento hemos integrado el sign up que ya estaba definido y funciona correctamente. El de login lo podéis adaptar a vuestro gusto (la vista).
Objetivo
Habilitar la autentificación con usuario y contraseña a nivel de aplicación usando la biblioteca Passport.js
Análisis y diseño
@sagalto68 para conocer la estructura que va a tener los usuarios guardados en la BBDD