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
@@ -25,33 +25,41 @@ Object.defineProperty(exports, "__esModule", { value: true });
25
25
  exports.UserController = void 0;
26
26
  const common_1 = require("@nestjs/common");
27
27
  const swagger_1 = require("@nestjs/swagger");
28
- const Utilities_1 = require("../../Utilities");
29
- const UserService_1 = require("../Services/UserService/UserService");
30
- const EmailService_1 = require("../Services/EmailService/EmailService");
31
28
  const path_1 = require("path");
29
+ const Logger_1 = require("../../Logger");
30
+ const Utilities_1 = require("../../Utilities");
32
31
  const GetUsersResponse_1 = require("../Dtos/GetUsersResponse");
33
- const Dtos_1 = require("../Dtos");
34
- const RegisterResponse_1 = require("../Dtos/RegisterResponse");
35
32
  const RegisterRequest_1 = require("../Dtos/RegisterRequest");
36
- const Logger_1 = require("../../Logger");
33
+ const RegisterResponse_1 = require("../Dtos/RegisterResponse");
37
34
  const SetStatoRegistrazione_1 = require("../Dtos/SetStatoRegistrazione");
35
+ const UserDto_1 = require("../Dtos/UserDto");
36
+ const EmailService_1 = require("../Services/EmailService/EmailService");
37
+ const UserService_1 = require("../Services/UserService/UserService");
38
+ const jwt_strategy_1 = require("../jwt/jwt.strategy");
39
+ const publicAuthRateLimit_1 = require("../security/publicAuthRateLimit");
40
+ const accessControl_1 = require("../security/accessControl");
38
41
  let UserController = UserController_1 = class UserController {
39
- constructor(userService, emailService, options) {
42
+ constructor(accessiOptions, userService, emailService) {
43
+ this.accessiOptions = accessiOptions;
40
44
  this.userService = userService;
41
45
  this.emailService = emailService;
42
- this.options = options;
43
46
  this.logger = new Logger_1.Logger(UserController_1.name);
44
47
  }
48
+ sendControllerError(res, error) {
49
+ const status = error instanceof common_1.HttpException ? error.getStatus() : common_1.HttpStatus.INTERNAL_SERVER_ERROR;
50
+ return Utilities_1.RestUtilities.sendErrorMessage(res, error, UserController_1.name, status);
51
+ }
45
52
  serveResetPasswordPage(res, token) {
46
53
  return __awaiter(this, void 0, void 0, function* () {
47
54
  return res.sendFile((0, path_1.join)(__dirname, '..', 'Views', 'reset-password.html'));
48
55
  });
49
56
  }
50
- getUsers(res, email, codiceUtente, includeExtensionFields, includeGrants) {
57
+ getUsers(request, res, email, codiceUtente, includeExtensionFields, includeGrants) {
51
58
  return __awaiter(this, void 0, void 0, function* () {
52
59
  try {
53
- let filters = { email, codiceUtente };
54
- let options = {
60
+ (0, accessControl_1.ensureSuperUser)((0, accessControl_1.getAuthenticatedAccessiUser)(request), 'Solo gli amministratori possono consultare gli utenti.');
61
+ const filters = { email, codiceUtente };
62
+ const options = {
55
63
  includeExtensionFields: includeExtensionFields !== null && includeExtensionFields !== void 0 ? includeExtensionFields : true,
56
64
  includeGrants: includeGrants !== null && includeGrants !== void 0 ? includeGrants : true,
57
65
  };
@@ -60,74 +68,92 @@ let UserController = UserController_1 = class UserController {
60
68
  }
61
69
  catch (error) {
62
70
  this.logger.error('Errore durante il recupero degli utenti: ', error);
63
- return Utilities_1.RestUtilities.sendErrorMessage(res, error, UserController_1.name);
71
+ return this.sendControllerError(res, error);
64
72
  }
65
73
  });
66
74
  }
67
- deleteUser(codiceUtente, res) {
75
+ deleteUser(request, codiceUtente, res) {
68
76
  return __awaiter(this, void 0, void 0, function* () {
69
77
  try {
70
- if (!codiceUtente)
71
- throw new Error('Il campo "Codice Utente" è obbligatorio.');
78
+ (0, accessControl_1.ensureSuperUser)((0, accessControl_1.getAuthenticatedAccessiUser)(request), 'Solo gli amministratori possono eliminare utenti.');
72
79
  yield this.userService.deleteUser(codiceUtente);
73
- return Utilities_1.RestUtilities.sendOKMessage(res, "L'utente è stato eliminato con successo.");
80
+ return Utilities_1.RestUtilities.sendOKMessage(res, "L'utente e' stato eliminato con successo.");
74
81
  }
75
82
  catch (error) {
76
- return Utilities_1.RestUtilities.sendErrorMessage(res, error);
83
+ return this.sendControllerError(res, error);
77
84
  }
78
85
  });
79
86
  }
80
- setStatoRegistrazione(body, res) {
87
+ setStatoRegistrazione(request, body, res) {
81
88
  return __awaiter(this, void 0, void 0, function* () {
82
89
  try {
83
- let { codiceUtente, statoRegistrazione } = body;
90
+ (0, accessControl_1.ensureSuperUser)((0, accessControl_1.getAuthenticatedAccessiUser)(request), 'Solo gli amministratori possono modificare lo stato di registrazione.');
91
+ const { codiceUtente, statoRegistrazione } = body;
84
92
  if (!codiceUtente)
85
- throw new Error('Il codice utente è obbligatorio.');
86
- if (statoRegistrazione === undefined)
87
- throw new Error('Lo stato registrazione è obbligatorio.');
93
+ throw new Error('Il codice utente e\' obbligatorio.');
94
+ if (statoRegistrazione === undefined) {
95
+ throw new Error('Lo stato registrazione e\' obbligatorio.');
96
+ }
88
97
  yield this.userService.setStato(codiceUtente, statoRegistrazione);
89
- return Utilities_1.RestUtilities.sendOKMessage(res, `Lo stato dell'utente ${codiceUtente} è stato aggiornato a ${statoRegistrazione}.`);
98
+ return Utilities_1.RestUtilities.sendOKMessage(res, `Lo stato dell'utente ${codiceUtente} e' stato aggiornato a ${statoRegistrazione}.`);
90
99
  }
91
100
  catch (error) {
92
- return Utilities_1.RestUtilities.sendErrorMessage(res, error, UserController_1.name);
101
+ return this.sendControllerError(res, error);
93
102
  }
94
103
  });
95
104
  }
96
105
  register(request, registrationData, res) {
97
106
  return __awaiter(this, void 0, void 0, function* () {
98
107
  try {
99
- const codiceUtente = yield this.userService.register(registrationData);
100
- yield this.emailService.sendPasswordResetEmail(registrationData.email, registrationData.htmlMail);
108
+ const rateLimitDecision = (0, publicAuthRateLimit_1.checkPublicAuthRateLimit)(this.accessiOptions, 'register', request, [registrationData === null || registrationData === void 0 ? void 0 : registrationData.email]);
109
+ if (!rateLimitDecision.allowed) {
110
+ return (0, publicAuthRateLimit_1.sendPublicAuthRateLimitExceeded)(res, rateLimitDecision.retryAfterSeconds);
111
+ }
112
+ const codiceUtente = yield this.userService.register(registrationData, {
113
+ allowPrivilegedFields: false,
114
+ });
115
+ yield this.emailService.sendPasswordResetEmail(registrationData.email);
101
116
  return Utilities_1.RestUtilities.sendBaseResponse(res, codiceUtente);
102
117
  }
103
118
  catch (error) {
104
- return Utilities_1.RestUtilities.sendErrorMessage(res, error, UserController_1.name, common_1.HttpStatus.BAD_REQUEST);
119
+ const status = error instanceof common_1.HttpException ? error.getStatus() : common_1.HttpStatus.BAD_REQUEST;
120
+ return Utilities_1.RestUtilities.sendErrorMessage(res, error, UserController_1.name, status);
105
121
  }
106
122
  });
107
123
  }
108
- updateUtente(codiceUtente, user, res) {
124
+ updateUtente(request, codiceUtente, user, res) {
109
125
  return __awaiter(this, void 0, void 0, function* () {
110
126
  try {
111
- if (!codiceUtente)
112
- throw new Error('Il codice utente è obbligatorio.');
113
- yield this.userService.updateUser(codiceUtente, user);
114
- return Utilities_1.RestUtilities.sendOKMessage(res, `L'utente ${codiceUtente} è stato aggiornato con successo.`);
127
+ const authenticatedUser = (0, accessControl_1.getAuthenticatedAccessiUser)(request);
128
+ const isPrivilegedUpdate = (0, accessControl_1.hasPrivilegedUserChanges)(user);
129
+ if (isPrivilegedUpdate) {
130
+ (0, accessControl_1.ensureSuperUser)(authenticatedUser, 'Solo gli amministratori possono modificare ruoli, permessi o flag privilegiati.');
131
+ }
132
+ else {
133
+ (0, accessControl_1.ensureSelfOrSuperUser)(authenticatedUser, codiceUtente, 'Puoi modificare solo il tuo profilo.');
134
+ }
135
+ if (user.codiceUtente !== undefined && user.codiceUtente !== codiceUtente) {
136
+ throw new Error('Il codice utente nel body non coincide con quello del path.');
137
+ }
138
+ yield this.userService.updateUser(codiceUtente, user, {
139
+ allowPrivilegedChanges: authenticatedUser.flagSuper,
140
+ });
141
+ return Utilities_1.RestUtilities.sendOKMessage(res, `L'utente ${codiceUtente} e' stato aggiornato con successo.`);
115
142
  }
116
143
  catch (error) {
117
- return Utilities_1.RestUtilities.sendErrorMessage(res, error, UserController_1.name);
144
+ return this.sendControllerError(res, error);
118
145
  }
119
146
  });
120
147
  }
121
- setGdpr(codiceUtente, res) {
148
+ setGdpr(request, codiceUtente, res) {
122
149
  return __awaiter(this, void 0, void 0, function* () {
123
150
  try {
124
- if (!codiceUtente)
125
- throw new Error('Il codice utente è obbligatorio.');
151
+ (0, accessControl_1.ensureSelfOrSuperUser)((0, accessControl_1.getAuthenticatedAccessiUser)(request), codiceUtente, 'Puoi impostare il GDPR solo sul tuo utente.');
126
152
  yield this.userService.setGdpr(codiceUtente);
127
153
  return Utilities_1.RestUtilities.sendOKMessage(res, `L'utente ${codiceUtente} ha accettato il GDPR.`);
128
154
  }
129
155
  catch (error) {
130
- return Utilities_1.RestUtilities.sendErrorMessage(res, error, UserController_1.name);
156
+ return this.sendControllerError(res, error);
131
157
  }
132
158
  });
133
159
  }
@@ -135,7 +161,7 @@ let UserController = UserController_1 = class UserController {
135
161
  exports.UserController = UserController;
136
162
  __decorate([
137
163
  (0, swagger_1.ApiOperation)({
138
- summary: 'Servire la pagina di reset password',
164
+ summary: 'Serve la pagina di reset password',
139
165
  operationId: 'serveResetPasswordPageUser',
140
166
  }),
141
167
  (0, swagger_1.ApiParam)({
@@ -174,35 +200,37 @@ __decorate([
174
200
  (0, swagger_1.ApiQuery)({
175
201
  name: 'includeExtensionFields',
176
202
  required: false,
177
- description: 'Includi extension fields (chiamata più pesante)',
203
+ description: 'Includi extension fields',
178
204
  }),
179
205
  (0, swagger_1.ApiQuery)({
180
206
  name: 'includeGrants',
181
207
  required: false,
182
- description: 'Includi Permessi (chiamata più pesante)',
208
+ description: 'Includi permessi',
183
209
  }),
210
+ (0, swagger_1.ApiBearerAuth)(),
211
+ (0, common_1.UseGuards)(jwt_strategy_1.JwtSimpleGuard),
184
212
  (0, common_1.Get)('get-users'),
185
- __param(0, (0, common_1.Res)()),
186
- __param(1, (0, common_1.Query)('email')),
187
- __param(2, (0, common_1.Query)('codiceUtente')),
188
- __param(3, (0, common_1.Query)('includeExtensionFields', new common_1.ParseBoolPipe({ optional: true }))),
189
- __param(4, (0, common_1.Query)('includeGrants', new common_1.ParseBoolPipe({ optional: true }))),
213
+ __param(0, (0, common_1.Req)()),
214
+ __param(1, (0, common_1.Res)()),
215
+ __param(2, (0, common_1.Query)('email')),
216
+ __param(3, (0, common_1.Query)('codiceUtente')),
217
+ __param(4, (0, common_1.Query)('includeExtensionFields', new common_1.ParseBoolPipe({ optional: true }))),
218
+ __param(5, (0, common_1.Query)('includeGrants', new common_1.ParseBoolPipe({ optional: true }))),
190
219
  __metadata("design:type", Function),
191
- __metadata("design:paramtypes", [Object, String, Number, Boolean, Boolean]),
220
+ __metadata("design:paramtypes", [Object, Object, String, Number, Boolean, Boolean]),
192
221
  __metadata("design:returntype", Promise)
193
222
  ], UserController.prototype, "getUsers", null);
194
223
  __decorate([
195
224
  (0, swagger_1.ApiOperation)({
196
225
  summary: 'Elimina un utente',
197
226
  operationId: 'deleteUser',
198
- description: `Imposta lo stato di un utente a 50(eliminato)
199
- Non esegue una eliminazione dei record`,
227
+ description: 'Imposta lo stato di un utente a eliminato senza rimuovere i record.',
200
228
  }),
201
229
  (0, swagger_1.ApiParam)({
202
230
  name: 'codiceUtente',
203
231
  description: "Codice identificativo dell'utente da eliminare",
204
232
  required: true,
205
- example: 'USR123',
233
+ example: '123',
206
234
  }),
207
235
  (0, swagger_1.ApiResponse)({ status: 200, description: 'Utente eliminato con successo' }),
208
236
  (0, swagger_1.ApiResponse)({
@@ -210,24 +238,20 @@ __decorate([
210
238
  description: 'Errore nei parametri della richiesta',
211
239
  }),
212
240
  (0, swagger_1.ApiResponse)({ status: 500, description: 'Errore interno del server' }),
241
+ (0, swagger_1.ApiBearerAuth)(),
242
+ (0, common_1.UseGuards)(jwt_strategy_1.JwtSimpleGuard),
213
243
  (0, common_1.Delete)('delete-user/:codiceUtente'),
214
- __param(0, (0, common_1.Param)('codiceUtente')),
215
- __param(1, (0, common_1.Res)()),
244
+ __param(0, (0, common_1.Req)()),
245
+ __param(1, (0, common_1.Param)('codiceUtente', common_1.ParseIntPipe)),
246
+ __param(2, (0, common_1.Res)()),
216
247
  __metadata("design:type", Function),
217
- __metadata("design:paramtypes", [Number, Object]),
248
+ __metadata("design:paramtypes", [Object, Number, Object]),
218
249
  __metadata("design:returntype", Promise)
219
250
  ], UserController.prototype, "deleteUser", null);
220
251
  __decorate([
221
252
  (0, swagger_1.ApiOperation)({
222
253
  summary: 'Imposta lo stato di registrazione di un utente',
223
254
  operationId: 'setStatoRegistrazione',
224
- description: `Imposta lo stato di registrazione di un utente. Stati possibili:
225
- - 0: NULL (non definito)
226
- - 5: INSERT (inserito)
227
- - 10: INVIO (inviato)
228
- - 20: CONF (confermato)
229
- - 50: DELETE (eliminato)
230
- - 99: BLOCC (bloccato)`,
231
255
  }),
232
256
  (0, swagger_1.ApiResponse)({
233
257
  status: 200,
@@ -242,11 +266,14 @@ __decorate([
242
266
  description: 'Errore interno del server',
243
267
  }),
244
268
  (0, swagger_1.ApiBody)({ type: SetStatoRegistrazione_1.SetStatoRegistrazioneDto }),
269
+ (0, swagger_1.ApiBearerAuth)(),
270
+ (0, common_1.UseGuards)(jwt_strategy_1.JwtSimpleGuard),
245
271
  (0, common_1.Post)('set-stato'),
246
- __param(0, (0, common_1.Body)()),
247
- __param(1, (0, common_1.Res)()),
272
+ __param(0, (0, common_1.Req)()),
273
+ __param(1, (0, common_1.Body)()),
274
+ __param(2, (0, common_1.Res)()),
248
275
  __metadata("design:type", Function),
249
- __metadata("design:paramtypes", [SetStatoRegistrazione_1.SetStatoRegistrazioneDto, Object]),
276
+ __metadata("design:paramtypes", [Object, SetStatoRegistrazione_1.SetStatoRegistrazioneDto, Object]),
250
277
  __metadata("design:returntype", Promise)
251
278
  ], UserController.prototype, "setStatoRegistrazione", null);
252
279
  __decorate([
@@ -259,16 +286,16 @@ __decorate([
259
286
  description: "Dati necessari per la registrazione dell'utente",
260
287
  }),
261
288
  (0, swagger_1.ApiCreatedResponse)({
262
- description: 'Utente registrato con successo. Restituisce il codice utente e invia una mail di conferma/reset password.',
289
+ description: 'Utente registrato con successo. Restituisce il codice utente e invia una mail di reset password.',
263
290
  type: RegisterResponse_1.RegisterResponse,
264
291
  }),
265
292
  (0, swagger_1.ApiResponse)({
266
293
  status: common_1.HttpStatus.BAD_REQUEST,
267
- description: 'Errore nella registrazione. Potrebbe essere dovuto a dati mancanti, email già esistente o configurazione non valida.',
294
+ description: 'Errore nella registrazione.',
268
295
  }),
269
296
  (0, swagger_1.ApiResponse)({
270
297
  status: common_1.HttpStatus.INTERNAL_SERVER_ERROR,
271
- description: 'Errore interno del server durante la registrazione o l’invio dell’email.',
298
+ description: 'Errore interno del server durante la registrazione o l\'invio email.',
272
299
  }),
273
300
  (0, common_1.Post)('register'),
274
301
  __param(0, (0, common_1.Req)()),
@@ -287,23 +314,26 @@ __decorate([
287
314
  name: 'codiceUtente',
288
315
  description: "Codice identificativo dell'utente da aggiornare",
289
316
  required: true,
290
- example: 'USR123',
317
+ example: '123',
291
318
  }),
292
319
  (0, swagger_1.ApiBody)({
293
- type: Dtos_1.UserDto,
294
- description: "Dati aggiornati dell'utente (escluso il codice utente, che è nel path)",
320
+ type: UserDto_1.UserDto,
321
+ description: "Dati aggiornati dell'utente",
295
322
  }),
296
323
  (0, swagger_1.ApiResponse)({
297
324
  status: common_1.HttpStatus.OK,
298
325
  description: 'Utente aggiornato con successo',
299
326
  }),
300
327
  (0, swagger_1.ApiResponse)({ status: 400, description: "Errore nell'aggiornamento" }),
328
+ (0, swagger_1.ApiBearerAuth)(),
329
+ (0, common_1.UseGuards)(jwt_strategy_1.JwtSimpleGuard),
301
330
  (0, common_1.Put)('update-user/:codiceUtente'),
302
- __param(0, (0, common_1.Param)('codiceUtente')),
303
- __param(1, (0, common_1.Body)()),
304
- __param(2, (0, common_1.Res)()),
331
+ __param(0, (0, common_1.Req)()),
332
+ __param(1, (0, common_1.Param)('codiceUtente', common_1.ParseIntPipe)),
333
+ __param(2, (0, common_1.Body)()),
334
+ __param(3, (0, common_1.Res)()),
305
335
  __metadata("design:type", Function),
306
- __metadata("design:paramtypes", [Number, Dtos_1.UserDto, Object]),
336
+ __metadata("design:paramtypes", [Object, Number, UserDto_1.UserDto, Object]),
307
337
  __metadata("design:returntype", Promise)
308
338
  ], UserController.prototype, "updateUtente", null);
309
339
  __decorate([
@@ -315,25 +345,28 @@ __decorate([
315
345
  name: 'codiceUtente',
316
346
  description: "Codice identificativo dell'utente che accetta il GDPR",
317
347
  required: true,
318
- example: 'USR123',
348
+ example: '123',
319
349
  }),
320
350
  (0, swagger_1.ApiResponse)({
321
351
  status: 200,
322
352
  description: 'Consenso GDPR impostato con successo',
323
353
  }),
324
354
  (0, swagger_1.ApiResponse)({ status: 400, description: 'Errore nella richiesta' }),
355
+ (0, swagger_1.ApiBearerAuth)(),
356
+ (0, common_1.UseGuards)(jwt_strategy_1.JwtSimpleGuard),
325
357
  (0, common_1.Patch)('set-gdpr/:codiceUtente'),
326
- __param(0, (0, common_1.Param)('codiceUtente')),
327
- __param(1, (0, common_1.Res)()),
358
+ __param(0, (0, common_1.Req)()),
359
+ __param(1, (0, common_1.Param)('codiceUtente', common_1.ParseIntPipe)),
360
+ __param(2, (0, common_1.Res)()),
328
361
  __metadata("design:type", Function),
329
- __metadata("design:paramtypes", [Number, Object]),
362
+ __metadata("design:paramtypes", [Object, Number, Object]),
330
363
  __metadata("design:returntype", Promise)
331
364
  ], UserController.prototype, "setGdpr", null);
332
365
  exports.UserController = UserController = UserController_1 = __decorate([
333
366
  (0, swagger_1.ApiTags)('User'),
334
367
  (0, common_1.Controller)('accessi/user'),
335
- __param(2, (0, common_1.Inject)('ACCESSI_OPTIONS')),
336
- __metadata("design:paramtypes", [UserService_1.UserService,
337
- EmailService_1.EmailService, Object])
368
+ __param(0, (0, common_1.Inject)('ACCESSI_OPTIONS')),
369
+ __metadata("design:paramtypes", [Object, UserService_1.UserService,
370
+ EmailService_1.EmailService])
338
371
  ], UserController);
339
372
  //# sourceMappingURL=UserController.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UserController.js","sourceRoot":"","sources":["../../../src/accessi-module/Controllers/UserController.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Controller,\n Get,\n Post,\n Body,\n Inject,\n Res,\n Param,\n Req,\n Delete,\n Put,\n Patch,\n HttpStatus,\n Query,\n ParseBoolPipe,\n} from '@nestjs/common';\nimport { Response, Request } from 'express';\nimport {\n ApiTags,\n ApiOperation,\n ApiResponse,\n ApiParam,\n ApiBody,\n ApiCreatedResponse,\n ApiQuery,\n} from '@nestjs/swagger';\nimport { RestUtilities } from '../../Utilities';\nimport { AccessiOptions } from '../AccessiModule';\nimport { UserService } from '../Services/UserService/UserService';\nimport { EmailService } from '../Services/EmailService/EmailService';\nimport { join } from 'path';\nimport { GetUsersResponse } from '../Dtos/GetUsersResponse';\nimport { StatoRegistrazione, UserDto } from '../Dtos';\nimport { RegisterResponse } from '../Dtos/RegisterResponse';\nimport { RegisterRequest } from '../Dtos/RegisterRequest';\nimport { Logger } from '../../Logger';\nimport { SetStatoRegistrazioneDto } from '../Dtos/SetStatoRegistrazione';\n\n@ApiTags('User')\n@Controller('accessi/user')\nexport class UserController {\n private readonly logger = new Logger(UserController.name);\n\n constructor(\n private readonly userService: UserService,\n private readonly emailService: EmailService,\n @Inject('ACCESSI_OPTIONS') private readonly options: AccessiOptions,\n ) {}\n\n @ApiOperation({\n summary: 'Servire la pagina di reset password',\n operationId: 'serveResetPasswordPageUser',\n })\n @ApiParam({\n name: 'token',\n description: 'Token per il reset della password',\n required: true,\n })\n @Get('reset-password/:token')\n async serveResetPasswordPage(@Res() res: Response, @Param('token') token: string) {\n return res.sendFile(join(__dirname, '..', 'Views', 'reset-password.html'));\n }\n\n @ApiOperation({\n summary: 'Recupera la lista degli utenti',\n operationId: 'getUsers',\n })\n @ApiResponse({\n status: 200,\n description: 'Lista utenti recuperata con successo',\n type: GetUsersResponse,\n })\n @ApiResponse({ status: 401, description: 'Credenziali non valide' })\n @ApiQuery({\n name: 'email',\n required: false,\n description: \"Email dell'utente da cercare\",\n })\n @ApiQuery({\n name: 'codiceUtente',\n required: false,\n description: \"Codice dell'utente da cercare\",\n })\n @ApiQuery({\n name: 'includeExtensionFields',\n required: false,\n description: 'Includi extension fields (chiamata più pesante)',\n })\n @ApiQuery({\n name: 'includeGrants',\n required: false,\n description: 'Includi Permessi (chiamata più pesante)',\n })\n @Get('get-users')\n async getUsers(\n @Res() res: Response,\n @Query('email') email?: string,\n @Query('codiceUtente') codiceUtente?: number,\n @Query('includeExtensionFields', new ParseBoolPipe({ optional: true }))\n includeExtensionFields?: boolean,\n @Query('includeGrants', new ParseBoolPipe({ optional: true }))\n includeGrants?: boolean,\n ) {\n try {\n let filters = { email, codiceUtente };\n let options = {\n includeExtensionFields: includeExtensionFields ?? true,\n includeGrants: includeGrants ?? true,\n };\n const users = await this.userService.getUsers(filters, options);\n return RestUtilities.sendBaseResponse(res, users);\n } catch (error) {\n this.logger.error('Errore durante il recupero degli utenti: ', error);\n return RestUtilities.sendErrorMessage(res, error, UserController.name);\n }\n }\n\n @ApiOperation({\n summary: 'Elimina un utente',\n operationId: 'deleteUser',\n description: `Imposta lo stato di un utente a 50(eliminato)\n Non esegue una eliminazione dei record`,\n })\n @ApiParam({\n name: 'codiceUtente',\n description: \"Codice identificativo dell'utente da eliminare\",\n required: true,\n example: 'USR123',\n })\n @ApiResponse({ status: 200, description: 'Utente eliminato con successo' })\n @ApiResponse({\n status: 400,\n description: 'Errore nei parametri della richiesta',\n })\n @ApiResponse({ status: 500, description: 'Errore interno del server' })\n @Delete('delete-user/:codiceUtente')\n async deleteUser(@Param('codiceUtente') codiceUtente: number, @Res() res: Response) {\n try {\n if (!codiceUtente) throw new Error('Il campo \"Codice Utente\" è obbligatorio.');\n\n await this.userService.deleteUser(codiceUtente);\n return RestUtilities.sendOKMessage(res, \"L'utente è stato eliminato con successo.\");\n } catch (error) {\n return RestUtilities.sendErrorMessage(res, error);\n }\n }\n\n @ApiOperation({\n summary: 'Imposta lo stato di registrazione di un utente',\n operationId: 'setStatoRegistrazione',\n description: `Imposta lo stato di registrazione di un utente. Stati possibili:\n - 0: NULL (non definito)\n - 5: INSERT (inserito)\n - 10: INVIO (inviato)\n - 20: CONF (confermato)\n - 50: DELETE (eliminato)\n - 99: BLOCC (bloccato)`,\n })\n @ApiResponse({\n status: 200,\n description: 'Stato registrazione aggiornato con successo',\n })\n @ApiResponse({\n status: 400,\n description: 'Errore nei parametri della richiesta',\n })\n @ApiResponse({\n status: 500,\n description: 'Errore interno del server',\n })\n @ApiBody({ type: SetStatoRegistrazioneDto })\n @Post('set-stato')\n async setStatoRegistrazione(@Body() body: SetStatoRegistrazioneDto, @Res() res: Response) {\n try {\n let { codiceUtente, statoRegistrazione } = body;\n if (!codiceUtente) throw new Error('Il codice utente è obbligatorio.');\n if (statoRegistrazione === undefined)\n throw new Error('Lo stato registrazione è obbligatorio.');\n\n await this.userService.setStato(codiceUtente, statoRegistrazione);\n return RestUtilities.sendOKMessage(\n res,\n `Lo stato dell'utente ${codiceUtente} è stato aggiornato a ${statoRegistrazione}.`,\n );\n } catch (error) {\n return RestUtilities.sendErrorMessage(res, error, UserController.name);\n }\n }\n\n @ApiOperation({\n summary: 'Registra un nuovo utente',\n operationId: 'register',\n })\n @ApiBody({\n type: RegisterRequest,\n description: \"Dati necessari per la registrazione dell'utente\",\n })\n @ApiCreatedResponse({\n description:\n 'Utente registrato con successo. Restituisce il codice utente e invia una mail di conferma/reset password.',\n type: RegisterResponse,\n })\n @ApiResponse({\n status: HttpStatus.BAD_REQUEST,\n description:\n 'Errore nella registrazione. Potrebbe essere dovuto a dati mancanti, email già esistente o configurazione non valida.',\n })\n @ApiResponse({\n status: HttpStatus.INTERNAL_SERVER_ERROR,\n description: 'Errore interno del server durante la registrazione o l’invio dell’email.',\n })\n @Post('register')\n async register(\n @Req() request: Request,\n @Body() registrationData: RegisterRequest,\n @Res() res: Response,\n ) {\n try {\n const codiceUtente = await this.userService.register(registrationData);\n await this.emailService.sendPasswordResetEmail(\n registrationData.email,\n registrationData.htmlMail,\n );\n\n return RestUtilities.sendBaseResponse(res, codiceUtente);\n } catch (error) {\n return RestUtilities.sendErrorMessage(\n res,\n error,\n UserController.name,\n HttpStatus.BAD_REQUEST,\n );\n }\n }\n\n @ApiOperation({\n summary: 'Aggiorna un utente esistente',\n operationId: 'updateUtente',\n })\n @ApiParam({\n name: 'codiceUtente',\n description: \"Codice identificativo dell'utente da aggiornare\",\n required: true,\n example: 'USR123',\n })\n @ApiBody({\n type: UserDto,\n description: \"Dati aggiornati dell'utente (escluso il codice utente, che è nel path)\",\n })\n @ApiResponse({\n status: HttpStatus.OK,\n description: 'Utente aggiornato con successo',\n })\n @ApiResponse({ status: 400, description: \"Errore nell'aggiornamento\" })\n @Put('update-user/:codiceUtente')\n async updateUtente(\n @Param('codiceUtente') codiceUtente: number,\n @Body() user: UserDto,\n @Res() res: Response,\n ) {\n try {\n if (!codiceUtente) throw new Error('Il codice utente è obbligatorio.');\n\n await this.userService.updateUser(codiceUtente, user);\n return RestUtilities.sendOKMessage(\n res,\n `L'utente ${codiceUtente} è stato aggiornato con successo.`,\n );\n } catch (error) {\n return RestUtilities.sendErrorMessage(res, error, UserController.name);\n }\n }\n\n @ApiOperation({\n summary: 'Imposta il consenso GDPR per un utente',\n operationId: 'setGdpr',\n })\n @ApiParam({\n name: 'codiceUtente',\n description: \"Codice identificativo dell'utente che accetta il GDPR\",\n required: true,\n example: 'USR123',\n })\n @ApiResponse({\n status: 200,\n description: 'Consenso GDPR impostato con successo',\n })\n @ApiResponse({ status: 400, description: 'Errore nella richiesta' })\n @Patch('set-gdpr/:codiceUtente')\n async setGdpr(@Param('codiceUtente') codiceUtente: number, @Res() res: Response) {\n try {\n if (!codiceUtente) throw new Error('Il codice utente è obbligatorio.');\n\n await this.userService.setGdpr(codiceUtente);\n return RestUtilities.sendOKMessage(res, `L'utente ${codiceUtente} ha accettato il GDPR.`);\n } catch (error) {\n return RestUtilities.sendErrorMessage(res, error, UserController.name);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"UserController.js","sourceRoot":"","sources":["../../../src/accessi-module/Controllers/UserController.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n Body,\r\n Controller,\r\n Delete,\r\n Get,\r\n HttpException,\r\n HttpStatus,\r\n Param,\r\n ParseBoolPipe,\r\n ParseIntPipe,\r\n Patch,\r\n Post,\r\n Put,\r\n Query,\r\n Inject,\r\n Req,\r\n Res,\r\n UseGuards,\r\n} from '@nestjs/common';\r\nimport { Request, Response } from 'express';\r\nimport {\r\n ApiBearerAuth,\r\n ApiBody,\r\n ApiCreatedResponse,\r\n ApiOperation,\r\n ApiParam,\r\n ApiQuery,\r\n ApiResponse,\r\n ApiTags,\r\n} from '@nestjs/swagger';\r\nimport { join } from 'path';\r\nimport { Logger } from '../../Logger';\r\nimport { RestUtilities } from '../../Utilities';\r\nimport { AccessiOptions } from '../AccessiModule';\r\nimport { GetUsersResponse } from '../Dtos/GetUsersResponse';\r\nimport { RegisterRequest } from '../Dtos/RegisterRequest';\r\nimport { RegisterResponse } from '../Dtos/RegisterResponse';\r\nimport { SetStatoRegistrazioneDto } from '../Dtos/SetStatoRegistrazione';\r\nimport { UserDto } from '../Dtos/UserDto';\r\nimport { EmailService } from '../Services/EmailService/EmailService';\r\nimport { UserService } from '../Services/UserService/UserService';\r\nimport { JwtSimpleGuard } from '../jwt/jwt.strategy';\r\nimport {\r\n checkPublicAuthRateLimit,\r\n sendPublicAuthRateLimitExceeded,\r\n} from '../security/publicAuthRateLimit';\r\nimport {\r\n ensureSelfOrSuperUser,\r\n ensureSuperUser,\r\n getAuthenticatedAccessiUser,\r\n hasPrivilegedUserChanges,\r\n} from '../security/accessControl';\r\n\r\n@ApiTags('User')\r\n@Controller('accessi/user')\r\nexport class UserController {\r\n private readonly logger = new Logger(UserController.name);\r\n\r\n constructor(\r\n @Inject('ACCESSI_OPTIONS') private readonly accessiOptions: AccessiOptions,\r\n private readonly userService: UserService,\r\n private readonly emailService: EmailService,\r\n ) {}\r\n\r\n private sendControllerError(res: Response, error: unknown) {\r\n const status =\r\n error instanceof HttpException ? error.getStatus() : HttpStatus.INTERNAL_SERVER_ERROR;\r\n return RestUtilities.sendErrorMessage(res, error, UserController.name, status);\r\n }\r\n\r\n @ApiOperation({\r\n summary: 'Serve la pagina di reset password',\r\n operationId: 'serveResetPasswordPageUser',\r\n })\r\n @ApiParam({\r\n name: 'token',\r\n description: 'Token per il reset della password',\r\n required: true,\r\n })\r\n @Get('reset-password/:token')\r\n async serveResetPasswordPage(@Res() res: Response, @Param('token') token: string) {\r\n return res.sendFile(join(__dirname, '..', 'Views', 'reset-password.html'));\r\n }\r\n\r\n @ApiOperation({\r\n summary: 'Recupera la lista degli utenti',\r\n operationId: 'getUsers',\r\n })\r\n @ApiResponse({\r\n status: 200,\r\n description: 'Lista utenti recuperata con successo',\r\n type: GetUsersResponse,\r\n })\r\n @ApiResponse({ status: 401, description: 'Credenziali non valide' })\r\n @ApiQuery({\r\n name: 'email',\r\n required: false,\r\n description: \"Email dell'utente da cercare\",\r\n })\r\n @ApiQuery({\r\n name: 'codiceUtente',\r\n required: false,\r\n description: \"Codice dell'utente da cercare\",\r\n })\r\n @ApiQuery({\r\n name: 'includeExtensionFields',\r\n required: false,\r\n description: 'Includi extension fields',\r\n })\r\n @ApiQuery({\r\n name: 'includeGrants',\r\n required: false,\r\n description: 'Includi permessi',\r\n })\r\n @ApiBearerAuth()\r\n @UseGuards(JwtSimpleGuard)\r\n @Get('get-users')\r\n async getUsers(\r\n @Req() request: Request,\r\n @Res() res: Response,\r\n @Query('email') email?: string,\r\n @Query('codiceUtente') codiceUtente?: number,\r\n @Query('includeExtensionFields', new ParseBoolPipe({ optional: true }))\r\n includeExtensionFields?: boolean,\r\n @Query('includeGrants', new ParseBoolPipe({ optional: true }))\r\n includeGrants?: boolean,\r\n ) {\r\n try {\r\n ensureSuperUser(\r\n getAuthenticatedAccessiUser(request),\r\n 'Solo gli amministratori possono consultare gli utenti.',\r\n );\r\n\r\n const filters = { email, codiceUtente };\r\n const options = {\r\n includeExtensionFields: includeExtensionFields ?? true,\r\n includeGrants: includeGrants ?? true,\r\n };\r\n\r\n const users = await this.userService.getUsers(filters, options);\r\n return RestUtilities.sendBaseResponse(res, users);\r\n } catch (error) {\r\n this.logger.error('Errore durante il recupero degli utenti: ', error);\r\n return this.sendControllerError(res, error);\r\n }\r\n }\r\n\r\n @ApiOperation({\r\n summary: 'Elimina un utente',\r\n operationId: 'deleteUser',\r\n description: 'Imposta lo stato di un utente a eliminato senza rimuovere i record.',\r\n })\r\n @ApiParam({\r\n name: 'codiceUtente',\r\n description: \"Codice identificativo dell'utente da eliminare\",\r\n required: true,\r\n example: '123',\r\n })\r\n @ApiResponse({ status: 200, description: 'Utente eliminato con successo' })\r\n @ApiResponse({\r\n status: 400,\r\n description: 'Errore nei parametri della richiesta',\r\n })\r\n @ApiResponse({ status: 500, description: 'Errore interno del server' })\r\n @ApiBearerAuth()\r\n @UseGuards(JwtSimpleGuard)\r\n @Delete('delete-user/:codiceUtente')\r\n async deleteUser(\r\n @Req() request: Request,\r\n @Param('codiceUtente', ParseIntPipe) codiceUtente: number,\r\n @Res() res: Response,\r\n ) {\r\n try {\r\n ensureSuperUser(\r\n getAuthenticatedAccessiUser(request),\r\n 'Solo gli amministratori possono eliminare utenti.',\r\n );\r\n\r\n await this.userService.deleteUser(codiceUtente);\r\n return RestUtilities.sendOKMessage(res, \"L'utente e' stato eliminato con successo.\");\r\n } catch (error) {\r\n return this.sendControllerError(res, error);\r\n }\r\n }\r\n\r\n @ApiOperation({\r\n summary: 'Imposta lo stato di registrazione di un utente',\r\n operationId: 'setStatoRegistrazione',\r\n })\r\n @ApiResponse({\r\n status: 200,\r\n description: 'Stato registrazione aggiornato con successo',\r\n })\r\n @ApiResponse({\r\n status: 400,\r\n description: 'Errore nei parametri della richiesta',\r\n })\r\n @ApiResponse({\r\n status: 500,\r\n description: 'Errore interno del server',\r\n })\r\n @ApiBody({ type: SetStatoRegistrazioneDto })\r\n @ApiBearerAuth()\r\n @UseGuards(JwtSimpleGuard)\r\n @Post('set-stato')\r\n async setStatoRegistrazione(\r\n @Req() request: Request,\r\n @Body() body: SetStatoRegistrazioneDto,\r\n @Res() res: Response,\r\n ) {\r\n try {\r\n ensureSuperUser(\r\n getAuthenticatedAccessiUser(request),\r\n 'Solo gli amministratori possono modificare lo stato di registrazione.',\r\n );\r\n\r\n const { codiceUtente, statoRegistrazione } = body;\r\n if (!codiceUtente) throw new Error('Il codice utente e\\' obbligatorio.');\r\n if (statoRegistrazione === undefined) {\r\n throw new Error('Lo stato registrazione e\\' obbligatorio.');\r\n }\r\n\r\n await this.userService.setStato(codiceUtente, statoRegistrazione);\r\n return RestUtilities.sendOKMessage(\r\n res,\r\n `Lo stato dell'utente ${codiceUtente} e' stato aggiornato a ${statoRegistrazione}.`,\r\n );\r\n } catch (error) {\r\n return this.sendControllerError(res, error);\r\n }\r\n }\r\n\r\n @ApiOperation({\r\n summary: 'Registra un nuovo utente',\r\n operationId: 'register',\r\n })\r\n @ApiBody({\r\n type: RegisterRequest,\r\n description: \"Dati necessari per la registrazione dell'utente\",\r\n })\r\n @ApiCreatedResponse({\r\n description:\r\n 'Utente registrato con successo. Restituisce il codice utente e invia una mail di reset password.',\r\n type: RegisterResponse,\r\n })\r\n @ApiResponse({\r\n status: HttpStatus.BAD_REQUEST,\r\n description: 'Errore nella registrazione.',\r\n })\r\n @ApiResponse({\r\n status: HttpStatus.INTERNAL_SERVER_ERROR,\r\n description: 'Errore interno del server durante la registrazione o l\\'invio email.',\r\n })\r\n @Post('register')\r\n async register(\r\n @Req() request: Request,\r\n @Body() registrationData: RegisterRequest,\r\n @Res() res: Response,\r\n ) {\r\n try {\r\n const rateLimitDecision = checkPublicAuthRateLimit(\r\n this.accessiOptions,\r\n 'register',\r\n request,\r\n [registrationData?.email],\r\n );\r\n if (!rateLimitDecision.allowed) {\r\n return sendPublicAuthRateLimitExceeded(res, rateLimitDecision.retryAfterSeconds);\r\n }\r\n\r\n const codiceUtente = await this.userService.register(registrationData, {\r\n allowPrivilegedFields: false,\r\n });\r\n\r\n await this.emailService.sendPasswordResetEmail(registrationData.email);\r\n return RestUtilities.sendBaseResponse(res, codiceUtente);\r\n } catch (error) {\r\n const status =\r\n error instanceof HttpException ? error.getStatus() : HttpStatus.BAD_REQUEST;\r\n return RestUtilities.sendErrorMessage(res, error, UserController.name, status);\r\n }\r\n }\r\n\r\n @ApiOperation({\r\n summary: 'Aggiorna un utente esistente',\r\n operationId: 'updateUtente',\r\n })\r\n @ApiParam({\r\n name: 'codiceUtente',\r\n description: \"Codice identificativo dell'utente da aggiornare\",\r\n required: true,\r\n example: '123',\r\n })\r\n @ApiBody({\r\n type: UserDto,\r\n description: \"Dati aggiornati dell'utente\",\r\n })\r\n @ApiResponse({\r\n status: HttpStatus.OK,\r\n description: 'Utente aggiornato con successo',\r\n })\r\n @ApiResponse({ status: 400, description: \"Errore nell'aggiornamento\" })\r\n @ApiBearerAuth()\r\n @UseGuards(JwtSimpleGuard)\r\n @Put('update-user/:codiceUtente')\r\n async updateUtente(\r\n @Req() request: Request,\r\n @Param('codiceUtente', ParseIntPipe) codiceUtente: number,\r\n @Body() user: UserDto,\r\n @Res() res: Response,\r\n ) {\r\n try {\r\n const authenticatedUser = getAuthenticatedAccessiUser(request);\r\n const isPrivilegedUpdate = hasPrivilegedUserChanges(user);\r\n\r\n if (isPrivilegedUpdate) {\r\n ensureSuperUser(\r\n authenticatedUser,\r\n 'Solo gli amministratori possono modificare ruoli, permessi o flag privilegiati.',\r\n );\r\n } else {\r\n ensureSelfOrSuperUser(\r\n authenticatedUser,\r\n codiceUtente,\r\n 'Puoi modificare solo il tuo profilo.',\r\n );\r\n }\r\n\r\n if (user.codiceUtente !== undefined && user.codiceUtente !== codiceUtente) {\r\n throw new Error('Il codice utente nel body non coincide con quello del path.');\r\n }\r\n\r\n await this.userService.updateUser(codiceUtente, user, {\r\n allowPrivilegedChanges: authenticatedUser.flagSuper,\r\n });\r\n\r\n return RestUtilities.sendOKMessage(\r\n res,\r\n `L'utente ${codiceUtente} e' stato aggiornato con successo.`,\r\n );\r\n } catch (error) {\r\n return this.sendControllerError(res, error);\r\n }\r\n }\r\n\r\n @ApiOperation({\r\n summary: 'Imposta il consenso GDPR per un utente',\r\n operationId: 'setGdpr',\r\n })\r\n @ApiParam({\r\n name: 'codiceUtente',\r\n description: \"Codice identificativo dell'utente che accetta il GDPR\",\r\n required: true,\r\n example: '123',\r\n })\r\n @ApiResponse({\r\n status: 200,\r\n description: 'Consenso GDPR impostato con successo',\r\n })\r\n @ApiResponse({ status: 400, description: 'Errore nella richiesta' })\r\n @ApiBearerAuth()\r\n @UseGuards(JwtSimpleGuard)\r\n @Patch('set-gdpr/:codiceUtente')\r\n async setGdpr(\r\n @Req() request: Request,\r\n @Param('codiceUtente', ParseIntPipe) codiceUtente: number,\r\n @Res() res: Response,\r\n ) {\r\n try {\r\n ensureSelfOrSuperUser(\r\n getAuthenticatedAccessiUser(request),\r\n codiceUtente,\r\n 'Puoi impostare il GDPR solo sul tuo utente.',\r\n );\r\n\r\n await this.userService.setGdpr(codiceUtente);\r\n return RestUtilities.sendOKMessage(res, `L'utente ${codiceUtente} ha accettato il GDPR.`);\r\n } catch (error) {\r\n return this.sendControllerError(res, error);\r\n }\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Abilitazione.js","sourceRoot":"","sources":["../../../src/accessi-module/Dtos/Abilitazione.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAC9C,yDAAsD;AACtD,qDAAuE;AAEvE,MAAa,YAAY;CA2BxB;AA3BD,oCA2BC;AAlBC;IAPC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,6BAA6B;QAC1C,OAAO,EAAE,UAAU;KACpB,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,kCAAkC,EAAE,CAAC;IAC3D,IAAA,wBAAM,EAAC,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,oDAAoD,EAAE,CAAC;;kDAC5D;AASrB;IAPC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,yBAAyB;QACtC,OAAO,EAAE,UAAU;KACpB,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC;IACzD,IAAA,wBAAM,EAAC,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,kDAAkD,EAAE,CAAC;;gDAC5D;AAQnB;IANC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,sBAAsB;QACnC,IAAI,EAAE,mCAAgB;QACtB,OAAO,EAAE,mCAAgB,CAAC,OAAO;KAClC,CAAC;IACD,IAAA,wBAAM,EAAC,mCAAgB,EAAE,EAAE,OAAO,EAAE,uCAAuC,EAAE,CAAC;;sDAC5C","sourcesContent":["import { ApiProperty } from \"@nestjs/swagger\";\nimport { TipoAbilitazione } from \"./TipoAbilitazione\";\nimport { IsString, IsNotEmpty, Length, IsEnum } from \"class-validator\";\n\nexport class Abilitazione {\n\n @ApiProperty({\n description: 'Codice univoco dell\\'utente',\n example: 'USR12345'\n })\n @IsString()\n @IsNotEmpty({ message: \"Il codice utente è obbligatorio.\" })\n @Length(5, 20, { message: \"Il codice utente deve essere tra 5 e 20 caratteri.\" })\n codiceUtente: number;\n\n @ApiProperty({\n description: 'Codice univoco del menu',\n example: 'MENU_001'\n })\n @IsString()\n @IsNotEmpty({ message: \"Il codice menu è obbligatorio.\" })\n @Length(3, 20, { message: \"Il codice menu deve essere tra 3 e 20 caratteri.\" })\n codiceMenu: string;\n\n @ApiProperty({\n description: 'Tipo di abilitazione',\n enum: TipoAbilitazione,\n example: TipoAbilitazione.LETTURA\n })\n @IsEnum(TipoAbilitazione, { message: \"Il tipo di abilitazione non è valido.\" })\n tipoAbilitazione: TipoAbilitazione;\n}"]}
1
+ {"version":3,"file":"Abilitazione.js","sourceRoot":"","sources":["../../../src/accessi-module/Dtos/Abilitazione.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAC9C,yDAAsD;AACtD,qDAAuE;AAEvE,MAAa,YAAY;CA2BxB;AA3BD,oCA2BC;AAlBC;IAPC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,6BAA6B;QAC1C,OAAO,EAAE,UAAU;KACpB,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,kCAAkC,EAAE,CAAC;IAC3D,IAAA,wBAAM,EAAC,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,oDAAoD,EAAE,CAAC;;kDAC5D;AASrB;IAPC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,yBAAyB;QACtC,OAAO,EAAE,UAAU;KACpB,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC;IACzD,IAAA,wBAAM,EAAC,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,kDAAkD,EAAE,CAAC;;gDAC5D;AAQnB;IANC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,sBAAsB;QACnC,IAAI,EAAE,mCAAgB;QACtB,OAAO,EAAE,mCAAgB,CAAC,OAAO;KAClC,CAAC;IACD,IAAA,wBAAM,EAAC,mCAAgB,EAAE,EAAE,OAAO,EAAE,uCAAuC,EAAE,CAAC;;sDAC5C","sourcesContent":["import { ApiProperty } from \"@nestjs/swagger\";\r\nimport { TipoAbilitazione } from \"./TipoAbilitazione\";\r\nimport { IsString, IsNotEmpty, Length, IsEnum } from \"class-validator\";\r\n\r\nexport class Abilitazione {\r\n\r\n @ApiProperty({\r\n description: 'Codice univoco dell\\'utente',\r\n example: 'USR12345'\r\n })\r\n @IsString()\r\n @IsNotEmpty({ message: \"Il codice utente è obbligatorio.\" })\r\n @Length(5, 20, { message: \"Il codice utente deve essere tra 5 e 20 caratteri.\" })\r\n codiceUtente: number;\r\n\r\n @ApiProperty({\r\n description: 'Codice univoco del menu',\r\n example: 'MENU_001'\r\n })\r\n @IsString()\r\n @IsNotEmpty({ message: \"Il codice menu è obbligatorio.\" })\r\n @Length(3, 20, { message: \"Il codice menu deve essere tra 3 e 20 caratteri.\" })\r\n codiceMenu: string;\r\n\r\n @ApiProperty({\r\n description: 'Tipo di abilitazione',\r\n enum: TipoAbilitazione,\r\n example: TipoAbilitazione.LETTURA\r\n })\r\n @IsEnum(TipoAbilitazione, { message: \"Il tipo di abilitazione non è valido.\" })\r\n tipoAbilitazione: TipoAbilitazione;\r\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"AbilitazioneMenu.js","sourceRoot":"","sources":["../../../src/accessi-module/Dtos/AbilitazioneMenu.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAAmE;AACnE,yDAAsD;AACtD,qDAAmF;AAEnF,MAAa,gBAAgB;CA0E5B;AA1ED,4CA0EC;AAjEC;IAPC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,yBAAyB;QACtC,OAAO,EAAE,kBAAkB;KAC5B,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC;IACzD,IAAA,wBAAM,EAAC,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,kDAAkD,EAAE,CAAC;;oDAC5D;AAQnB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,sBAAsB;QACnC,IAAI,EAAE,mCAAgB;QACtB,OAAO,EAAE,mCAAgB,CAAC,SAAS;KACpC,CAAC;IACD,IAAA,wBAAM,EAAC,mCAAgB,EAAE,EAAE,OAAO,EAAE,uCAAuC,EAAE,CAAC;;0DAC3C;AAQpC;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,sBAAsB;QACnC,OAAO,EAAE,eAAe;KACzB,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC;;yDAC1C;AAQzB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,iDAAiD;QAC9D,OAAO,EAAE,iBAAiB;KAC3B,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,2CAA2C,EAAE,CAAC;;2DAC1C;AAQ3B;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,oDAAoD;QACjE,OAAO,EAAE,GAAG;KACb,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,kCAAkC,EAAE,CAAC;;sDACtC;AAQtB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,oCAAoC;QACjD,OAAO,EAAE,QAAQ;KAClB,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;+CACS;AAQtB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,cAAc;QAC3B,OAAO,EAAE,GAAG;KACb,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;8CACQ;AAQrB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,yCAAyC;QACtD,OAAO,EAAE,gBAAgB;KAC1B,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;gDACU;AAQvB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,oCAAoC;QACjD,OAAO,EAAE,iCAAiC;KAC3C,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;8CACQ","sourcesContent":["import { ApiProperty, ApiPropertyOptional } from \"@nestjs/swagger\";\nimport { TipoAbilitazione } from \"./TipoAbilitazione\";\nimport { IsEnum, IsNotEmpty, IsString, Length, IsOptional } from \"class-validator\";\n\nexport class AbilitazioneMenu {\n \n @ApiProperty({\n description: 'Codice univoco del menu',\n example: 'MNUELENCOCLIENTI'\n })\n @IsString()\n @IsNotEmpty({ message: \"Il codice menu è obbligatorio.\" })\n @Length(3, 20, { message: \"Il codice menu deve essere tra 3 e 20 caratteri.\" })\n codiceMenu: string;\n\n @ApiPropertyOptional({\n description: 'Tipo di abilitazione',\n enum: TipoAbilitazione,\n example: TipoAbilitazione.SCRITTURA\n })\n @IsEnum(TipoAbilitazione, { message: \"Il tipo di abilitazione non è valido.\" })\n tipoAbilitazione?: TipoAbilitazione;\n\n @ApiPropertyOptional({\n description: 'Descrizione del menu',\n example: 'Lista Clienti'\n })\n @IsString()\n @IsNotEmpty({ message: \"La descrizione del menu è obbligatoria.\" })\n descrizioneMenu?: string;\n\n @ApiPropertyOptional({\n description: 'Descrizione del gruppo a cui appartiene il menu',\n example: 'Amministrazione'\n })\n @IsString()\n @IsNotEmpty({ message: \"La descrizione del gruppo è obbligatoria.\" })\n descrizioneGruppo?: string;\n\n @ApiPropertyOptional({\n description: 'Codice univoco del gruppo a cui appartiene il menu',\n example: 'C'\n })\n @IsString()\n @IsNotEmpty({ message: \"Il codice gruppo è obbligatorio.\" })\n codiceGruppo?: string;\n\n @ApiPropertyOptional({\n description: 'Nome dell\\'icona associata al menu',\n example: 'people'\n })\n @IsString()\n @IsOptional()\n icona?: string | null;\n\n @ApiPropertyOptional({\n description: 'Tipo di menu',\n example: 'M'\n })\n @IsString()\n @IsOptional()\n tipo?: string | null;\n\n @ApiPropertyOptional({\n description: 'Percorso della pagina associata al menu',\n example: '/lista-clienti'\n })\n @IsString()\n @IsOptional()\n pagina?: string | null;\n\n @ApiPropertyOptional({\n description: 'Nota informativa associata al menu',\n example: 'Visibile solo dopo abilitazione'\n })\n @IsString()\n @IsOptional()\n note?: string | null;\n}\n"]}
1
+ {"version":3,"file":"AbilitazioneMenu.js","sourceRoot":"","sources":["../../../src/accessi-module/Dtos/AbilitazioneMenu.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAAmE;AACnE,yDAAsD;AACtD,qDAAmF;AAEnF,MAAa,gBAAgB;CA0E5B;AA1ED,4CA0EC;AAjEC;IAPC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,yBAAyB;QACtC,OAAO,EAAE,kBAAkB;KAC5B,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC;IACzD,IAAA,wBAAM,EAAC,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,kDAAkD,EAAE,CAAC;;oDAC5D;AAQnB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,sBAAsB;QACnC,IAAI,EAAE,mCAAgB;QACtB,OAAO,EAAE,mCAAgB,CAAC,SAAS;KACpC,CAAC;IACD,IAAA,wBAAM,EAAC,mCAAgB,EAAE,EAAE,OAAO,EAAE,uCAAuC,EAAE,CAAC;;0DAC3C;AAQpC;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,sBAAsB;QACnC,OAAO,EAAE,eAAe;KACzB,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC;;yDAC1C;AAQzB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,iDAAiD;QAC9D,OAAO,EAAE,iBAAiB;KAC3B,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,2CAA2C,EAAE,CAAC;;2DAC1C;AAQ3B;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,oDAAoD;QACjE,OAAO,EAAE,GAAG;KACb,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,kCAAkC,EAAE,CAAC;;sDACtC;AAQtB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,oCAAoC;QACjD,OAAO,EAAE,QAAQ;KAClB,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;+CACS;AAQtB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,cAAc;QAC3B,OAAO,EAAE,GAAG;KACb,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;8CACQ;AAQrB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,yCAAyC;QACtD,OAAO,EAAE,gBAAgB;KAC1B,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;gDACU;AAQvB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,oCAAoC;QACjD,OAAO,EAAE,iCAAiC;KAC3C,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;8CACQ","sourcesContent":["import { ApiProperty, ApiPropertyOptional } from \"@nestjs/swagger\";\r\nimport { TipoAbilitazione } from \"./TipoAbilitazione\";\r\nimport { IsEnum, IsNotEmpty, IsString, Length, IsOptional } from \"class-validator\";\r\n\r\nexport class AbilitazioneMenu {\r\n \r\n @ApiProperty({\r\n description: 'Codice univoco del menu',\r\n example: 'MNUELENCOCLIENTI'\r\n })\r\n @IsString()\r\n @IsNotEmpty({ message: \"Il codice menu è obbligatorio.\" })\r\n @Length(3, 20, { message: \"Il codice menu deve essere tra 3 e 20 caratteri.\" })\r\n codiceMenu: string;\r\n\r\n @ApiPropertyOptional({\r\n description: 'Tipo di abilitazione',\r\n enum: TipoAbilitazione,\r\n example: TipoAbilitazione.SCRITTURA\r\n })\r\n @IsEnum(TipoAbilitazione, { message: \"Il tipo di abilitazione non è valido.\" })\r\n tipoAbilitazione?: TipoAbilitazione;\r\n\r\n @ApiPropertyOptional({\r\n description: 'Descrizione del menu',\r\n example: 'Lista Clienti'\r\n })\r\n @IsString()\r\n @IsNotEmpty({ message: \"La descrizione del menu è obbligatoria.\" })\r\n descrizioneMenu?: string;\r\n\r\n @ApiPropertyOptional({\r\n description: 'Descrizione del gruppo a cui appartiene il menu',\r\n example: 'Amministrazione'\r\n })\r\n @IsString()\r\n @IsNotEmpty({ message: \"La descrizione del gruppo è obbligatoria.\" })\r\n descrizioneGruppo?: string;\r\n\r\n @ApiPropertyOptional({\r\n description: 'Codice univoco del gruppo a cui appartiene il menu',\r\n example: 'C'\r\n })\r\n @IsString()\r\n @IsNotEmpty({ message: \"Il codice gruppo è obbligatorio.\" })\r\n codiceGruppo?: string;\r\n\r\n @ApiPropertyOptional({\r\n description: 'Nome dell\\'icona associata al menu',\r\n example: 'people'\r\n })\r\n @IsString()\r\n @IsOptional()\r\n icona?: string | null;\r\n\r\n @ApiPropertyOptional({\r\n description: 'Tipo di menu',\r\n example: 'M'\r\n })\r\n @IsString()\r\n @IsOptional()\r\n tipo?: string | null;\r\n\r\n @ApiPropertyOptional({\r\n description: 'Percorso della pagina associata al menu',\r\n example: '/lista-clienti'\r\n })\r\n @IsString()\r\n @IsOptional()\r\n pagina?: string | null;\r\n\r\n @ApiPropertyOptional({\r\n description: 'Nota informativa associata al menu',\r\n example: 'Visibile solo dopo abilitazione'\r\n })\r\n @IsString()\r\n @IsOptional()\r\n note?: string | null;\r\n}\r\n"]}
@@ -11,6 +11,8 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.AssignPermissionsToUserRequest = void 0;
13
13
  const swagger_1 = require("@nestjs/swagger");
14
+ const class_transformer_1 = require("class-transformer");
15
+ const class_validator_1 = require("class-validator");
14
16
  const Permission_1 = require("./Permission");
15
17
  class AssignPermissionsToUserRequest {
16
18
  }
@@ -24,6 +26,10 @@ __decorate([
24
26
  { codiceMenu: "MNU002", tipoAbilitazione: 10 }
25
27
  ]
26
28
  }),
29
+ (0, class_validator_1.IsArray)({ message: 'Le abilitazioni devono essere un array.' }),
30
+ (0, class_validator_1.ArrayNotEmpty)({ message: 'E necessario fornire almeno una abilitazione.' }),
31
+ (0, class_validator_1.ValidateNested)({ each: true }),
32
+ (0, class_transformer_1.Type)(() => Permission_1.Permission),
27
33
  __metadata("design:type", Array)
28
34
  ], AssignPermissionsToUserRequest.prototype, "permissions", void 0);
29
35
  //# sourceMappingURL=AssignPermissionsToUserRequest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AssignPermissionsToUserRequest.js","sourceRoot":"","sources":["../../../src/accessi-module/Dtos/AssignPermissionsToUserRequest.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAC9C,6CAA0C;AAE1C,MAAa,8BAA8B;CAU1C;AAVD,wEAUC;AADG;IARC,IAAA,qBAAW,EAAC;QACT,WAAW,EAAE,mDAAmD;QAChE,IAAI,EAAE,CAAC,uBAAU,CAAC;QAClB,OAAO,EAAE;YACL,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE,EAAE;YAC9C,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE,EAAE;SACjD;KACJ,CAAC;;mEACwB","sourcesContent":["import { ApiProperty } from '@nestjs/swagger';\nimport { Permission } from './Permission';\n\nexport class AssignPermissionsToUserRequest {\n @ApiProperty({\n description: \"Lista delle abilitazioni da assegnare all'utente.\",\n type: [Permission],\n example: [\n { codiceMenu: \"MNU001\", tipoAbilitazione: 30 },\n { codiceMenu: \"MNU002\", tipoAbilitazione: 10 }\n ]\n })\n permissions: Permission[];\n}\n"]}
1
+ {"version":3,"file":"AssignPermissionsToUserRequest.js","sourceRoot":"","sources":["../../../src/accessi-module/Dtos/AssignPermissionsToUserRequest.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAC9C,yDAAyC;AACzC,qDAAyE;AACzE,6CAA0C;AAE1C,MAAa,8BAA8B;CAc1C;AAdD,wEAcC;AADG;IAZC,IAAA,qBAAW,EAAC;QACT,WAAW,EAAE,mDAAmD;QAChE,IAAI,EAAE,CAAC,uBAAU,CAAC;QAClB,OAAO,EAAE;YACL,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE,EAAE;YAC9C,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE,EAAE;SACjD;KACJ,CAAC;IACD,IAAA,yBAAO,EAAC,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC;IAC/D,IAAA,+BAAa,EAAC,EAAE,OAAO,EAAE,+CAA+C,EAAE,CAAC;IAC3E,IAAA,gCAAc,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC9B,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,uBAAU,CAAC;;mEACG","sourcesContent":["import { ApiProperty } from '@nestjs/swagger';\r\nimport { Type } from 'class-transformer';\r\nimport { ArrayNotEmpty, IsArray, ValidateNested } from 'class-validator';\r\nimport { Permission } from './Permission';\r\n\r\nexport class AssignPermissionsToUserRequest {\r\n @ApiProperty({\r\n description: \"Lista delle abilitazioni da assegnare all'utente.\",\r\n type: [Permission],\r\n example: [\r\n { codiceMenu: \"MNU001\", tipoAbilitazione: 30 },\r\n { codiceMenu: \"MNU002\", tipoAbilitazione: 10 }\r\n ]\r\n })\r\n @IsArray({ message: 'Le abilitazioni devono essere un array.' })\r\n @ArrayNotEmpty({ message: 'E necessario fornire almeno una abilitazione.' })\r\n @ValidateNested({ each: true })\r\n @Type(() => Permission)\r\n permissions: Permission[];\r\n}\r\n"]}
@@ -11,6 +11,8 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.AssignRolesToUserRequest = void 0;
13
13
  const swagger_1 = require("@nestjs/swagger");
14
+ const class_transformer_1 = require("class-transformer");
15
+ const class_validator_1 = require("class-validator");
14
16
  class AssignRolesToUserRequest {
15
17
  }
16
18
  exports.AssignRolesToUserRequest = AssignRolesToUserRequest;
@@ -20,6 +22,10 @@ __decorate([
20
22
  type: [String],
21
23
  example: [1, 2, 3]
22
24
  }),
25
+ (0, class_validator_1.IsArray)({ message: 'I ruoli devono essere un array.' }),
26
+ (0, class_validator_1.ArrayNotEmpty)({ message: 'E necessario fornire almeno un ruolo.' }),
27
+ (0, class_transformer_1.Type)(() => Number),
28
+ (0, class_validator_1.IsInt)({ each: true, message: 'Ogni ruolo deve essere un intero.' }),
23
29
  __metadata("design:type", Array)
24
30
  ], AssignRolesToUserRequest.prototype, "roles", void 0);
25
31
  //# sourceMappingURL=AssignRolesToUserRequest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AssignRolesToUserRequest.js","sourceRoot":"","sources":["../../../src/accessi-module/Dtos/AssignRolesToUserRequest.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAE9C,MAAa,wBAAwB;CAOpC;AAPD,4DAOC;AADG;IALC,IAAA,qBAAW,EAAC;QACT,WAAW,EAAE,qDAAqD;QAClE,IAAI,EAAE,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;KACrB,CAAC;;uDACc","sourcesContent":["import { ApiProperty } from '@nestjs/swagger';\n\nexport class AssignRolesToUserRequest {\n @ApiProperty({\n description: \"Lista dei codici dei ruoli da assegnare all'utente.\",\n type: [String],\n example: [1, 2, 3]\n })\n roles: number[];\n}\n"]}
1
+ {"version":3,"file":"AssignRolesToUserRequest.js","sourceRoot":"","sources":["../../../src/accessi-module/Dtos/AssignRolesToUserRequest.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAC9C,yDAAyC;AACzC,qDAAgE;AAEhE,MAAa,wBAAwB;CAWpC;AAXD,4DAWC;AADG;IATC,IAAA,qBAAW,EAAC;QACT,WAAW,EAAE,qDAAqD;QAClE,IAAI,EAAE,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;KACrB,CAAC;IACD,IAAA,yBAAO,EAAC,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC;IACvD,IAAA,+BAAa,EAAC,EAAE,OAAO,EAAE,uCAAuC,EAAE,CAAC;IACnE,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,IAAA,uBAAK,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,mCAAmC,EAAE,CAAC;;uDACpD","sourcesContent":["import { ApiProperty } from '@nestjs/swagger';\r\nimport { Type } from 'class-transformer';\r\nimport { ArrayNotEmpty, IsArray, IsInt } from 'class-validator';\r\n\r\nexport class AssignRolesToUserRequest {\r\n @ApiProperty({\r\n description: \"Lista dei codici dei ruoli da assegnare all'utente.\",\r\n type: [String],\r\n example: [1, 2, 3]\r\n })\r\n @IsArray({ message: 'I ruoli devono essere un array.' })\r\n @ArrayNotEmpty({ message: 'E necessario fornire almeno un ruolo.' })\r\n @Type(() => Number)\r\n @IsInt({ each: true, message: 'Ogni ruolo deve essere un intero.' })\r\n roles: number[];\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"BaseResponse.js","sourceRoot":"","sources":["../../../src/accessi-module/Dtos/BaseResponse.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAC9C,yDAAyC;AACzC,qDAAqE;AAErE,MAAa,MAAM;CAQlB;AARD,wBAQC;AALC;IAFC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC;IAC/E,IAAA,0BAAQ,GAAE;;yCACO;AAIlB;IAFC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,qCAAqC,EAAE,CAAC;IACvF,IAAA,0BAAQ,GAAE;;gDACc;AAG3B,MAAsB,YAAY;CAMjC;AAND,oCAMC;AADC;IAJC,IAAA,qBAAW,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC7B,IAAA,gCAAc,GAAE;IAChB,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,IAAA,0BAAQ,GAAE;8BACH,MAAM;4CAAC","sourcesContent":["import { ApiProperty } from '@nestjs/swagger';\nimport { Type } from 'class-transformer';\nimport { IsObject, IsString, ValidateNested } from 'class-validator';\n\nexport class Status {\n @ApiProperty({ example: '0', description: 'Codice di errore, \"0\" se tutto ok' })\n @IsString()\n errorCode: string;\n\n @ApiProperty({ example: 'Success', description: 'Descrizione dell\\'errore o successo' })\n @IsString()\n errorDescription: string;\n}\n\nexport abstract class BaseResponse {\n @ApiProperty({ type: Status })\n @ValidateNested()\n @Type(() => Status)\n @IsObject()\n Status: Status;\n}\n"]}
1
+ {"version":3,"file":"BaseResponse.js","sourceRoot":"","sources":["../../../src/accessi-module/Dtos/BaseResponse.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAC9C,yDAAyC;AACzC,qDAAqE;AAErE,MAAa,MAAM;CAQlB;AARD,wBAQC;AALC;IAFC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC;IAC/E,IAAA,0BAAQ,GAAE;;yCACO;AAIlB;IAFC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,qCAAqC,EAAE,CAAC;IACvF,IAAA,0BAAQ,GAAE;;gDACc;AAG3B,MAAsB,YAAY;CAMjC;AAND,oCAMC;AADC;IAJC,IAAA,qBAAW,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC7B,IAAA,gCAAc,GAAE;IAChB,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,IAAA,0BAAQ,GAAE;8BACH,MAAM;4CAAC","sourcesContent":["import { ApiProperty } from '@nestjs/swagger';\r\nimport { Type } from 'class-transformer';\r\nimport { IsObject, IsString, ValidateNested } from 'class-validator';\r\n\r\nexport class Status {\r\n @ApiProperty({ example: '0', description: 'Codice di errore, \"0\" se tutto ok' })\r\n @IsString()\r\n errorCode: string;\r\n\r\n @ApiProperty({ example: 'Success', description: 'Descrizione dell\\'errore o successo' })\r\n @IsString()\r\n errorDescription: string;\r\n}\r\n\r\nexport abstract class BaseResponse {\r\n @ApiProperty({ type: Status })\r\n @ValidateNested()\r\n @Type(() => Status)\r\n @IsObject()\r\n Status: Status;\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"FiltriUtente.js","sourceRoot":"","sources":["../../../src/accessi-module/Dtos/FiltriUtente.ts"],"names":[],"mappings":"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","sourcesContent":["import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';\nimport { Type } from 'class-transformer';\nimport { IsIn, IsInt, IsNumber, IsOptional, IsPort, IsString, Min, ValidateNested } from 'class-validator';\nimport { BaseResponse } from './BaseResponse';\nimport { TipoFiltro } from './TipoFiltro';\n\nexport class FiltriUtente {\n\n @ApiProperty({\n description: 'Codice dell\\'utente',\n example: 1\n })\n codUte: number\n\n @ApiPropertyOptional({\n description: 'Progressivo identificativo del filtro',\n example: 1,\n })\n @IsInt({ message: 'Il progressivo deve essere un numero intero.' })\n @Min(1, { message: 'Il progressivo deve essere maggiore di 0.' })\n progressivo?: number;\n\n @ApiPropertyOptional({\n description: 'Numero del reparto associato',\n example: 1002,\n })\n @IsInt({ message: 'Il numero del reparto deve essere un numero intero.' })\n @IsOptional()\n numRep?: number;\n\n @ApiPropertyOptional({\n description: 'Idx personale',\n example: 15,\n })\n @IsInt({ message: \"L'indice personale deve essere un numero intero.\" })\n @IsOptional()\n idxPers?: number;\n\n @ApiPropertyOptional({\n description: 'Codice Cliente padre (codcli di esgest)',\n example: 1,\n })\n @IsNumber()\n @IsOptional()\n codCliSuper?: number;\n\n @ApiPropertyOptional({\n description: 'Codice dell\\'agente associato',\n example: 1\n })\n @IsNumber()\n @IsOptional()\n codAge?: number;\n\n @ApiPropertyOptional({\n description: 'Codice del cliente collegato',\n example: 1,\n })\n @IsNumber()\n @IsOptional()\n codCliCol?: number;\n\n @ApiPropertyOptional({\n description: 'Lista di codici clienti separati da virgola',\n example: '123,456,789',\n })\n @IsString()\n @IsOptional()\n codClienti?: string;\n\n @ApiPropertyOptional({\n description: 'Tipo di filtro applicato',\n example: 99,\n })\n @IsNumber()\n @IsOptional()\n tipFil?: number;\n\n @ApiPropertyOptional({\n description: 'idx della postazione nella tabella ANTENNE_POS di PROLAV',\n example: 12,\n })\n idxPos?: number;\n\n @ApiPropertyOptional({\n description: 'Codice dipendente di esgest',\n example: 12\n })\n @IsNumber()\n @IsOptional()\n codDip?: number\n\n @ApiPropertyOptional({\n description: 'Codice del vettore',\n example: 12\n })\n codVet?: number\n}\n\nexport class GetFiltriUtenteResponse extends BaseResponse {\n @ApiProperty({ type: FiltriUtente })\n @ValidateNested({ each: true })\n @Type(() => FiltriUtente)\n Result : FiltriUtente[]\n}\n\nexport class GetFiltriUtenteRequest {\n @ApiPropertyOptional({\n description: 'Codice utente',\n })\n @IsNumber()\n @IsOptional()\n codUte?: number\n}\n\nexport const FILTRI_UTENTE_DB_MAPPING = {\n progressivo: { dbField: 'PROG', numeric: true },\n numRep: { dbField: 'NUMREP', numeric: true },\n idxPers: { dbField: 'IDXPERS', numeric: true },\n codCliSuper: { dbField: 'CODCLISUPER', numeric: true },\n codAge: { dbField: 'CODAGE', numeric: true },\n codCliCol: { dbField: 'CODCLICOL', numeric: true },\n codClienti: { dbField: 'CODCLIENTI', numeric: false },\n tipFil: { dbField: 'TIPFIL', numeric: true },\n idxPos: { dbField: 'IDXPOS', numeric: true },\n codDip: { dbField: 'CODDIP', numeric: true },\n codVet: { dbField: 'CODVET', numeric: true },\n} as const;\n"]}
1
+ {"version":3,"file":"FiltriUtente.js","sourceRoot":"","sources":["../../../src/accessi-module/Dtos/FiltriUtente.ts"],"names":[],"mappings":"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","sourcesContent":["import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';\r\nimport { Type } from 'class-transformer';\r\nimport { IsIn, IsInt, IsNumber, IsOptional, IsPort, IsString, Min, ValidateNested } from 'class-validator';\r\nimport { BaseResponse } from './BaseResponse';\r\nimport { TipoFiltro } from './TipoFiltro';\r\n\r\nexport class FiltriUtente {\r\n\r\n @ApiProperty({\r\n description: 'Codice dell\\'utente',\r\n example: 1\r\n })\r\n codUte: number\r\n\r\n @ApiPropertyOptional({\r\n description: 'Progressivo identificativo del filtro',\r\n example: 1,\r\n })\r\n @IsInt({ message: 'Il progressivo deve essere un numero intero.' })\r\n @Min(1, { message: 'Il progressivo deve essere maggiore di 0.' })\r\n progressivo?: number;\r\n\r\n @ApiPropertyOptional({\r\n description: 'Numero del reparto associato',\r\n example: 1002,\r\n })\r\n @IsInt({ message: 'Il numero del reparto deve essere un numero intero.' })\r\n @IsOptional()\r\n numRep?: number;\r\n\r\n @ApiPropertyOptional({\r\n description: 'Idx personale',\r\n example: 15,\r\n })\r\n @IsInt({ message: \"L'indice personale deve essere un numero intero.\" })\r\n @IsOptional()\r\n idxPers?: number;\r\n\r\n @ApiPropertyOptional({\r\n description: 'Codice Cliente padre (codcli di esgest)',\r\n example: 1,\r\n })\r\n @IsNumber()\r\n @IsOptional()\r\n codCliSuper?: number;\r\n\r\n @ApiPropertyOptional({\r\n description: 'Codice dell\\'agente associato',\r\n example: 1\r\n })\r\n @IsNumber()\r\n @IsOptional()\r\n codAge?: number;\r\n\r\n @ApiPropertyOptional({\r\n description: 'Codice del cliente collegato',\r\n example: 1,\r\n })\r\n @IsNumber()\r\n @IsOptional()\r\n codCliCol?: number;\r\n\r\n @ApiPropertyOptional({\r\n description: 'Lista di codici clienti separati da virgola',\r\n example: '123,456,789',\r\n })\r\n @IsString()\r\n @IsOptional()\r\n codClienti?: string;\r\n\r\n @ApiPropertyOptional({\r\n description: 'Tipo di filtro applicato',\r\n example: 99,\r\n })\r\n @IsNumber()\r\n @IsOptional()\r\n tipFil?: number;\r\n\r\n @ApiPropertyOptional({\r\n description: 'idx della postazione nella tabella ANTENNE_POS di PROLAV',\r\n example: 12,\r\n })\r\n idxPos?: number;\r\n\r\n @ApiPropertyOptional({\r\n description: 'Codice dipendente di esgest',\r\n example: 12\r\n })\r\n @IsNumber()\r\n @IsOptional()\r\n codDip?: number\r\n\r\n @ApiPropertyOptional({\r\n description: 'Codice del vettore',\r\n example: 12\r\n })\r\n codVet?: number\r\n}\r\n\r\nexport class GetFiltriUtenteResponse extends BaseResponse {\r\n @ApiProperty({ type: FiltriUtente })\r\n @ValidateNested({ each: true })\r\n @Type(() => FiltriUtente)\r\n Result : FiltriUtente[]\r\n}\r\n\r\nexport class GetFiltriUtenteRequest {\r\n @ApiPropertyOptional({\r\n description: 'Codice utente',\r\n })\r\n @IsNumber()\r\n @IsOptional()\r\n codUte?: number\r\n}\r\n\r\nexport const FILTRI_UTENTE_DB_MAPPING = {\r\n progressivo: { dbField: 'PROG', numeric: true },\r\n numRep: { dbField: 'NUMREP', numeric: true },\r\n idxPers: { dbField: 'IDXPERS', numeric: true },\r\n codCliSuper: { dbField: 'CODCLISUPER', numeric: true },\r\n codAge: { dbField: 'CODAGE', numeric: true },\r\n codCliCol: { dbField: 'CODCLICOL', numeric: true },\r\n codClienti: { dbField: 'CODCLIENTI', numeric: false },\r\n tipFil: { dbField: 'TIPFIL', numeric: true },\r\n idxPos: { dbField: 'IDXPOS', numeric: true },\r\n codDip: { dbField: 'CODDIP', numeric: true },\r\n codVet: { dbField: 'CODVET', numeric: true },\r\n} as const;\r\n"]}