Skip to content

Commit

Permalink
feat(compteBO): acces a mon compte pour userBO 541 (#466)
Browse files Browse the repository at this point in the history
- Ajout du lien vers les informations de mon compte
- Ajustement des droits pour ne pouvoir modifier que son nom est prénom
tant au niveau de "mon Compte" que de la gestion des utilisateurs => un
utilisateur ne peut plus modifier autre chose que ses informations.
- Correction et amélioration de l'affichage des informations "Type de
compétence du service " tant en lecture seule qu'en modification
(rafraichissement du profil de l'utilisateur connecté)
  • Loading branch information
l-scherer authored Sep 5, 2024
2 parents 00473bd + 5139d70 commit 14632f4
Show file tree
Hide file tree
Showing 10 changed files with 860 additions and 693 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -55,13 +55,6 @@ module.exports = async function login(req, res, next) {
);
}

user.serviceCompetent =
user.territoireCode === "FRA"
? "NAT"
: /^[0-9]+$/.test(user.territoireCode)
? "DEP"
: "REG";

try {
const accessToken = jwt.sign(buildAccessToken(user), config.tokenSecret, {
algorithm: "ES512",
Expand Down
1 change: 1 addition & 0 deletions packages/backend/src/controllers/bo-user/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@ module.exports.getOne = require("./get-one");
module.exports.getMe = require("./get-me");
module.exports.create = require("./create");
module.exports.update = require("./update");
module.exports.updateMe = require("./update-me");
module.exports.serviceCompetence = require("./service-competence");
module.exports.verifyCompetence = require("./service-competence");
37 changes: 37 additions & 0 deletions packages/backend/src/controllers/bo-user/update-me.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
const BoUser = require("../../services/BoUser");

const logger = require("../../utils/logger");
const ValidationAppError = require("../../utils/validation-error");

const BOUserSchema = require("../../schemas/bo-user");

const log = logger(module.filename);

module.exports = async function updateMe(req, res, next) {
log.i("IN", req.body);
const { id } = req.decoded;
let user;
if (id) {
try {
user = await BOUserSchema()
.omit(["email", "deleted", "roles", "territoireCode"])
.validate(req.body, {
abortEarly: false,
stripUnknown: true,
});
} catch (error) {
log.w(error);
return next(new ValidationAppError(error));
}
try {
await BoUser.updateMe(id, user);
return res.status(200).json({ message: "Utilisateur mis à jour" });
} catch (error) {
log.w("DONE with error");
return next(error);
}
} else
return res.status(403).json({
message: "Permission refusée. Utilisateur non reconnu",
});
};
2 changes: 2 additions & 0 deletions packages/backend/src/routes/bo-user.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ router.get(
router.get("/me", BOcheckJWT, BOUserController.getMe);
// Renvoie les informations liées à l'utilisateur
router.get("/:userId", BOcheckJWT, BOcheckRoleCompte, BOUserController.getOne);
// Mise à jour de mes informations
router.post("/me", BOcheckJWT, BOUserController.updateMe);
// Création d'un utilisateur
router.post(
"/",
Expand Down
32 changes: 32 additions & 0 deletions packages/backend/src/services/BoUser.js
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,17 @@ ${additionalParamsQuery}
`,
[id, nom, prenom, territoireCode],
],
updateMe: (id, nom, prenom) => [
`
UPDATE back.users
SET
nom = $2,
prenom = $3
WHERE
id = $1
`,
[id, nom, prenom],
],
};

module.exports.create = async ({
Expand Down Expand Up @@ -250,6 +261,27 @@ module.exports.create = async ({
return { code: "CreationCompte", user };
};

module.exports.updateMe = async (id, { nom, prenom }) => {
log.i("update - IN", { id });
if (!id) {
throw new AppError("Paramètre manquant ou erroné de patate", {
statusCode: 500,
});
}
// Mise à jour du compte en base de données
const { rowCount } = await pool.query(...query.updateMe(id, nom, prenom));

if (rowCount === 0) {
log.d("update - DONE - Utilisateur BO inexistant");
throw new AppError("Utilisateur déjà inexistant", {
name: "UserNotFound",
});
}
log.i("updateMe - DONE");
return { code: "MajCompte" };
};


module.exports.update = async (
id,
{ nom, prenom, roles, territoireCode, deleted },
Expand Down
Loading

0 comments on commit 14632f4

Please sign in to comment.