From 3ce5567f8a7bc66dd64d86cec0b82036b4854b4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Y=C3=BBki=20Vachot?= Date: Wed, 3 Nov 2021 20:16:12 +0100 Subject: [PATCH] Add profilePictureUrl, dateOfBirth, gender and interests of a user --- backend/app/controllers/user.controller.js | 57 +++++++++++++--------- backend/app/models/user.model.js | 17 ++++++- 2 files changed, 51 insertions(+), 23 deletions(-) diff --git a/backend/app/controllers/user.controller.js b/backend/app/controllers/user.controller.js index 7dfa64f..a2e6ee3 100644 --- a/backend/app/controllers/user.controller.js +++ b/backend/app/controllers/user.controller.js @@ -58,7 +58,11 @@ exports.create = (req, res) => { user = new User({ login: req.body.login, hashPass: req.body.hashPass, - mail: req.body.mail + mail: req.body.mail, + profilePictureUrl: req.body.profilePictureUrl ? req.body.profilePictureUrl : null, + dateOfBirth: req.body.dateOfBirth ? req.body.dateOfBirth : null, + gender: req.body.gender ? req.body.gender : null, + interests: req.body.interests ? req.body.interests : null }); } else if(typeof token.role !== 'undefined' && typeof req.body.role !== 'undefined' && @@ -68,13 +72,21 @@ exports.create = (req, res) => { login: req.body.login, hashPass: req.body.hashPass, mail: req.body.mail, - role: req.body.role + role: req.body.role, + profilePictureUrl: req.body.profilePictureUrl ? req.body.profilePictureUrl : null, + dateOfBirth: req.body.dateOfBirth ? req.body.dateOfBirth : null, + gender: req.body.gender ? req.body.gender : null, + interests: req.body.interests ? req.body.interests : null }); } else { user = new User({ login: req.body.login, hashPass: req.body.hashPass, - mail: req.body.mail + mail: req.body.mail, + profilePictureUrl: req.body.profilePictureUrl ? req.body.profilePictureUrl : null, + dateOfBirth: req.body.dateOfBirth ? req.body.dateOfBirth : null, + gender: req.body.gender ? req.body.gender : null, + interests: req.body.interests ? req.body.interests : null }); } // Save User in the database @@ -100,26 +112,27 @@ exports.create = (req, res) => { exports.findAll = (req, res) => { const token = checkLogin(req, res, roles.Admin); if(token){ - const login = req.query.login; - let condition; - let active = null; - let ids = null; - if(typeof req.body.ids !== 'undefined' && typeof req.body.ids === 'object'){ - ids = {$in: req.body.ids}; - } - if(typeof req.query.active !== 'undefined'){ - active = req.query.active !== 'false'; - } + let query = {}; - if(ids !== null && active !== null){ - condition = login ? { login: { $regex: new RegExp(login), $options: "i" }, _id: ids, active: active} : {_id: ids, active: active}; - } else if(ids !== null){ - condition = login ? { login: { $regex: new RegExp(login), $options: "i" }, _id: ids} : {_id: ids}; - } else if(active !== null){ - condition = login ? { login: { $regex: new RegExp(login), $options: "i" }, active: active} : {active: active}; - } else{ - condition = login ? { login: { $regex: new RegExp(login), $options: "i" }} : {}; - } + const ids = req.query.ids; + let condition = ids ? {$in: ids} : {}; + query._id = condition; + + const login = req.query.login; + condition = login ? { $regex: new RegExp(login), $options: "i" } : undefined; + query.login = condition; + + const mail = req.query.mail; + condition = mail ? { $regex: new RegExp(mail), $options: "i" } : undefined; + query.mail = condition; + + const role = req.query.role; + condition = role ? { $regex: new RegExp(role), $options: "i" } : undefined; + query.role = condition; + + const active = req.query.active; + condition = active ? active : undefined; + query.active = condition; User.find(condition, {hashPass: false}) .then(data => { diff --git a/backend/app/models/user.model.js b/backend/app/models/user.model.js index 5d7dff4..1cd3bce 100644 --- a/backend/app/models/user.model.js +++ b/backend/app/models/user.model.js @@ -9,7 +9,22 @@ module.exports = mongoose => { type: Object, default: roles.User }, - playlists: [], + profilePictureUrl: { + type: String, + default: null + }, + dateOfBirth: { + type: Date, + default: null + }, + gender: { + type: String, + default: null + }, + interests: { + type: Array, + default: null + }, active: { type: Boolean, default: true