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.
@@ -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
- export declare function validarRol(rolRequerido: string): (req: Request, res: Response, next: any) => any;
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
- return res.status(500).json({ "error": `${error}` });
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
- export function validarRol(rolRequerido:string) {
4
- if(typeof rolRequerido != 'string') throw new Error("Debe enviar un rol requerido");
5
- return function(req: Request, res:Response, next) {
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
- return res.status(500).json({"error":`${error}`});
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
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fpavon-ee-shared",
3
- "version": "1.0.25",
3
+ "version": "1.0.26",
4
4
  "description": "Carpeta compartida entre servicios de Expediente Electronio",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",