emilsoftware-utilities 1.8.0-dev.2 → 2.0.0-dev.2

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.
Files changed (119) hide show
  1. package/README.MD +38 -34
  2. package/dist/ContractGenerator.js.map +1 -1
  3. package/dist/DatabaseUpdater.js +24 -24
  4. package/dist/DatabaseUpdater.js.map +1 -1
  5. package/dist/EmilsoftwareModule.js.map +1 -1
  6. package/dist/ExecutionTimeLogger.js.map +1 -1
  7. package/dist/Logger.js.map +1 -1
  8. package/dist/Orm.js.map +1 -1
  9. package/dist/RoutesLoggerMiddleware.js.map +1 -1
  10. package/dist/Utilities.d.ts +18 -0
  11. package/dist/Utilities.js +90 -1
  12. package/dist/Utilities.js.map +1 -1
  13. package/dist/accessi-module/AccessiModule.d.ts +15 -0
  14. package/dist/accessi-module/AccessiModule.js.map +1 -1
  15. package/dist/accessi-module/Controllers/AuthController.d.ts +4 -4
  16. package/dist/accessi-module/Controllers/AuthController.js +36 -21
  17. package/dist/accessi-module/Controllers/AuthController.js.map +1 -1
  18. package/dist/accessi-module/Controllers/ConfiguratorController.js.map +1 -1
  19. package/dist/accessi-module/Controllers/EmailController.d.ts +3 -3
  20. package/dist/accessi-module/Controllers/EmailController.js +15 -15
  21. package/dist/accessi-module/Controllers/EmailController.js.map +1 -1
  22. package/dist/accessi-module/Controllers/FiltriController.d.ts +3 -3
  23. package/dist/accessi-module/Controllers/FiltriController.js +32 -15
  24. package/dist/accessi-module/Controllers/FiltriController.js.map +1 -1
  25. package/dist/accessi-module/Controllers/PermissionController.d.ts +12 -17
  26. package/dist/accessi-module/Controllers/PermissionController.js +140 -124
  27. package/dist/accessi-module/Controllers/PermissionController.js.map +1 -1
  28. package/dist/accessi-module/Controllers/UserController.d.ts +12 -11
  29. package/dist/accessi-module/Controllers/UserController.js +112 -79
  30. package/dist/accessi-module/Controllers/UserController.js.map +1 -1
  31. package/dist/accessi-module/Dtos/Abilitazione.js.map +1 -1
  32. package/dist/accessi-module/Dtos/AbilitazioneMenu.js.map +1 -1
  33. package/dist/accessi-module/Dtos/AssignPermissionsToUserRequest.js +6 -0
  34. package/dist/accessi-module/Dtos/AssignPermissionsToUserRequest.js.map +1 -1
  35. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js +6 -0
  36. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js.map +1 -1
  37. package/dist/accessi-module/Dtos/BaseResponse.js.map +1 -1
  38. package/dist/accessi-module/Dtos/FiltriUtente.js.map +1 -1
  39. package/dist/accessi-module/Dtos/GetGroupsWithMenusResponse.js.map +1 -1
  40. package/dist/accessi-module/Dtos/GetMenusResponse.js.map +1 -1
  41. package/dist/accessi-module/Dtos/GetRolesResponse.js.map +1 -1
  42. package/dist/accessi-module/Dtos/GetUsersResponse.js.map +1 -1
  43. package/dist/accessi-module/Dtos/LoginRequest.js.map +1 -1
  44. package/dist/accessi-module/Dtos/LoginResponse.js.map +1 -1
  45. package/dist/accessi-module/Dtos/Permission.js +5 -0
  46. package/dist/accessi-module/Dtos/Permission.js.map +1 -1
  47. package/dist/accessi-module/Dtos/RegisterRequest.js +37 -1
  48. package/dist/accessi-module/Dtos/RegisterRequest.js.map +1 -1
  49. package/dist/accessi-module/Dtos/RegisterResponse.js.map +1 -1
  50. package/dist/accessi-module/Dtos/Role.js +13 -2
  51. package/dist/accessi-module/Dtos/Role.js.map +1 -1
  52. package/dist/accessi-module/Dtos/RuoliMenu.js.map +1 -1
  53. package/dist/accessi-module/Dtos/SetStatoRegistrazione.js +6 -0
  54. package/dist/accessi-module/Dtos/SetStatoRegistrazione.js.map +1 -1
  55. package/dist/accessi-module/Dtos/StatoRegistrazione.js.map +1 -1
  56. package/dist/accessi-module/Dtos/TipoAbilitazione.js.map +1 -1
  57. package/dist/accessi-module/Dtos/TipoFiltro.js.map +1 -1
  58. package/dist/accessi-module/Dtos/TokenResult.js.map +1 -1
  59. package/dist/accessi-module/Dtos/UpdateEnabledStatusRequest.js.map +1 -1
  60. package/dist/accessi-module/Dtos/UserDto.js +59 -1
  61. package/dist/accessi-module/Dtos/UserDto.js.map +1 -1
  62. package/dist/accessi-module/Dtos/UserGrantsDto.js.map +1 -1
  63. package/dist/accessi-module/Dtos/index.js.map +1 -1
  64. package/dist/accessi-module/Services/AuthService/AuthService.d.ts +8 -3
  65. package/dist/accessi-module/Services/AuthService/AuthService.js +159 -27
  66. package/dist/accessi-module/Services/AuthService/AuthService.js.map +1 -1
  67. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js.map +1 -1
  68. package/dist/accessi-module/Services/EmailService/EmailService.js +44 -21
  69. package/dist/accessi-module/Services/EmailService/EmailService.js.map +1 -1
  70. package/dist/accessi-module/Services/FiltriService/FiltriService.js +1 -1
  71. package/dist/accessi-module/Services/FiltriService/FiltriService.js.map +1 -1
  72. package/dist/accessi-module/Services/PermissionService/PermissionService.js +87 -87
  73. package/dist/accessi-module/Services/PermissionService/PermissionService.js.map +1 -1
  74. package/dist/accessi-module/Services/UserService/UserService.d.ts +15 -6
  75. package/dist/accessi-module/Services/UserService/UserService.js +165 -139
  76. package/dist/accessi-module/Services/UserService/UserService.js.map +1 -1
  77. package/dist/accessi-module/Views/reset-password.html +213 -195
  78. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js +25 -16
  79. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js.map +1 -1
  80. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js.map +1 -1
  81. package/dist/accessi-module/index.js +33 -4
  82. package/dist/accessi-module/index.js.map +1 -1
  83. package/dist/accessi-module/jwt/jwt.strategy.d.ts +4 -2
  84. package/dist/accessi-module/jwt/jwt.strategy.js +47 -19
  85. package/dist/accessi-module/jwt/jwt.strategy.js.map +1 -1
  86. package/dist/accessi-module/middleware/accessiRequirements.js.map +1 -1
  87. package/dist/accessi-module/middleware/authenticateGen.d.ts +3 -1
  88. package/dist/accessi-module/middleware/authenticateGen.js +17 -11
  89. package/dist/accessi-module/middleware/authenticateGen.js.map +1 -1
  90. package/dist/accessi-module/security/accessControl.d.ts +17 -0
  91. package/dist/accessi-module/security/accessControl.js +44 -0
  92. package/dist/accessi-module/security/accessControl.js.map +1 -0
  93. package/dist/accessi-module/security/authenticatedToken.d.ts +11 -0
  94. package/dist/accessi-module/security/authenticatedToken.js +39 -0
  95. package/dist/accessi-module/security/authenticatedToken.js.map +1 -0
  96. package/dist/accessi-module/security/passwordResetToken.d.ts +8 -0
  97. package/dist/accessi-module/security/passwordResetToken.js +73 -0
  98. package/dist/accessi-module/security/passwordResetToken.js.map +1 -0
  99. package/dist/accessi-module/security/publicAuthRateLimit.d.ts +10 -0
  100. package/dist/accessi-module/security/publicAuthRateLimit.js +105 -0
  101. package/dist/accessi-module/security/publicAuthRateLimit.js.map +1 -0
  102. package/dist/allegati-module/AllegatiModule.js.map +1 -1
  103. package/dist/allegati-module/Controllers/AllegatiController.js.map +1 -1
  104. package/dist/allegati-module/Dtos/AllegatoDto.js.map +1 -1
  105. package/dist/allegati-module/Dtos/BaseResponse.js.map +1 -1
  106. package/dist/allegati-module/Dtos/UploadSingleFileRequest.js.map +1 -1
  107. package/dist/allegati-module/Dtos/index.js.map +1 -1
  108. package/dist/allegati-module/Dtos/responses/DownloadAllegatoResponseDto.js.map +1 -1
  109. package/dist/allegati-module/Dtos/responses/GetListResponse.js.map +1 -1
  110. package/dist/allegati-module/Dtos/responses/UploadAllegatoResponseDto.js.map +1 -1
  111. package/dist/allegati-module/Services/AllegatiService/AllegatiService.js +49 -49
  112. package/dist/allegati-module/Services/AllegatiService/AllegatiService.js.map +1 -1
  113. package/dist/allegati-module/index.js.map +1 -1
  114. package/dist/autobind.js.map +1 -1
  115. package/dist/index.js.map +1 -1
  116. package/dist/initEmilsoftwareModule.js.map +1 -1
  117. package/dist/swagger/SwaggerConfig.js.map +1 -1
  118. package/package.json +83 -83
  119. package/dist/emilsoftware-utilities-1.8.0-dev.2.tgz +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"EmailController.js","sourceRoot":"","sources":["../../../src/accessi-module/Controllers/EmailController.ts"],"names":[],"mappings":"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","sourcesContent":["import { Body, Controller, Get, Inject, Param, Post, Query, Req, Res } from '@nestjs/common';\nimport { ApiOperation, ApiTags, ApiResponse, ApiParam, ApiBody, ApiQuery } from '@nestjs/swagger';\nimport { Response, Request } from 'express';\nimport { join } from 'path';\nimport { RestUtilities } from '../../Utilities';\nimport { AccessiOptions } from '../AccessiModule';\nimport { EmailService } from '../Services/EmailService/EmailService';\nimport { IsOptional } from 'class-validator';\n@ApiTags('Email')\n@Controller('accessi/email')\nexport class EmailController {\n constructor(\n private readonly emailService: EmailService,\n @Inject('ACCESSI_OPTIONS') private readonly options: AccessiOptions,\n ) {}\n\n @ApiOperation({\n summary: 'Serve una pagina per il reset della password',\n operationId: 'serveResetPasswordPage',\n })\n @ApiParam({ name: 'token', description: 'Token per il reset della password', required: true })\n @ApiQuery({\n name: 'returnUrl',\n description: 'Url di ritorno della pagina. Default: https://google.com',\n required: false,\n })\n @ApiResponse({ status: 200, description: 'Pagina di reset password servita con successo' })\n @Get('reset-password-page/:token')\n async serveResetPasswordPage(\n @Res() res: Response,\n @Param('token') token: string,\n @Query('returnUrl') returnUrl?: string,\n ) {\n return res.sendFile(join(__dirname, '..', 'Views', 'reset-password.html'));\n }\n\n @ApiOperation({\n summary: 'Invia una e-mail per il reset della password',\n operationId: 'sendPasswordResetEmail',\n })\n @ApiBody({\n schema: {\n properties: {\n email: {\n type: 'string',\n description: \"L'email dell'utente che richiede il reset\",\n },\n htmlMail: {\n type: 'string',\n description: 'Corpo della mail in HTML',\n },\n },\n required: ['email'],\n },\n })\n @ApiResponse({ status: 200, description: \"L'email di reset è stata inviata con successo\" })\n @ApiResponse({\n status: 400,\n description: 'Errore nella richiesta: protocollo o host non impostati',\n })\n @ApiResponse({ status: 500, description: \"Errore interno durante l'invio dell'email\" })\n @Post('send-reset-password-email')\n async sendPasswordResetEmail(\n @Req() request: Request,\n @Body()\n sendResetPasswordData: {\n email: string;\n htmlMail?: string;\n },\n @Res() res: Response,\n ) {\n try {\n await this.emailService.sendPasswordResetEmail(\n sendResetPasswordData.email,\n sendResetPasswordData.htmlMail,\n );\n return RestUtilities.sendOKMessage(\n res,\n \"L'email di reset è stata inoltrata al destinatario.\",\n );\n } catch (error) {\n return RestUtilities.sendErrorMessage(res, error, EmailController.name);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"EmailController.js","sourceRoot":"","sources":["../../../src/accessi-module/Controllers/EmailController.ts"],"names":[],"mappings":"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","sourcesContent":["import { Body, Controller, Get, Inject, Param, Post, Query, Req, Res } from '@nestjs/common';\r\nimport { ApiBody, ApiOperation, ApiParam, ApiQuery, ApiResponse, ApiTags } from '@nestjs/swagger';\r\nimport { Request, Response } from 'express';\r\nimport { join } from 'path';\r\nimport { RestUtilities } from '../../Utilities';\r\nimport { AccessiOptions } from '../AccessiModule';\r\nimport { EmailService } from '../Services/EmailService/EmailService';\r\nimport {\r\n checkPublicAuthRateLimit,\r\n sendPublicAuthRateLimitExceeded,\r\n} from '../security/publicAuthRateLimit';\r\n\r\n@ApiTags('Email')\r\n@Controller('accessi/email')\r\nexport class EmailController {\r\n constructor(\r\n @Inject('ACCESSI_OPTIONS') private readonly accessiOptions: AccessiOptions,\r\n private readonly emailService: EmailService,\r\n ) {}\r\n\r\n @ApiOperation({\r\n summary: 'Serve una pagina per il reset della password',\r\n operationId: 'serveResetPasswordPage',\r\n })\r\n @ApiParam({ name: 'token', description: 'Token per il reset della password', required: true })\r\n @ApiQuery({\r\n name: 'returnUrl',\r\n description: 'Url di ritorno della pagina',\r\n required: false,\r\n })\r\n @ApiResponse({ status: 200, description: 'Pagina di reset password servita con successo' })\r\n @Get('reset-password-page/:token')\r\n async serveResetPasswordPage(\r\n @Res() res: Response,\r\n @Param('token') token: string,\r\n @Query('returnUrl') returnUrl?: string,\r\n ) {\r\n return res.sendFile(join(__dirname, '..', 'Views', 'reset-password.html'));\r\n }\r\n\r\n @ApiOperation({\r\n summary: 'Invia una e-mail per il reset della password',\r\n operationId: 'sendPasswordResetEmail',\r\n })\r\n @ApiBody({\r\n schema: {\r\n properties: {\r\n email: {\r\n type: 'string',\r\n description: \"L'email dell'utente che richiede il reset\",\r\n },\r\n },\r\n required: ['email'],\r\n },\r\n })\r\n @ApiResponse({ status: 200, description: \"L'email di reset e stata gestita con successo\" })\r\n @ApiResponse({\r\n status: 500,\r\n description: \"Errore interno durante l'invio dell'email\",\r\n })\r\n @Post('send-reset-password-email')\r\n async sendPasswordResetEmail(\r\n @Req() request: Request,\r\n @Body()\r\n sendResetPasswordData: {\r\n email: string;\r\n htmlMail?: string;\r\n },\r\n @Res() res: Response,\r\n ) {\r\n try {\r\n const rateLimitDecision = checkPublicAuthRateLimit(\r\n this.accessiOptions,\r\n 'passwordResetEmail',\r\n request,\r\n [sendResetPasswordData?.email],\r\n );\r\n if (!rateLimitDecision.allowed) {\r\n return sendPublicAuthRateLimitExceeded(res, rateLimitDecision.retryAfterSeconds);\r\n }\r\n\r\n await this.emailService.sendPasswordResetEmail(sendResetPasswordData.email);\r\n return RestUtilities.sendOKMessage(\r\n res,\r\n \"Se l'account esiste, l'email di reset e stata inoltrata al destinatario.\",\r\n );\r\n } catch (error) {\r\n return RestUtilities.sendErrorMessage(res, error, EmailController.name);\r\n }\r\n }\r\n}\r\n"]}
@@ -1,4 +1,4 @@
1
- import { Response } from 'express';
1
+ import { Request, Response } from 'express';
2
2
  import { AccessiOptions } from '../AccessiModule';
3
3
  import { FiltriUtente, GetFiltriUtenteRequest } from '../Dtos';
4
4
  import { FiltriService } from '../Services/FiltriService/FiltriService';
@@ -7,6 +7,6 @@ export declare class FiltriController {
7
7
  private readonly options;
8
8
  constructor(filtriService: FiltriService, options: AccessiOptions);
9
9
  getTipoFiltri(res: Response): Promise<Response<any, Record<string, any>>>;
10
- getFiltriUtente(res: Response, req: GetFiltriUtenteRequest): Promise<Response<any, Record<string, any>>>;
11
- saveFiltriUtente(res: Response, req: FiltriUtente): Promise<Response<any, Record<string, any>>>;
10
+ getFiltriUtente(request: Request, res: Response, req: GetFiltriUtenteRequest): Promise<Response<any, Record<string, any>>>;
11
+ saveFiltriUtente(request: Request, res: Response, req: FiltriUtente): Promise<Response<any, Record<string, any>>>;
12
12
  }
@@ -29,6 +29,8 @@ const Utilities_1 = require("../../Utilities");
29
29
  const Dtos_1 = require("../Dtos");
30
30
  const TipoFiltro_1 = require("../Dtos/TipoFiltro");
31
31
  const FiltriService_1 = require("../Services/FiltriService/FiltriService");
32
+ const jwt_strategy_1 = require("../jwt/jwt.strategy");
33
+ const accessControl_1 = require("../security/accessControl");
32
34
  let FiltriController = FiltriController_1 = class FiltriController {
33
35
  constructor(filtriService, options) {
34
36
  this.filtriService = filtriService;
@@ -45,11 +47,18 @@ let FiltriController = FiltriController_1 = class FiltriController {
45
47
  }
46
48
  });
47
49
  }
48
- getFiltriUtente(res, req) {
50
+ getFiltriUtente(request, res, req) {
49
51
  return __awaiter(this, void 0, void 0, function* () {
50
52
  try {
51
- let { codUte } = req;
52
- const response = yield this.filtriService.getFiltriUser(codUte);
53
+ const authenticatedUser = (0, accessControl_1.getAuthenticatedAccessiUser)(request);
54
+ const targetUserCode = req === null || req === void 0 ? void 0 : req.codUte;
55
+ if (targetUserCode === undefined) {
56
+ (0, accessControl_1.ensureSuperUser)(authenticatedUser, 'Solo gli amministratori possono consultare i filtri di tutti gli utenti.');
57
+ }
58
+ else {
59
+ (0, accessControl_1.ensureSelfOrSuperUser)(authenticatedUser, Number(targetUserCode), 'Puoi consultare solo i tuoi filtri.');
60
+ }
61
+ const response = yield this.filtriService.getFiltriUser(targetUserCode);
53
62
  return Utilities_1.RestUtilities.sendBaseResponse(res, response);
54
63
  }
55
64
  catch (error) {
@@ -57,11 +66,15 @@ let FiltriController = FiltriController_1 = class FiltriController {
57
66
  }
58
67
  });
59
68
  }
60
- saveFiltriUtente(res, req) {
69
+ saveFiltriUtente(request, res, req) {
61
70
  return __awaiter(this, void 0, void 0, function* () {
71
+ var _a;
62
72
  try {
63
- const response = yield this.filtriService.upsertFiltriUtente(req.codUte, req);
64
- return Utilities_1.RestUtilities.sendOKMessage(res, `Aggiornamento filtri per l'utente ${req.codUte} effettuato correttamente`);
73
+ const authenticatedUser = (0, accessControl_1.getAuthenticatedAccessiUser)(request);
74
+ const targetUserCode = (_a = req === null || req === void 0 ? void 0 : req.codUte) !== null && _a !== void 0 ? _a : authenticatedUser.codiceUtente;
75
+ (0, accessControl_1.ensureSelfOrSuperUser)(authenticatedUser, Number(targetUserCode), 'Puoi modificare solo i tuoi filtri.');
76
+ yield this.filtriService.upsertFiltriUtente(targetUserCode, Object.assign(Object.assign({}, req), { codUte: targetUserCode }));
77
+ return Utilities_1.RestUtilities.sendOKMessage(res, `Aggiornamento filtri per l'utente ${targetUserCode} effettuato correttamente`);
65
78
  }
66
79
  catch (error) {
67
80
  return Utilities_1.RestUtilities.sendErrorMessage(res, error, FiltriController_1.name);
@@ -100,13 +113,14 @@ __decorate([
100
113
  }),
101
114
  (0, swagger_1.ApiResponse)({
102
115
  status: 200,
103
- description: 'Lista dei filtri dell’utente recuperata con successo',
116
+ description: "Lista dei filtri dell'utente recuperata con successo",
104
117
  type: Dtos_1.GetFiltriUtenteResponse,
105
118
  }),
106
- __param(0, (0, common_1.Res)()),
107
- __param(1, (0, common_1.Query)()),
119
+ __param(0, (0, common_1.Req)()),
120
+ __param(1, (0, common_1.Res)()),
121
+ __param(2, (0, common_1.Query)()),
108
122
  __metadata("design:type", Function),
109
- __metadata("design:paramtypes", [Object, Dtos_1.GetFiltriUtenteRequest]),
123
+ __metadata("design:paramtypes", [Object, Object, Dtos_1.GetFiltriUtenteRequest]),
110
124
  __metadata("design:returntype", Promise)
111
125
  ], FiltriController.prototype, "getFiltriUtente", null);
112
126
  __decorate([
@@ -114,25 +128,28 @@ __decorate([
114
128
  (0, swagger_1.ApiOperation)({
115
129
  operationId: 'saveFiltriUtente',
116
130
  summary: 'Inserisce o aggiorna i filtri di un utente',
117
- description: 'Permette di salvare (inserire o aggiornare) i filtri associati ad un utente specifico'
131
+ description: 'Permette di salvare i filtri associati ad un utente specifico',
118
132
  }),
119
133
  (0, swagger_1.ApiResponse)({
120
134
  status: 200,
121
- description: 'Filtri utente salvati con successo'
135
+ description: 'Filtri utente salvati con successo',
122
136
  }),
123
137
  (0, swagger_1.ApiResponse)({
124
138
  status: 500,
125
139
  description: 'Errore interno durante il salvataggio dei filtri utente',
126
140
  }),
127
- __param(0, (0, common_1.Res)()),
128
- __param(1, (0, common_1.Body)()),
141
+ __param(0, (0, common_1.Req)()),
142
+ __param(1, (0, common_1.Res)()),
143
+ __param(2, (0, common_1.Body)()),
129
144
  __metadata("design:type", Function),
130
- __metadata("design:paramtypes", [Object, Dtos_1.FiltriUtente]),
145
+ __metadata("design:paramtypes", [Object, Object, Dtos_1.FiltriUtente]),
131
146
  __metadata("design:returntype", Promise)
132
147
  ], FiltriController.prototype, "saveFiltriUtente", null);
133
148
  exports.FiltriController = FiltriController = FiltriController_1 = __decorate([
134
149
  (0, swagger_1.ApiTags)('Filtri'),
150
+ (0, swagger_1.ApiBearerAuth)(),
135
151
  (0, common_1.Controller)('accessi/filtri'),
152
+ (0, common_1.UseGuards)(jwt_strategy_1.JwtSimpleGuard),
136
153
  __param(1, (0, common_1.Inject)('ACCESSI_OPTIONS')),
137
154
  __metadata("design:paramtypes", [FiltriService_1.FiltriService, Object])
138
155
  ], FiltriController);
@@ -1 +1 @@
1
- {"version":3,"file":"FiltriController.js","sourceRoot":"","sources":["../../../src/accessi-module/Controllers/FiltriController.ts"],"names":[],"mappings":"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","sourcesContent":["import { Body, Controller, Get, Inject, Post, Query, Res } from '@nestjs/common';\nimport { ApiOperation, ApiQuery, ApiResponse, ApiTags } from '@nestjs/swagger';\nimport { Response } from 'express';\nimport { RestUtilities } from '../../Utilities';\nimport { AccessiOptions } from '../AccessiModule';\nimport { BaseResponse, FiltriUtente, GetFiltriUtenteRequest, GetFiltriUtenteResponse } from '../Dtos';\nimport { GetFiltriRequest, GetFiltriResponse, TipoFiltro } from '../Dtos/TipoFiltro';\nimport { FiltriService } from '../Services/FiltriService/FiltriService';\n\n@ApiTags('Filtri')\n@Controller('accessi/filtri')\nexport class FiltriController {\n constructor(\n private readonly filtriService: FiltriService,\n @Inject('ACCESSI_OPTIONS') private readonly options: AccessiOptions,\n ) {}\n\n @Get('tipi')\n @ApiOperation({\n operationId: 'getTipiFiltro',\n summary: 'Recupera la lista dei tipi di filtri',\n description: 'Ritorna tutti i tipi di filtri disponibili nel sistema',\n })\n @ApiResponse({\n status: 200,\n description: 'Lista dei tipi di filtri recuperata con successo',\n type: GetFiltriResponse,\n })\n @ApiResponse({\n status: 500,\n description: 'Errore interno durante il recupero dei tipi di filtri',\n })\n async getTipoFiltri(@Res() res: Response) {\n try {\n const response = await this.filtriService.getTipoFiltri();\n return RestUtilities.sendBaseResponse(res, response);\n } catch (error) {\n return RestUtilities.sendErrorMessage(res, error, FiltriController.name);\n }\n }\n\n @Get('utente')\n @ApiOperation({\n operationId: 'getFiltriUtente',\n summary: 'Recupera i filtri di un utente',\n description: 'Ritorna tutti i filtri associati ad un utente specifico',\n })\n @ApiResponse({\n status: 200,\n description: 'Lista dei filtri dell’utente recuperata con successo',\n type: GetFiltriUtenteResponse,\n })\n async getFiltriUtente(@Res() res: Response, @Query() req: GetFiltriUtenteRequest) {\n try {\n let {codUte} = req\n const response = await this.filtriService.getFiltriUser(codUte);\n return RestUtilities.sendBaseResponse(res, response);\n } catch (error) {\n return RestUtilities.sendErrorMessage(res, error, FiltriController.name);\n }\n }\n\n @Post('utente')\n @ApiOperation({\n operationId: 'saveFiltriUtente',\n summary: 'Inserisce o aggiorna i filtri di un utente',\n description: 'Permette di salvare (inserire o aggiornare) i filtri associati ad un utente specifico'\n })\n @ApiResponse({\n status: 200,\n description: 'Filtri utente salvati con successo'\n })\n @ApiResponse({\n status: 500,\n description: 'Errore interno durante il salvataggio dei filtri utente',\n })\n async saveFiltriUtente(@Res() res : Response, @Body() req: FiltriUtente) {\n try {\n const response = await this.filtriService.upsertFiltriUtente(req.codUte, req)\n return RestUtilities.sendOKMessage(res,`Aggiornamento filtri per l'utente ${req.codUte} effettuato correttamente`)\n } catch (error) {\n return RestUtilities.sendErrorMessage(res,error,FiltriController.name)\n }\n }\n}\n"]}
1
+ {"version":3,"file":"FiltriController.js","sourceRoot":"","sources":["../../../src/accessi-module/Controllers/FiltriController.ts"],"names":[],"mappings":"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","sourcesContent":["import { Body, Controller, Get, Inject, Post, Query, Req, Res, UseGuards } from '@nestjs/common';\r\nimport { ApiBearerAuth, ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger';\r\nimport { Request, Response } from 'express';\r\nimport { RestUtilities } from '../../Utilities';\r\nimport { AccessiOptions } from '../AccessiModule';\r\nimport { FiltriUtente, GetFiltriUtenteRequest, GetFiltriUtenteResponse } from '../Dtos';\r\nimport { GetFiltriResponse } from '../Dtos/TipoFiltro';\r\nimport { FiltriService } from '../Services/FiltriService/FiltriService';\r\nimport { JwtSimpleGuard } from '../jwt/jwt.strategy';\r\nimport {\r\n ensureSelfOrSuperUser,\r\n ensureSuperUser,\r\n getAuthenticatedAccessiUser,\r\n} from '../security/accessControl';\r\n\r\n@ApiTags('Filtri')\r\n@ApiBearerAuth()\r\n@Controller('accessi/filtri')\r\n@UseGuards(JwtSimpleGuard)\r\nexport class FiltriController {\r\n constructor(\r\n private readonly filtriService: FiltriService,\r\n @Inject('ACCESSI_OPTIONS') private readonly options: AccessiOptions,\r\n ) {}\r\n\r\n @Get('tipi')\r\n @ApiOperation({\r\n operationId: 'getTipiFiltro',\r\n summary: 'Recupera la lista dei tipi di filtri',\r\n description: 'Ritorna tutti i tipi di filtri disponibili nel sistema',\r\n })\r\n @ApiResponse({\r\n status: 200,\r\n description: 'Lista dei tipi di filtri recuperata con successo',\r\n type: GetFiltriResponse,\r\n })\r\n @ApiResponse({\r\n status: 500,\r\n description: 'Errore interno durante il recupero dei tipi di filtri',\r\n })\r\n async getTipoFiltri(@Res() res: Response) {\r\n try {\r\n const response = await this.filtriService.getTipoFiltri();\r\n return RestUtilities.sendBaseResponse(res, response);\r\n } catch (error) {\r\n return RestUtilities.sendErrorMessage(res, error, FiltriController.name);\r\n }\r\n }\r\n\r\n @Get('utente')\r\n @ApiOperation({\r\n operationId: 'getFiltriUtente',\r\n summary: 'Recupera i filtri di un utente',\r\n description: 'Ritorna tutti i filtri associati ad un utente specifico',\r\n })\r\n @ApiResponse({\r\n status: 200,\r\n description: \"Lista dei filtri dell'utente recuperata con successo\",\r\n type: GetFiltriUtenteResponse,\r\n })\r\n async getFiltriUtente(\r\n @Req() request: Request,\r\n @Res() res: Response,\r\n @Query() req: GetFiltriUtenteRequest,\r\n ) {\r\n try {\r\n const authenticatedUser = getAuthenticatedAccessiUser(request);\r\n const targetUserCode = req?.codUte;\r\n\r\n if (targetUserCode === undefined) {\r\n ensureSuperUser(\r\n authenticatedUser,\r\n 'Solo gli amministratori possono consultare i filtri di tutti gli utenti.',\r\n );\r\n } else {\r\n ensureSelfOrSuperUser(\r\n authenticatedUser,\r\n Number(targetUserCode),\r\n 'Puoi consultare solo i tuoi filtri.',\r\n );\r\n }\r\n\r\n const response = await this.filtriService.getFiltriUser(targetUserCode);\r\n return RestUtilities.sendBaseResponse(res, response);\r\n } catch (error) {\r\n return RestUtilities.sendErrorMessage(res, error, FiltriController.name);\r\n }\r\n }\r\n\r\n @Post('utente')\r\n @ApiOperation({\r\n operationId: 'saveFiltriUtente',\r\n summary: 'Inserisce o aggiorna i filtri di un utente',\r\n description: 'Permette di salvare i filtri associati ad un utente specifico',\r\n })\r\n @ApiResponse({\r\n status: 200,\r\n description: 'Filtri utente salvati con successo',\r\n })\r\n @ApiResponse({\r\n status: 500,\r\n description: 'Errore interno durante il salvataggio dei filtri utente',\r\n })\r\n async saveFiltriUtente(\r\n @Req() request: Request,\r\n @Res() res: Response,\r\n @Body() req: FiltriUtente,\r\n ) {\r\n try {\r\n const authenticatedUser = getAuthenticatedAccessiUser(request);\r\n const targetUserCode = req?.codUte ?? authenticatedUser.codiceUtente;\r\n\r\n ensureSelfOrSuperUser(\r\n authenticatedUser,\r\n Number(targetUserCode),\r\n 'Puoi modificare solo i tuoi filtri.',\r\n );\r\n\r\n await this.filtriService.upsertFiltriUtente(targetUserCode, {\r\n ...req,\r\n codUte: targetUserCode,\r\n });\r\n return RestUtilities.sendOKMessage(\r\n res,\r\n `Aggiornamento filtri per l'utente ${targetUserCode} effettuato correttamente`,\r\n );\r\n } catch (error) {\r\n return RestUtilities.sendErrorMessage(res, error, FiltriController.name);\r\n }\r\n }\r\n}\r\n"]}
@@ -1,24 +1,19 @@
1
- import { Response } from 'express';
2
- import { AccessiOptions } from '../AccessiModule';
3
- import { PermissionService } from '../Services/PermissionService/PermissionService';
4
- import { Role } from '../Dtos/Role';
5
- import { AssignRolesToUserRequest } from '../Dtos/AssignRolesToUserRequest';
1
+ import { Request, Response } from 'express';
6
2
  import { AssignPermissionsToUserRequest } from '../Dtos/AssignPermissionsToUserRequest';
3
+ import { AssignRolesToUserRequest } from '../Dtos/AssignRolesToUserRequest';
4
+ import { Role } from '../Dtos/Role';
5
+ import { PermissionService } from '../Services/PermissionService/PermissionService';
7
6
  export declare class PermissionController {
8
7
  private readonly permissionService;
9
- private readonly options;
10
- constructor(permissionService: PermissionService, options: AccessiOptions);
11
- /**
12
- * @description Endpoint per ottenere tutti i ruoli con i relativi menù.
13
- * @returns Un array di ruoli con menù associati.
14
- */
8
+ constructor(permissionService: PermissionService);
9
+ private sendControllerError;
15
10
  getRoles(res: Response): Promise<void>;
16
- updateRole(codiceRuolo: number, role: Role, res: Response): Promise<Response<any, Record<string, any>>>;
17
- createRole(res: Response, role: Role): Promise<Response<any, Record<string, any>>>;
18
- assignRolesToUser(res: Response, codiceUtente: number, assignRolesRequest: AssignRolesToUserRequest): Promise<Response<any, Record<string, any>>>;
19
- assignPermissionsToUser(res: Response, codiceUtente: number, assignPermissionsRequest: AssignPermissionsToUserRequest): Promise<Response<any, Record<string, any>>>;
20
- deleteRole(codiceRuolo: number, res: Response): Promise<Response<any, Record<string, any>>>;
11
+ updateRole(request: Request, codiceRuolo: number, role: Role, res: Response): Promise<Response<any, Record<string, any>>>;
12
+ createRole(request: Request, res: Response, role: Role): Promise<Response<any, Record<string, any>>>;
13
+ assignRolesToUser(request: Request, res: Response, codiceUtente: number, assignRolesRequest: AssignRolesToUserRequest): Promise<Response<any, Record<string, any>>>;
14
+ assignPermissionsToUser(request: Request, res: Response, codiceUtente: number, assignPermissionsRequest: AssignPermissionsToUserRequest): Promise<Response<any, Record<string, any>>>;
15
+ deleteRole(request: Request, codiceRuolo: number, res: Response): Promise<Response<any, Record<string, any>>>;
21
16
  getMenus(res: Response): Promise<Response<any, Record<string, any>>>;
22
17
  getGroupsWithMenus(includeDisabled: string, res: Response): Promise<Response<any, Record<string, any>>>;
23
- getUserRolesAndGrants(codiceUtente: number, res: Response): Promise<Response<any, Record<string, any>>>;
18
+ getUserRolesAndGrants(request: Request, codiceUtente: number, res: Response): Promise<Response<any, Record<string, any>>>;
24
19
  }