changement
This commit is contained in:
@@ -1,6 +1,11 @@
|
||||
const jwt = require("jsonwebtoken");
|
||||
const prisma = require("../config/prisma");
|
||||
|
||||
// Seules routes accessibles tant qu'un mot de passe provisoire n'a pas été
|
||||
// remplacé : sans ce filtre côté serveur, il suffirait d'appeler l'API
|
||||
// directement pour contourner la page du front.
|
||||
const ALLOWED_WHILE_PASSWORD_CHANGE_REQUIRED = ["/api/auth/me", "/api/auth/initial-password"];
|
||||
|
||||
const authMiddleware = async (req, res, next) => {
|
||||
try {
|
||||
const authHeader = req.headers.authorization;
|
||||
@@ -25,6 +30,7 @@ const authMiddleware = async (req, res, next) => {
|
||||
role: true,
|
||||
provider: true,
|
||||
password: true,
|
||||
mustChangePassword: true,
|
||||
},
|
||||
});
|
||||
|
||||
@@ -34,6 +40,14 @@ const authMiddleware = async (req, res, next) => {
|
||||
});
|
||||
}
|
||||
|
||||
const route = `${req.baseUrl}${req.path}`.replace(/\/+$/, "");
|
||||
if (user.mustChangePassword && !ALLOWED_WHILE_PASSWORD_CHANGE_REQUIRED.includes(route)) {
|
||||
return res.status(403).json({
|
||||
message: "Vous devez choisir un nouveau mot de passe avant de continuer.",
|
||||
code: "PASSWORD_CHANGE_REQUIRED",
|
||||
});
|
||||
}
|
||||
|
||||
// req.user est renvoyé tel quel par /api/auth/me : on remplace le hash par
|
||||
// un simple booléen, qui suffit au profil pour proposer « définir » ou
|
||||
// « modifier » son mot de passe.
|
||||
|
||||
Reference in New Issue
Block a user