2020-04-06 16:46:03 +02:00
|
|
|
const { Router } = require('express');
|
|
|
|
const { body } = require('express-validator');
|
|
|
|
const usersController = require('../controllers/users');
|
|
|
|
const { requiredFields } = require('../assets/config/errors');
|
|
|
|
const Users = require('../models/users');
|
2020-03-25 16:23:43 +01:00
|
|
|
|
|
|
|
const UsersRouter = Router();
|
|
|
|
|
|
|
|
// Permet de se connecter
|
2020-04-06 16:46:03 +02:00
|
|
|
UsersRouter.post('/login', [
|
|
|
|
body('email')
|
|
|
|
.not()
|
|
|
|
.isEmpty()
|
|
|
|
.withMessage(requiredFields.message),
|
|
|
|
body('password')
|
|
|
|
.not()
|
|
|
|
.isEmpty()
|
|
|
|
.withMessage(requiredFields.message)
|
|
|
|
], usersController.login);
|
2020-03-25 16:23:43 +01:00
|
|
|
|
2020-04-06 23:06:21 +02:00
|
|
|
// Récupère les informations public d'un profil
|
|
|
|
UsersRouter.get('/:name', usersController.getUserInfo);
|
2020-03-31 07:48:00 +02:00
|
|
|
|
2020-03-25 16:23:43 +01:00
|
|
|
// Permet de s'inscrire
|
2020-03-25 18:22:03 +01:00
|
|
|
UsersRouter.post('/register', [
|
2020-03-25 16:23:43 +01:00
|
|
|
body('email')
|
|
|
|
.isEmail()
|
|
|
|
.withMessage("Veuillez rentré une adresse mail valide.")
|
|
|
|
.custom((async (email) => {
|
|
|
|
try {
|
|
|
|
const user = await Users.findOne({ where: { email } });
|
|
|
|
if (user) {
|
|
|
|
return Promise.reject("L'adresse email existe déjà...");
|
|
|
|
}
|
|
|
|
} catch (error) {
|
|
|
|
return console.log(error);
|
|
|
|
}
|
2020-03-25 22:59:08 +01:00
|
|
|
return true;
|
2020-03-25 16:23:43 +01:00
|
|
|
}))
|
|
|
|
.normalizeEmail(),
|
|
|
|
body('password')
|
|
|
|
.isLength({ min: 4 })
|
|
|
|
.withMessage("Votre mot de passe est trop court!"),
|
|
|
|
body('name')
|
|
|
|
.trim()
|
|
|
|
.not()
|
|
|
|
.isEmpty()
|
2020-03-25 18:22:03 +01:00
|
|
|
.withMessage("Vous devez avoir un nom (ou pseudo).")
|
2020-03-25 16:23:43 +01:00
|
|
|
.isAlphanumeric()
|
|
|
|
.withMessage("Votre nom ne peut contenir que des lettres ou/et des nombres.")
|
2020-03-25 22:59:08 +01:00
|
|
|
.isLength({ max: 30 })
|
|
|
|
.withMessage("Votre nom est trop long")
|
|
|
|
.custom(async (name) => {
|
2020-03-25 16:23:43 +01:00
|
|
|
try {
|
|
|
|
const user = await Users.findOne({ where: { name } });
|
|
|
|
if (user) {
|
|
|
|
return Promise.reject("Le nom existe déjà...");
|
|
|
|
}
|
|
|
|
} catch (error) {
|
2020-03-25 22:59:08 +01:00
|
|
|
console.log(error);
|
2020-03-25 16:23:43 +01:00
|
|
|
}
|
2020-03-25 22:59:08 +01:00
|
|
|
return true;
|
|
|
|
})
|
2020-03-25 18:22:03 +01:00
|
|
|
], usersController.register);
|
2020-03-25 16:23:43 +01:00
|
|
|
|
|
|
|
// Confirme l'inscription
|
|
|
|
UsersRouter.get('/confirm-email/:tempToken', usersController.confirmEmail);
|
|
|
|
|
2020-03-31 07:48:00 +02:00
|
|
|
// Demande une réinitialisation du mot de passe
|
|
|
|
UsersRouter.post('/reset-password', [
|
|
|
|
body('email')
|
|
|
|
.isEmail()
|
|
|
|
.withMessage("Veuillez rentré une adresse mail valide.")
|
|
|
|
], usersController.resetPassword);
|
|
|
|
|
|
|
|
// Nouveau mot de passe
|
|
|
|
UsersRouter.put('/reset-password', [
|
|
|
|
body('password')
|
|
|
|
.isLength({ min: 4 })
|
|
|
|
.withMessage("Votre mot de passe est trop court!")
|
|
|
|
], usersController.newPassword);
|
|
|
|
|
2020-03-25 16:23:43 +01:00
|
|
|
module.exports = UsersRouter;
|