📦 NEW: GET /users
This commit is contained in:
parent
650bcac05a
commit
db3f940da5
@ -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