fpavon-ee-shared 1.0.25 → 1.0.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/infrastructure/middlewares/middleware.auth.js +0 -8
- package/dist/infrastructure/middlewares/middleware.validarRol.d.ts +2 -1
- package/dist/infrastructure/middlewares/middleware.validarRol.js +7 -1
- package/infrastructure/middlewares/middleware.auth.ts +0 -11
- package/infrastructure/middlewares/middleware.validarRol.ts +17 -8
- package/package.json +1 -1
|
@@ -50,17 +50,9 @@ function getSecret() {
|
|
|
50
50
|
return Buffer.from(secretString, 'utf8');
|
|
51
51
|
}
|
|
52
52
|
const asyncHandlerWrapper = (req, res, next) => {
|
|
53
|
-
// Asume que 'fn' es tu función asíncrona original (la que tiene el Promise<void>)
|
|
54
|
-
// Si 'fn' ya está definida en algún lugar, asegúrate de llamarla aquí.
|
|
55
|
-
// Ejemplo si 'fn' fuera el middleware asíncrono original:
|
|
56
53
|
Promise.resolve(validarToken(req, res, next)).catch(next);
|
|
57
|
-
// **Importante**: Si el error persiste, el problema es que la firma de
|
|
58
|
-
// la función envuelta (fn) no es compatible con el RequestHandler que espera Express.
|
|
59
|
-
// La solución más segura es usar una librería conocida de tipos compatibles si es posible.
|
|
60
54
|
};
|
|
61
55
|
exports.validarToken = asyncHandlerWrapper;
|
|
62
|
-
// NOTA: Es esencial que getSecret() ahora devuelva un Buffer para jwt.verify/sign
|
|
63
|
-
// y que dotenv.config() esté en la PRIMERA LÍNEA del cliente.
|
|
64
56
|
const validarToken = (req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
|
|
65
57
|
// --- BLOQUE 1: Extracción y Validación del Token ---
|
|
66
58
|
try {
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { RequestHandler } from 'express';
|
|
2
|
+
export declare function validarRol(rolRequerido: string): RequestHandler;
|
|
@@ -5,6 +5,10 @@ function validarRol(rolRequerido) {
|
|
|
5
5
|
if (typeof rolRequerido != 'string')
|
|
6
6
|
throw new Error("Debe enviar un rol requerido");
|
|
7
7
|
return function (req, res, next) {
|
|
8
|
+
// Aseguramos req.body exista, como hicimos antes
|
|
9
|
+
if (!req.body || !req.body.usuario || !req.body.usuario.roles) {
|
|
10
|
+
return res.status(401).json({ "error": "Datos de usuario insuficientes o token inválido." });
|
|
11
|
+
}
|
|
8
12
|
try {
|
|
9
13
|
if (!req.body.usuario.roles.includes(rolRequerido)) {
|
|
10
14
|
return res.status(401).json({ "error": "No tiene permisos para usar esta funcionalidad" });
|
|
@@ -12,7 +16,9 @@ function validarRol(rolRequerido) {
|
|
|
12
16
|
next();
|
|
13
17
|
}
|
|
14
18
|
catch (error) {
|
|
15
|
-
|
|
19
|
+
// Se usa el error.message si existe para un mejor log
|
|
20
|
+
console.error("FALLO CRÍTICO en validarRol:", error);
|
|
21
|
+
return res.status(500).json({ "error": `Error interno en el servidor: ${error.message || error}` });
|
|
16
22
|
}
|
|
17
23
|
};
|
|
18
24
|
}
|
|
@@ -18,20 +18,9 @@ function getSecret(): Buffer {
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
const asyncHandlerWrapper: RequestHandler = (req: Request, res: Response, next: NextFunction) => {
|
|
21
|
-
// Asume que 'fn' es tu función asíncrona original (la que tiene el Promise<void>)
|
|
22
|
-
// Si 'fn' ya está definida en algún lugar, asegúrate de llamarla aquí.
|
|
23
|
-
|
|
24
|
-
// Ejemplo si 'fn' fuera el middleware asíncrono original:
|
|
25
21
|
Promise.resolve(validarToken(req, res, next)).catch(next);
|
|
26
|
-
|
|
27
|
-
// **Importante**: Si el error persiste, el problema es que la firma de
|
|
28
|
-
// la función envuelta (fn) no es compatible con el RequestHandler que espera Express.
|
|
29
|
-
// La solución más segura es usar una librería conocida de tipos compatibles si es posible.
|
|
30
22
|
};
|
|
31
23
|
|
|
32
|
-
// NOTA: Es esencial que getSecret() ahora devuelva un Buffer para jwt.verify/sign
|
|
33
|
-
// y que dotenv.config() esté en la PRIMERA LÍNEA del cliente.
|
|
34
|
-
|
|
35
24
|
const validarToken = async (req: Request, res: Response, next: NextFunction): Promise<void> => {
|
|
36
25
|
|
|
37
26
|
// --- BLOQUE 1: Extracción y Validación del Token ---
|
|
@@ -1,15 +1,24 @@
|
|
|
1
|
-
import { Request, Response } from 'express';
|
|
1
|
+
import { Request, Response, NextFunction, RequestHandler } from 'express';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
|
|
4
|
+
export function validarRol(rolRequerido: string): RequestHandler {
|
|
5
|
+
if (typeof rolRequerido != 'string') throw new Error("Debe enviar un rol requerido");
|
|
6
|
+
|
|
7
|
+
return function(req: Request, res: Response, next: NextFunction) {
|
|
8
|
+
// Aseguramos req.body exista, como hicimos antes
|
|
9
|
+
if (!req.body || !req.body.usuario || !req.body.usuario.roles) {
|
|
10
|
+
return res.status(401).json({ "error": "Datos de usuario insuficientes o token inválido." });
|
|
11
|
+
}
|
|
12
|
+
|
|
6
13
|
try {
|
|
7
|
-
if(!req.body.usuario.roles.includes(rolRequerido)){
|
|
8
|
-
return res.status(401).json({"error":"No tiene permisos para usar esta funcionalidad"});
|
|
14
|
+
if (!req.body.usuario.roles.includes(rolRequerido)) {
|
|
15
|
+
return res.status(401).json({ "error": "No tiene permisos para usar esta funcionalidad" });
|
|
9
16
|
}
|
|
10
17
|
next();
|
|
11
|
-
} catch (error) {
|
|
12
|
-
|
|
18
|
+
} catch (error:any) {
|
|
19
|
+
// Se usa el error.message si existe para un mejor log
|
|
20
|
+
console.error("FALLO CRÍTICO en validarRol:", error);
|
|
21
|
+
return res.status(500).json({ "error": `Error interno en el servidor: ${error.message || error}` });
|
|
13
22
|
}
|
|
14
23
|
}
|
|
15
24
|
}
|