📦 NEW: GET /users
This commit is contained in:
		| @@ -9,7 +9,7 @@ const Sequelize         = require('sequelize'); | |||||||
|  |  | ||||||
| exports.getFunctions = async (req, res, next) => { | exports.getFunctions = async (req, res, next) => { | ||||||
|     const categoryId = helperQueryNumber(req.query.categoryId, 0); |     const categoryId = helperQueryNumber(req.query.categoryId, 0); | ||||||
|     let   search     = req.query.search; |     let   { search } = req.query; | ||||||
|     try { search = search.toLowerCase(); } catch {}; |     try { search = search.toLowerCase(); } catch {}; | ||||||
|     const options = { |     const options = { | ||||||
|         where: {  |         where: {  | ||||||
|   | |||||||
| @@ -4,6 +4,7 @@ const bcrypt                                                       = require('bc | |||||||
| const jwt                                                          = require('jsonwebtoken'); | const jwt                                                          = require('jsonwebtoken'); | ||||||
| const ms                                                           = require('ms'); | const ms                                                           = require('ms'); | ||||||
| const uuid                                                         = require('uuid'); | const uuid                                                         = require('uuid'); | ||||||
|  | const Sequelize                                                    = require('sequelize'); | ||||||
| const errorHandling                                                = require('../assets/utils/errorHandling'); | const errorHandling                                                = require('../assets/utils/errorHandling'); | ||||||
| const { serverError, generalError }                                = require('../assets/config/errors'); | const { serverError, generalError }                                = require('../assets/config/errors'); | ||||||
| const { JWT_SECRET, FRONT_END_HOST, EMAIL_INFO, HOST, TOKEN_LIFE } = require('../assets/config/config'); | const { JWT_SECRET, FRONT_END_HOST, EMAIL_INFO, HOST, TOKEN_LIFE } = require('../assets/config/config'); | ||||||
| @@ -16,6 +17,7 @@ const Categories                                                   = require('.. | |||||||
| const Comments                                                     = require('../models/comments'); | const Comments                                                     = require('../models/comments'); | ||||||
| const Quotes                                                       = require('../models/quotes'); | const Quotes                                                       = require('../models/quotes'); | ||||||
| const deleteFilesNameStartWith                                     = require('../assets/utils/deleteFilesNameStartWith'); | const deleteFilesNameStartWith                                     = require('../assets/utils/deleteFilesNameStartWith'); | ||||||
|  | const getPagesHelper                                               = require('../assets/utils/getPagesHelper'); | ||||||
|  |  | ||||||
| async function handleEditUser(res, { name, email, biography, isPublicEmail }, userId, logoName) { | async function handleEditUser(res, { name, email, biography, isPublicEmail }, userId, logoName) { | ||||||
|     const user = await Users.findOne({ where: { id: userId } }); |     const user = await Users.findOne({ where: { id: userId } }); | ||||||
| @@ -43,6 +45,25 @@ async function handleEditUser(res, { name, email, biography, isPublicEmail }, us | |||||||
|     return res.status(200).json({ id: user.id, name: user.name, email: user.email, biography: user.biography, logo: user.logo, isPublicEmail: user.isPublicEmail, isAdmin: user.isAdmin, createdAt: user.createdAt }); |     return res.status(200).json({ id: user.id, name: user.name, email: user.email, biography: user.biography, logo: user.logo, isPublicEmail: user.isPublicEmail, isAdmin: user.isAdmin, createdAt: user.createdAt }); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | exports.getUsers = async (req, res, next) => { | ||||||
|  |     let { search } = req.query; | ||||||
|  |     try { search = search.toLowerCase(); } catch {}; | ||||||
|  |     const options = { | ||||||
|  |         where: {  | ||||||
|  |             isConfirmed: true, | ||||||
|  |             // Recherche | ||||||
|  |             ...(search != undefined) && { | ||||||
|  |                 name: Sequelize.where(Sequelize.fn('LOWER', Sequelize.col('name')), 'LIKE', `%${search}%`) | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         attributes: { | ||||||
|  |             exclude: ["updatedAt", "isAdmin", "isConfirmed", "password", "tempToken", "tempExpirationToken", "isPublicEmail", "email"] | ||||||
|  |         },  | ||||||
|  |         order: [['createdAt', 'DESC']] | ||||||
|  |     }; | ||||||
|  |     return await getPagesHelper({ req, res, next }, Users, options); | ||||||
|  | } | ||||||
|  |  | ||||||
| exports.putUser = async (req, res, next) => { | exports.putUser = async (req, res, next) => { | ||||||
|     const { name, email, biography, isPublicEmail } = req.body; |     const { name, email, biography, isPublicEmail } = req.body; | ||||||
|     const logo = req.files.logo; |     const logo = req.files.logo; | ||||||
|   | |||||||
| @@ -8,31 +8,21 @@ const isAuth             = require('../middlewares/isAuth'); | |||||||
|  |  | ||||||
| const UsersRouter = Router(); | const UsersRouter = Router(); | ||||||
|  |  | ||||||
| // Permet de se connecter | UsersRouter.route('/') | ||||||
| UsersRouter.post('/login', [ |  | ||||||
|     body('email') |  | ||||||
|         .not() |  | ||||||
|         .isEmpty() |  | ||||||
|         .withMessage(requiredFields.message), |  | ||||||
|     body('password') |  | ||||||
|         .not() |  | ||||||
|         .isEmpty() |  | ||||||
|         .withMessage(requiredFields.message) |  | ||||||
| ], usersController.login); |  | ||||||
|  |  | ||||||
| // Récupère les informations public d'un profil |     // Récupère les utilisateurs | ||||||
| UsersRouter.get('/:name', usersController.getUserInfo); |     .get(usersController.getUsers) | ||||||
|  |  | ||||||
| // Permet de modifier son profil |     // Permet de modifier son profil | ||||||
| UsersRouter.put('/', isAuth,  |     .put(isAuth,  | ||||||
| fileUpload({  |     fileUpload({  | ||||||
|         useTempFiles: true,  |         useTempFiles: true,  | ||||||
|         safeFileNames: true, |         safeFileNames: true, | ||||||
|         preserveExtension: Number, |         preserveExtension: Number, | ||||||
|         limits: { fileSize: 5 * 1024 * 1024 }, // 5mb, |         limits: { fileSize: 5 * 1024 * 1024 }, // 5mb, | ||||||
|         parseNested: true |         parseNested: true | ||||||
| }), |     }), | ||||||
| [ |     [ | ||||||
|         body('email') |         body('email') | ||||||
|             .isEmail() |             .isEmail() | ||||||
|             .withMessage("Veuillez rentré une adresse mail valide.") |             .withMessage("Veuillez rentré une adresse mail valide.") | ||||||
| @@ -74,7 +64,22 @@ fileUpload({ | |||||||
|         body('biography') |         body('biography') | ||||||
|             .trim() |             .trim() | ||||||
|             .escape() |             .escape() | ||||||
| ], usersController.putUser); |     ], usersController.putUser); | ||||||
|  |  | ||||||
|  | // Permet de se connecter | ||||||
|  | UsersRouter.post('/login', [ | ||||||
|  |     body('email') | ||||||
|  |         .not() | ||||||
|  |         .isEmpty() | ||||||
|  |         .withMessage(requiredFields.message), | ||||||
|  |     body('password') | ||||||
|  |         .not() | ||||||
|  |         .isEmpty() | ||||||
|  |         .withMessage(requiredFields.message) | ||||||
|  | ], usersController.login); | ||||||
|  |  | ||||||
|  | // Récupère les informations public d'un profil | ||||||
|  | UsersRouter.get('/:name', usersController.getUserInfo); | ||||||
|  |  | ||||||
| // Permet de s'inscrire | // Permet de s'inscrire | ||||||
| UsersRouter.post('/register', [ | UsersRouter.post('/register', [ | ||||||
| @@ -121,18 +126,20 @@ UsersRouter.post('/register', [ | |||||||
| // Confirme l'inscription | // Confirme l'inscription | ||||||
| UsersRouter.get('/confirm-email/:tempToken', usersController.confirmEmail); | UsersRouter.get('/confirm-email/:tempToken', usersController.confirmEmail); | ||||||
|  |  | ||||||
| // Demande une réinitialisation du mot de passe  | UsersRouter.route('/reset-password') | ||||||
| UsersRouter.post('/reset-password', [ |  | ||||||
|  |     // Demande une réinitialisation du mot de passe  | ||||||
|  |     .post([ | ||||||
|         body('email') |         body('email') | ||||||
|             .isEmail() |             .isEmail() | ||||||
|             .withMessage("Veuillez rentré une adresse mail valide.") |             .withMessage("Veuillez rentré une adresse mail valide.") | ||||||
| ], usersController.resetPassword); |     ], usersController.resetPassword) | ||||||
|  |  | ||||||
| // Nouveau mot de passe |     // Nouveau mot de passe | ||||||
| UsersRouter.put('/reset-password', [ |     .put([ | ||||||
|         body('password') |         body('password') | ||||||
|             .isLength({ min: 4 }) |             .isLength({ min: 4 }) | ||||||
|             .withMessage("Votre mot de passe est trop court!") |             .withMessage("Votre mot de passe est trop court!") | ||||||
| ], usersController.newPassword); |     ], usersController.newPassword); | ||||||
|  |  | ||||||
| module.exports = UsersRouter; | module.exports = UsersRouter; | ||||||
		Reference in New Issue
	
	Block a user