emilsoftware-utilities 2.0.0-dev.10 → 2.0.0-dev.12

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 (69) hide show
  1. package/dist/Orm.d.ts +2 -0
  2. package/dist/Orm.js +27 -2
  3. package/dist/Orm.js.map +1 -1
  4. package/dist/Utilities.js +1 -0
  5. package/dist/Utilities.js.map +1 -1
  6. package/dist/accessi-module/Controllers/AuthController.d.ts +4 -4
  7. package/dist/accessi-module/Controllers/AuthController.js +43 -33
  8. package/dist/accessi-module/Controllers/AuthController.js.map +1 -1
  9. package/dist/accessi-module/Controllers/ConfiguratorController.js +16 -14
  10. package/dist/accessi-module/Controllers/ConfiguratorController.js.map +1 -1
  11. package/dist/accessi-module/Controllers/EmailController.d.ts +2 -4
  12. package/dist/accessi-module/Controllers/EmailController.js +8 -12
  13. package/dist/accessi-module/Controllers/EmailController.js.map +1 -1
  14. package/dist/accessi-module/Controllers/FiltriController.js +29 -0
  15. package/dist/accessi-module/Controllers/FiltriController.js.map +1 -1
  16. package/dist/accessi-module/Controllers/PermissionController.js +27 -25
  17. package/dist/accessi-module/Controllers/PermissionController.js.map +1 -1
  18. package/dist/accessi-module/Controllers/UserController.d.ts +2 -2
  19. package/dist/accessi-module/Controllers/UserController.js +30 -12
  20. package/dist/accessi-module/Controllers/UserController.js.map +1 -1
  21. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.d.ts +10 -0
  22. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js +52 -0
  23. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js.map +1 -0
  24. package/dist/accessi-module/Dtos/BaseResponse.d.ts +20 -0
  25. package/dist/accessi-module/Dtos/BaseResponse.js +87 -1
  26. package/dist/accessi-module/Dtos/BaseResponse.js.map +1 -1
  27. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.d.ts +3 -0
  28. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.js +31 -0
  29. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.js.map +1 -0
  30. package/dist/accessi-module/Dtos/GetUserByTokenRequest.d.ts +3 -0
  31. package/dist/accessi-module/Dtos/GetUserByTokenRequest.js +26 -0
  32. package/dist/accessi-module/Dtos/GetUserByTokenRequest.js.map +1 -0
  33. package/dist/accessi-module/Dtos/GetUserByTokenResponse.d.ts +5 -0
  34. package/dist/accessi-module/Dtos/GetUserByTokenResponse.js +27 -0
  35. package/dist/accessi-module/Dtos/GetUserByTokenResponse.js.map +1 -0
  36. package/dist/accessi-module/Dtos/PublicRegisterRequest.d.ts +5 -0
  37. package/dist/accessi-module/Dtos/PublicRegisterRequest.js +14 -0
  38. package/dist/accessi-module/Dtos/PublicRegisterRequest.js.map +1 -0
  39. package/dist/accessi-module/Dtos/RegisterRequest.js +4 -0
  40. package/dist/accessi-module/Dtos/RegisterRequest.js.map +1 -1
  41. package/dist/accessi-module/Dtos/RegisterResponse.d.ts +1 -1
  42. package/dist/accessi-module/Dtos/RegisterResponse.js +3 -3
  43. package/dist/accessi-module/Dtos/RegisterResponse.js.map +1 -1
  44. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.d.ts +4 -0
  45. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.js +36 -0
  46. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.js.map +1 -0
  47. package/dist/accessi-module/Dtos/UserDto.js +5 -1
  48. package/dist/accessi-module/Dtos/UserDto.js.map +1 -1
  49. package/dist/accessi-module/Dtos/UserGrantsResponse.d.ts +5 -0
  50. package/dist/accessi-module/Dtos/UserGrantsResponse.js +27 -0
  51. package/dist/accessi-module/Dtos/UserGrantsResponse.js.map +1 -0
  52. package/dist/accessi-module/Dtos/index.d.ts +7 -0
  53. package/dist/accessi-module/Dtos/index.js +7 -0
  54. package/dist/accessi-module/Dtos/index.js.map +1 -1
  55. package/dist/accessi-module/Services/FiltriService/FiltriService.js +0 -7
  56. package/dist/accessi-module/Services/FiltriService/FiltriService.js.map +1 -1
  57. package/dist/accessi-module/Services/UserService/UserService.js +2 -100
  58. package/dist/accessi-module/Services/UserService/UserService.js.map +1 -1
  59. package/dist/accessi-module/index.js +2 -0
  60. package/dist/accessi-module/index.js.map +1 -1
  61. package/dist/emilsoftware-utilities-2.0.0-dev.12.tgz +0 -0
  62. package/dist/firebird-compat.d.ts +1 -0
  63. package/dist/firebird-compat.js +2 -2
  64. package/dist/firebird-compat.js.map +1 -1
  65. package/dist/swagger/SwaggerConfig.d.ts +1 -0
  66. package/dist/swagger/SwaggerConfig.js +16 -5
  67. package/dist/swagger/SwaggerConfig.js.map +1 -1
  68. package/package.json +1 -1
  69. package/dist/emilsoftware-utilities-2.0.0-dev.10.tgz +0 -0
@@ -28,8 +28,9 @@ const swagger_1 = require("@nestjs/swagger");
28
28
  const path_1 = require("path");
29
29
  const Logger_1 = require("../../Logger");
30
30
  const Utilities_1 = require("../../Utilities");
31
+ const BaseResponse_1 = require("../Dtos/BaseResponse");
31
32
  const GetUsersResponse_1 = require("../Dtos/GetUsersResponse");
32
- const RegisterRequest_1 = require("../Dtos/RegisterRequest");
33
+ const PublicRegisterRequest_1 = require("../Dtos/PublicRegisterRequest");
33
34
  const RegisterResponse_1 = require("../Dtos/RegisterResponse");
34
35
  const SetStatoRegistrazione_1 = require("../Dtos/SetStatoRegistrazione");
35
36
  const UserDto_1 = require("../Dtos/UserDto");
@@ -186,26 +187,32 @@ __decorate([
186
187
  description: 'Lista utenti recuperata con successo',
187
188
  type: GetUsersResponse_1.GetUsersResponse,
188
189
  }),
189
- (0, swagger_1.ApiResponse)({ status: 401, description: 'Credenziali non valide' }),
190
+ (0, swagger_1.ApiResponse)({ status: 401, description: 'Credenziali non valide', type: BaseResponse_1.ErrorResponse }),
191
+ (0, swagger_1.ApiResponse)({ status: 403, description: 'Operazione non autorizzata', type: BaseResponse_1.ErrorResponse }),
192
+ (0, swagger_1.ApiResponse)({ status: 500, description: 'Errore interno del server', type: BaseResponse_1.ErrorResponse }),
190
193
  (0, swagger_1.ApiQuery)({
191
194
  name: 'email',
192
195
  required: false,
193
196
  description: "Email dell'utente da cercare",
197
+ type: String,
194
198
  }),
195
199
  (0, swagger_1.ApiQuery)({
196
200
  name: 'codiceUtente',
197
201
  required: false,
198
202
  description: "Codice dell'utente da cercare",
203
+ type: Number,
199
204
  }),
200
205
  (0, swagger_1.ApiQuery)({
201
206
  name: 'includeExtensionFields',
202
207
  required: false,
203
208
  description: 'Includi extension fields',
209
+ type: Boolean,
204
210
  }),
205
211
  (0, swagger_1.ApiQuery)({
206
212
  name: 'includeGrants',
207
213
  required: false,
208
214
  description: 'Includi permessi',
215
+ type: Boolean,
209
216
  }),
210
217
  (0, swagger_1.ApiBearerAuth)(),
211
218
  (0, common_1.UseGuards)(jwt_strategy_1.JwtSimpleGuard),
@@ -213,7 +220,7 @@ __decorate([
213
220
  __param(0, (0, common_1.Req)()),
214
221
  __param(1, (0, common_1.Res)()),
215
222
  __param(2, (0, common_1.Query)('email')),
216
- __param(3, (0, common_1.Query)('codiceUtente')),
223
+ __param(3, (0, common_1.Query)('codiceUtente', new common_1.ParseIntPipe({ optional: true }))),
217
224
  __param(4, (0, common_1.Query)('includeExtensionFields', new common_1.ParseBoolPipe({ optional: true }))),
218
225
  __param(5, (0, common_1.Query)('includeGrants', new common_1.ParseBoolPipe({ optional: true }))),
219
226
  __metadata("design:type", Function),
@@ -230,14 +237,15 @@ __decorate([
230
237
  name: 'codiceUtente',
231
238
  description: "Codice identificativo dell'utente da eliminare",
232
239
  required: true,
233
- example: '123',
240
+ example: 123,
234
241
  }),
235
- (0, swagger_1.ApiResponse)({ status: 200, description: 'Utente eliminato con successo' }),
242
+ (0, swagger_1.ApiResponse)({ status: 200, description: 'Utente eliminato con successo', type: BaseResponse_1.ActionResponse }),
236
243
  (0, swagger_1.ApiResponse)({
237
244
  status: 400,
238
245
  description: 'Errore nei parametri della richiesta',
246
+ type: BaseResponse_1.ErrorResponse,
239
247
  }),
240
- (0, swagger_1.ApiResponse)({ status: 500, description: 'Errore interno del server' }),
248
+ (0, swagger_1.ApiResponse)({ status: 500, description: 'Errore interno del server', type: BaseResponse_1.ErrorResponse }),
241
249
  (0, swagger_1.ApiBearerAuth)(),
242
250
  (0, common_1.UseGuards)(jwt_strategy_1.JwtSimpleGuard),
243
251
  (0, common_1.Delete)('delete-user/:codiceUtente'),
@@ -256,14 +264,17 @@ __decorate([
256
264
  (0, swagger_1.ApiResponse)({
257
265
  status: 200,
258
266
  description: 'Stato registrazione aggiornato con successo',
267
+ type: BaseResponse_1.ActionResponse,
259
268
  }),
260
269
  (0, swagger_1.ApiResponse)({
261
270
  status: 400,
262
271
  description: 'Errore nei parametri della richiesta',
272
+ type: BaseResponse_1.ErrorResponse,
263
273
  }),
264
274
  (0, swagger_1.ApiResponse)({
265
275
  status: 500,
266
276
  description: 'Errore interno del server',
277
+ type: BaseResponse_1.ErrorResponse,
267
278
  }),
268
279
  (0, swagger_1.ApiBody)({ type: SetStatoRegistrazione_1.SetStatoRegistrazioneDto }),
269
280
  (0, swagger_1.ApiBearerAuth)(),
@@ -282,7 +293,7 @@ __decorate([
282
293
  operationId: 'register',
283
294
  }),
284
295
  (0, swagger_1.ApiBody)({
285
- type: RegisterRequest_1.RegisterRequest,
296
+ type: PublicRegisterRequest_1.PublicRegisterRequest,
286
297
  description: "Dati necessari per la registrazione dell'utente",
287
298
  }),
288
299
  (0, swagger_1.ApiCreatedResponse)({
@@ -292,17 +303,19 @@ __decorate([
292
303
  (0, swagger_1.ApiResponse)({
293
304
  status: common_1.HttpStatus.BAD_REQUEST,
294
305
  description: 'Errore nella registrazione.',
306
+ type: BaseResponse_1.ErrorResponse,
295
307
  }),
296
308
  (0, swagger_1.ApiResponse)({
297
309
  status: common_1.HttpStatus.INTERNAL_SERVER_ERROR,
298
310
  description: 'Errore interno del server durante la registrazione o l\'invio email.',
311
+ type: BaseResponse_1.ErrorResponse,
299
312
  }),
300
313
  (0, common_1.Post)('register'),
301
314
  __param(0, (0, common_1.Req)()),
302
315
  __param(1, (0, common_1.Body)()),
303
316
  __param(2, (0, common_1.Res)()),
304
317
  __metadata("design:type", Function),
305
- __metadata("design:paramtypes", [Object, RegisterRequest_1.RegisterRequest, Object]),
318
+ __metadata("design:paramtypes", [Object, PublicRegisterRequest_1.PublicRegisterRequest, Object]),
306
319
  __metadata("design:returntype", Promise)
307
320
  ], UserController.prototype, "register", null);
308
321
  __decorate([
@@ -314,7 +327,7 @@ __decorate([
314
327
  name: 'codiceUtente',
315
328
  description: "Codice identificativo dell'utente da aggiornare",
316
329
  required: true,
317
- example: '123',
330
+ example: 123,
318
331
  }),
319
332
  (0, swagger_1.ApiBody)({
320
333
  type: UserDto_1.UserDto,
@@ -323,8 +336,11 @@ __decorate([
323
336
  (0, swagger_1.ApiResponse)({
324
337
  status: common_1.HttpStatus.OK,
325
338
  description: 'Utente aggiornato con successo',
339
+ type: BaseResponse_1.ActionResponse,
326
340
  }),
327
- (0, swagger_1.ApiResponse)({ status: 400, description: "Errore nell'aggiornamento" }),
341
+ (0, swagger_1.ApiResponse)({ status: 400, description: "Errore nell'aggiornamento", type: BaseResponse_1.ErrorResponse }),
342
+ (0, swagger_1.ApiResponse)({ status: 403, description: 'Operazione non autorizzata', type: BaseResponse_1.ErrorResponse }),
343
+ (0, swagger_1.ApiResponse)({ status: 500, description: 'Errore interno del server', type: BaseResponse_1.ErrorResponse }),
328
344
  (0, swagger_1.ApiBearerAuth)(),
329
345
  (0, common_1.UseGuards)(jwt_strategy_1.JwtSimpleGuard),
330
346
  (0, common_1.Put)('update-user/:codiceUtente'),
@@ -345,13 +361,15 @@ __decorate([
345
361
  name: 'codiceUtente',
346
362
  description: "Codice identificativo dell'utente che accetta il GDPR",
347
363
  required: true,
348
- example: '123',
364
+ example: 123,
349
365
  }),
350
366
  (0, swagger_1.ApiResponse)({
351
367
  status: 200,
352
368
  description: 'Consenso GDPR impostato con successo',
369
+ type: BaseResponse_1.ActionResponse,
353
370
  }),
354
- (0, swagger_1.ApiResponse)({ status: 400, description: 'Errore nella richiesta' }),
371
+ (0, swagger_1.ApiResponse)({ status: 400, description: 'Errore nella richiesta', type: BaseResponse_1.ErrorResponse }),
372
+ (0, swagger_1.ApiResponse)({ status: 403, description: 'Operazione non autorizzata', type: BaseResponse_1.ErrorResponse }),
355
373
  (0, swagger_1.ApiBearerAuth)(),
356
374
  (0, common_1.UseGuards)(jwt_strategy_1.JwtSimpleGuard),
357
375
  (0, common_1.Patch)('set-gdpr/:codiceUtente'),
@@ -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 Body,\n Controller,\n Delete,\n Get,\n HttpException,\n HttpStatus,\n Param,\n ParseBoolPipe,\n ParseIntPipe,\n Patch,\n Post,\n Put,\n Query,\n Inject,\n Req,\n Res,\n UseGuards,\n} from '@nestjs/common';\nimport { Request, Response } from 'express';\nimport {\n ApiBearerAuth,\n ApiBody,\n ApiCreatedResponse,\n ApiOperation,\n ApiParam,\n ApiQuery,\n ApiResponse,\n ApiTags,\n} from '@nestjs/swagger';\nimport { join } from 'path';\nimport { Logger } from '../../Logger';\nimport { RestUtilities } from '../../Utilities';\nimport { AccessiOptions } from '../AccessiModule';\nimport { GetUsersResponse } from '../Dtos/GetUsersResponse';\nimport { RegisterRequest } from '../Dtos/RegisterRequest';\nimport { RegisterResponse } from '../Dtos/RegisterResponse';\nimport { SetStatoRegistrazioneDto } from '../Dtos/SetStatoRegistrazione';\nimport { UserDto } from '../Dtos/UserDto';\nimport { EmailService } from '../Services/EmailService/EmailService';\nimport { UserService } from '../Services/UserService/UserService';\nimport { JwtSimpleGuard } from '../jwt/jwt.strategy';\nimport {\n checkPublicAuthRateLimit,\n sendPublicAuthRateLimitExceeded,\n} from '../security/publicAuthRateLimit';\nimport {\n ensureSelfOrSuperUser,\n ensureSuperUser,\n getAuthenticatedAccessiUser,\n hasPrivilegedUserChanges,\n} from '../security/accessControl';\n\n@ApiTags('User')\n@Controller('accessi/user')\nexport class UserController {\n private readonly logger = new Logger(UserController.name);\n\n constructor(\n @Inject('ACCESSI_OPTIONS') private readonly accessiOptions: AccessiOptions,\n private readonly userService: UserService,\n private readonly emailService: EmailService,\n ) {}\n\n private sendControllerError(res: Response, error: unknown) {\n const status =\n error instanceof HttpException ? error.getStatus() : HttpStatus.INTERNAL_SERVER_ERROR;\n return RestUtilities.sendErrorMessage(res, error, UserController.name, status);\n }\n\n @ApiOperation({\n summary: 'Serve 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',\n })\n @ApiQuery({\n name: 'includeGrants',\n required: false,\n description: 'Includi permessi',\n })\n @ApiBearerAuth()\n @UseGuards(JwtSimpleGuard)\n @Get('get-users')\n async getUsers(\n @Req() request: Request,\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 ensureSuperUser(\n getAuthenticatedAccessiUser(request),\n 'Solo gli amministratori possono consultare gli utenti.',\n );\n\n const filters = { email, codiceUtente };\n const options = {\n includeExtensionFields: includeExtensionFields ?? true,\n includeGrants: includeGrants ?? true,\n };\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 this.sendControllerError(res, error);\n }\n }\n\n @ApiOperation({\n summary: 'Elimina un utente',\n operationId: 'deleteUser',\n description: 'Imposta lo stato di un utente a eliminato senza rimuovere i record.',\n })\n @ApiParam({\n name: 'codiceUtente',\n description: \"Codice identificativo dell'utente da eliminare\",\n required: true,\n example: '123',\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 @ApiBearerAuth()\n @UseGuards(JwtSimpleGuard)\n @Delete('delete-user/:codiceUtente')\n async deleteUser(\n @Req() request: Request,\n @Param('codiceUtente', ParseIntPipe) codiceUtente: number,\n @Res() res: Response,\n ) {\n try {\n ensureSuperUser(\n getAuthenticatedAccessiUser(request),\n 'Solo gli amministratori possono eliminare utenti.',\n );\n\n await this.userService.deleteUser(codiceUtente);\n return RestUtilities.sendOKMessage(res, \"L'utente e' stato eliminato con successo.\");\n } catch (error) {\n return this.sendControllerError(res, error);\n }\n }\n\n @ApiOperation({\n summary: 'Imposta lo stato di registrazione di un utente',\n operationId: 'setStatoRegistrazione',\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 @ApiBearerAuth()\n @UseGuards(JwtSimpleGuard)\n @Post('set-stato')\n async setStatoRegistrazione(\n @Req() request: Request,\n @Body() body: SetStatoRegistrazioneDto,\n @Res() res: Response,\n ) {\n try {\n ensureSuperUser(\n getAuthenticatedAccessiUser(request),\n 'Solo gli amministratori possono modificare lo stato di registrazione.',\n );\n\n const { codiceUtente, statoRegistrazione } = body;\n if (!codiceUtente) throw new Error('Il codice utente e\\' obbligatorio.');\n if (statoRegistrazione === undefined) {\n throw new Error('Lo stato registrazione e\\' obbligatorio.');\n }\n\n await this.userService.setStato(codiceUtente, statoRegistrazione);\n return RestUtilities.sendOKMessage(\n res,\n `Lo stato dell'utente ${codiceUtente} e' stato aggiornato a ${statoRegistrazione}.`,\n );\n } catch (error) {\n return this.sendControllerError(res, error);\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 reset password.',\n type: RegisterResponse,\n })\n @ApiResponse({\n status: HttpStatus.BAD_REQUEST,\n description: 'Errore nella registrazione.',\n })\n @ApiResponse({\n status: HttpStatus.INTERNAL_SERVER_ERROR,\n description: 'Errore interno del server durante la registrazione o l\\'invio 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 rateLimitDecision = checkPublicAuthRateLimit(\n this.accessiOptions,\n 'register',\n request,\n [registrationData?.email],\n );\n if (!rateLimitDecision.allowed) {\n return sendPublicAuthRateLimitExceeded(res, rateLimitDecision.retryAfterSeconds);\n }\n\n const codiceUtente = await this.userService.register(registrationData, {\n allowPrivilegedFields: false,\n });\n\n await this.emailService.sendPasswordResetEmail(registrationData.email);\n return RestUtilities.sendBaseResponse(res, codiceUtente);\n } catch (error) {\n const status =\n error instanceof HttpException ? error.getStatus() : HttpStatus.BAD_REQUEST;\n return RestUtilities.sendErrorMessage(res, error, UserController.name, status);\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: '123',\n })\n @ApiBody({\n type: UserDto,\n description: \"Dati aggiornati dell'utente\",\n })\n @ApiResponse({\n status: HttpStatus.OK,\n description: 'Utente aggiornato con successo',\n })\n @ApiResponse({ status: 400, description: \"Errore nell'aggiornamento\" })\n @ApiBearerAuth()\n @UseGuards(JwtSimpleGuard)\n @Put('update-user/:codiceUtente')\n async updateUtente(\n @Req() request: Request,\n @Param('codiceUtente', ParseIntPipe) codiceUtente: number,\n @Body() user: UserDto,\n @Res() res: Response,\n ) {\n try {\n const authenticatedUser = getAuthenticatedAccessiUser(request);\n const isPrivilegedUpdate = hasPrivilegedUserChanges(user);\n\n if (isPrivilegedUpdate) {\n ensureSuperUser(\n authenticatedUser,\n 'Solo gli amministratori possono modificare ruoli, permessi o flag privilegiati.',\n );\n } else {\n ensureSelfOrSuperUser(\n authenticatedUser,\n codiceUtente,\n 'Puoi modificare solo il tuo profilo.',\n );\n }\n\n if (user.codiceUtente !== undefined && user.codiceUtente !== codiceUtente) {\n throw new Error('Il codice utente nel body non coincide con quello del path.');\n }\n\n await this.userService.updateUser(codiceUtente, user, {\n allowPrivilegedChanges: authenticatedUser.flagSuper,\n });\n\n return RestUtilities.sendOKMessage(\n res,\n `L'utente ${codiceUtente} e' stato aggiornato con successo.`,\n );\n } catch (error) {\n return this.sendControllerError(res, error);\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: '123',\n })\n @ApiResponse({\n status: 200,\n description: 'Consenso GDPR impostato con successo',\n })\n @ApiResponse({ status: 400, description: 'Errore nella richiesta' })\n @ApiBearerAuth()\n @UseGuards(JwtSimpleGuard)\n @Patch('set-gdpr/:codiceUtente')\n async setGdpr(\n @Req() request: Request,\n @Param('codiceUtente', ParseIntPipe) codiceUtente: number,\n @Res() res: Response,\n ) {\n try {\n ensureSelfOrSuperUser(\n getAuthenticatedAccessiUser(request),\n codiceUtente,\n 'Puoi impostare il GDPR solo sul tuo utente.',\n );\n\n await this.userService.setGdpr(codiceUtente);\n return RestUtilities.sendOKMessage(res, `L'utente ${codiceUtente} ha accettato il GDPR.`);\n } catch (error) {\n return this.sendControllerError(res, error);\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 {\n Body,\n Controller,\n Delete,\n Get,\n HttpException,\n HttpStatus,\n Param,\n ParseBoolPipe,\n ParseIntPipe,\n Patch,\n Post,\n Put,\n Query,\n Inject,\n Req,\n Res,\n UseGuards,\n} from '@nestjs/common';\nimport { Request, Response } from 'express';\nimport {\n ApiBearerAuth,\n ApiBody,\n ApiCreatedResponse,\n ApiOperation,\n ApiParam,\n ApiQuery,\n ApiResponse,\n ApiTags,\n} from '@nestjs/swagger';\nimport { join } from 'path';\nimport { Logger } from '../../Logger';\nimport { RestUtilities } from '../../Utilities';\nimport { AccessiOptions } from '../AccessiModule';\nimport { ActionResponse, ErrorResponse } from '../Dtos/BaseResponse';\nimport { GetUsersResponse } from '../Dtos/GetUsersResponse';\nimport { PublicRegisterRequest } from '../Dtos/PublicRegisterRequest';\nimport { RegisterResponse } from '../Dtos/RegisterResponse';\nimport { SetStatoRegistrazioneDto } from '../Dtos/SetStatoRegistrazione';\nimport { UserDto } from '../Dtos/UserDto';\nimport { EmailService } from '../Services/EmailService/EmailService';\nimport { UserService } from '../Services/UserService/UserService';\nimport { JwtSimpleGuard } from '../jwt/jwt.strategy';\nimport {\n checkPublicAuthRateLimit,\n sendPublicAuthRateLimitExceeded,\n} from '../security/publicAuthRateLimit';\nimport {\n ensureSelfOrSuperUser,\n ensureSuperUser,\n getAuthenticatedAccessiUser,\n hasPrivilegedUserChanges,\n} from '../security/accessControl';\n\n@ApiTags('User')\n@Controller('accessi/user')\nexport class UserController {\n private readonly logger = new Logger(UserController.name);\n\n constructor(\n @Inject('ACCESSI_OPTIONS') private readonly accessiOptions: AccessiOptions,\n private readonly userService: UserService,\n private readonly emailService: EmailService,\n ) {}\n\n private sendControllerError(res: Response, error: unknown) {\n const status =\n error instanceof HttpException ? error.getStatus() : HttpStatus.INTERNAL_SERVER_ERROR;\n return RestUtilities.sendErrorMessage(res, error, UserController.name, status);\n }\n\n @ApiOperation({\n summary: 'Serve 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', type: ErrorResponse })\n @ApiResponse({ status: 403, description: 'Operazione non autorizzata', type: ErrorResponse })\n @ApiResponse({ status: 500, description: 'Errore interno del server', type: ErrorResponse })\n @ApiQuery({\n name: 'email',\n required: false,\n description: \"Email dell'utente da cercare\",\n type: String,\n })\n @ApiQuery({\n name: 'codiceUtente',\n required: false,\n description: \"Codice dell'utente da cercare\",\n type: Number,\n })\n @ApiQuery({\n name: 'includeExtensionFields',\n required: false,\n description: 'Includi extension fields',\n type: Boolean,\n })\n @ApiQuery({\n name: 'includeGrants',\n required: false,\n description: 'Includi permessi',\n type: Boolean,\n })\n @ApiBearerAuth()\n @UseGuards(JwtSimpleGuard)\n @Get('get-users')\n async getUsers(\n @Req() request: Request,\n @Res() res: Response,\n @Query('email') email?: string,\n @Query('codiceUtente', new ParseIntPipe({ optional: true })) 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 ensureSuperUser(\n getAuthenticatedAccessiUser(request),\n 'Solo gli amministratori possono consultare gli utenti.',\n );\n\n const filters = { email, codiceUtente };\n const options = {\n includeExtensionFields: includeExtensionFields ?? true,\n includeGrants: includeGrants ?? true,\n };\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 this.sendControllerError(res, error);\n }\n }\n\n @ApiOperation({\n summary: 'Elimina un utente',\n operationId: 'deleteUser',\n description: 'Imposta lo stato di un utente a eliminato senza rimuovere i record.',\n })\n @ApiParam({\n name: 'codiceUtente',\n description: \"Codice identificativo dell'utente da eliminare\",\n required: true,\n example: 123,\n })\n @ApiResponse({ status: 200, description: 'Utente eliminato con successo', type: ActionResponse })\n @ApiResponse({\n status: 400,\n description: 'Errore nei parametri della richiesta',\n type: ErrorResponse,\n })\n @ApiResponse({ status: 500, description: 'Errore interno del server', type: ErrorResponse })\n @ApiBearerAuth()\n @UseGuards(JwtSimpleGuard)\n @Delete('delete-user/:codiceUtente')\n async deleteUser(\n @Req() request: Request,\n @Param('codiceUtente', ParseIntPipe) codiceUtente: number,\n @Res() res: Response,\n ) {\n try {\n ensureSuperUser(\n getAuthenticatedAccessiUser(request),\n 'Solo gli amministratori possono eliminare utenti.',\n );\n\n await this.userService.deleteUser(codiceUtente);\n return RestUtilities.sendOKMessage(res, \"L'utente e' stato eliminato con successo.\");\n } catch (error) {\n return this.sendControllerError(res, error);\n }\n }\n\n @ApiOperation({\n summary: 'Imposta lo stato di registrazione di un utente',\n operationId: 'setStatoRegistrazione',\n })\n @ApiResponse({\n status: 200,\n description: 'Stato registrazione aggiornato con successo',\n type: ActionResponse,\n })\n @ApiResponse({\n status: 400,\n description: 'Errore nei parametri della richiesta',\n type: ErrorResponse,\n })\n @ApiResponse({\n status: 500,\n description: 'Errore interno del server',\n type: ErrorResponse,\n })\n @ApiBody({ type: SetStatoRegistrazioneDto })\n @ApiBearerAuth()\n @UseGuards(JwtSimpleGuard)\n @Post('set-stato')\n async setStatoRegistrazione(\n @Req() request: Request,\n @Body() body: SetStatoRegistrazioneDto,\n @Res() res: Response,\n ) {\n try {\n ensureSuperUser(\n getAuthenticatedAccessiUser(request),\n 'Solo gli amministratori possono modificare lo stato di registrazione.',\n );\n\n const { codiceUtente, statoRegistrazione } = body;\n if (!codiceUtente) throw new Error('Il codice utente e\\' obbligatorio.');\n if (statoRegistrazione === undefined) {\n throw new Error('Lo stato registrazione e\\' obbligatorio.');\n }\n\n await this.userService.setStato(codiceUtente, statoRegistrazione);\n return RestUtilities.sendOKMessage(\n res,\n `Lo stato dell'utente ${codiceUtente} e' stato aggiornato a ${statoRegistrazione}.`,\n );\n } catch (error) {\n return this.sendControllerError(res, error);\n }\n }\n\n @ApiOperation({\n summary: 'Registra un nuovo utente',\n operationId: 'register',\n })\n @ApiBody({\n type: PublicRegisterRequest,\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 reset password.',\n type: RegisterResponse,\n })\n @ApiResponse({\n status: HttpStatus.BAD_REQUEST,\n description: 'Errore nella registrazione.',\n type: ErrorResponse,\n })\n @ApiResponse({\n status: HttpStatus.INTERNAL_SERVER_ERROR,\n description: 'Errore interno del server durante la registrazione o l\\'invio email.',\n type: ErrorResponse,\n })\n @Post('register')\n async register(\n @Req() request: Request,\n @Body() registrationData: PublicRegisterRequest,\n @Res() res: Response,\n ) {\n try {\n const rateLimitDecision = checkPublicAuthRateLimit(\n this.accessiOptions,\n 'register',\n request,\n [registrationData?.email],\n );\n if (!rateLimitDecision.allowed) {\n return sendPublicAuthRateLimitExceeded(res, rateLimitDecision.retryAfterSeconds);\n }\n\n const codiceUtente = await this.userService.register(registrationData, {\n allowPrivilegedFields: false,\n });\n\n await this.emailService.sendPasswordResetEmail(registrationData.email);\n return RestUtilities.sendBaseResponse(res, codiceUtente);\n } catch (error) {\n const status =\n error instanceof HttpException ? error.getStatus() : HttpStatus.BAD_REQUEST;\n return RestUtilities.sendErrorMessage(res, error, UserController.name, status);\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: 123,\n })\n @ApiBody({\n type: UserDto,\n description: \"Dati aggiornati dell'utente\",\n })\n @ApiResponse({\n status: HttpStatus.OK,\n description: 'Utente aggiornato con successo',\n type: ActionResponse,\n })\n @ApiResponse({ status: 400, description: \"Errore nell'aggiornamento\", type: ErrorResponse })\n @ApiResponse({ status: 403, description: 'Operazione non autorizzata', type: ErrorResponse })\n @ApiResponse({ status: 500, description: 'Errore interno del server', type: ErrorResponse })\n @ApiBearerAuth()\n @UseGuards(JwtSimpleGuard)\n @Put('update-user/:codiceUtente')\n async updateUtente(\n @Req() request: Request,\n @Param('codiceUtente', ParseIntPipe) codiceUtente: number,\n @Body() user: UserDto,\n @Res() res: Response,\n ) {\n try {\n const authenticatedUser = getAuthenticatedAccessiUser(request);\n const isPrivilegedUpdate = hasPrivilegedUserChanges(user);\n\n if (isPrivilegedUpdate) {\n ensureSuperUser(\n authenticatedUser,\n 'Solo gli amministratori possono modificare ruoli, permessi o flag privilegiati.',\n );\n } else {\n ensureSelfOrSuperUser(\n authenticatedUser,\n codiceUtente,\n 'Puoi modificare solo il tuo profilo.',\n );\n }\n\n if (user.codiceUtente !== undefined && user.codiceUtente !== codiceUtente) {\n throw new Error('Il codice utente nel body non coincide con quello del path.');\n }\n\n await this.userService.updateUser(codiceUtente, user, {\n allowPrivilegedChanges: authenticatedUser.flagSuper,\n });\n\n return RestUtilities.sendOKMessage(\n res,\n `L'utente ${codiceUtente} e' stato aggiornato con successo.`,\n );\n } catch (error) {\n return this.sendControllerError(res, error);\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: 123,\n })\n @ApiResponse({\n status: 200,\n description: 'Consenso GDPR impostato con successo',\n type: ActionResponse,\n })\n @ApiResponse({ status: 400, description: 'Errore nella richiesta', type: ErrorResponse })\n @ApiResponse({ status: 403, description: 'Operazione non autorizzata', type: ErrorResponse })\n @ApiBearerAuth()\n @UseGuards(JwtSimpleGuard)\n @Patch('set-gdpr/:codiceUtente')\n async setGdpr(\n @Req() request: Request,\n @Param('codiceUtente', ParseIntPipe) codiceUtente: number,\n @Res() res: Response,\n ) {\n try {\n ensureSelfOrSuperUser(\n getAuthenticatedAccessiUser(request),\n codiceUtente,\n 'Puoi impostare il GDPR solo sul tuo utente.',\n );\n\n await this.userService.setGdpr(codiceUtente);\n return RestUtilities.sendOKMessage(res, `L'utente ${codiceUtente} ha accettato il GDPR.`);\n } catch (error) {\n return this.sendControllerError(res, error);\n }\n }\n}\n"]}
@@ -0,0 +1,10 @@
1
+ export declare class AuthenticatedUserPayloadDto {
2
+ codiceUtente: number;
3
+ email?: string;
4
+ flagSuper: boolean;
5
+ flagAdminConfigurator: boolean;
6
+ statoRegistrazione: number;
7
+ }
8
+ export declare class AuthenticatedTokenPayloadDto {
9
+ userData: AuthenticatedUserPayloadDto;
10
+ }
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AuthenticatedTokenPayloadDto = exports.AuthenticatedUserPayloadDto = void 0;
13
+ const swagger_1 = require("@nestjs/swagger");
14
+ const class_validator_1 = require("class-validator");
15
+ class AuthenticatedUserPayloadDto {
16
+ }
17
+ exports.AuthenticatedUserPayloadDto = AuthenticatedUserPayloadDto;
18
+ __decorate([
19
+ (0, swagger_1.ApiProperty)({ example: 123 }),
20
+ (0, class_validator_1.IsInt)(),
21
+ (0, class_validator_1.Min)(1),
22
+ __metadata("design:type", Number)
23
+ ], AuthenticatedUserPayloadDto.prototype, "codiceUtente", void 0);
24
+ __decorate([
25
+ (0, swagger_1.ApiPropertyOptional)({ example: 'mario.rossi@dev.it' }),
26
+ (0, class_validator_1.IsOptional)(),
27
+ (0, class_validator_1.IsString)(),
28
+ __metadata("design:type", String)
29
+ ], AuthenticatedUserPayloadDto.prototype, "email", void 0);
30
+ __decorate([
31
+ (0, swagger_1.ApiProperty)({ example: false }),
32
+ (0, class_validator_1.IsBoolean)(),
33
+ __metadata("design:type", Boolean)
34
+ ], AuthenticatedUserPayloadDto.prototype, "flagSuper", void 0);
35
+ __decorate([
36
+ (0, swagger_1.ApiProperty)({ example: false }),
37
+ (0, class_validator_1.IsBoolean)(),
38
+ __metadata("design:type", Boolean)
39
+ ], AuthenticatedUserPayloadDto.prototype, "flagAdminConfigurator", void 0);
40
+ __decorate([
41
+ (0, swagger_1.ApiProperty)({ example: 1 }),
42
+ (0, class_validator_1.IsInt)(),
43
+ __metadata("design:type", Number)
44
+ ], AuthenticatedUserPayloadDto.prototype, "statoRegistrazione", void 0);
45
+ class AuthenticatedTokenPayloadDto {
46
+ }
47
+ exports.AuthenticatedTokenPayloadDto = AuthenticatedTokenPayloadDto;
48
+ __decorate([
49
+ (0, swagger_1.ApiProperty)({ type: AuthenticatedUserPayloadDto }),
50
+ __metadata("design:type", AuthenticatedUserPayloadDto)
51
+ ], AuthenticatedTokenPayloadDto.prototype, "userData", void 0);
52
+ //# sourceMappingURL=AuthenticatedUserPayloadDto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthenticatedUserPayloadDto.js","sourceRoot":"","sources":["../../../src/accessi-module/Dtos/AuthenticatedUserPayloadDto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAAmE;AACnE,qDAA8E;AAE9E,MAAa,2BAA2B;CAsBvC;AAtBD,kEAsBC;AAlBC;IAHC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAC7B,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAG,EAAC,CAAC,CAAC;;iEACc;AAKrB;IAHC,IAAA,6BAAmB,EAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC;IACtD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;0DACI;AAIf;IAFC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC/B,IAAA,2BAAS,GAAE;;8DACO;AAInB;IAFC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC/B,IAAA,2BAAS,GAAE;;0EACmB;AAI/B;IAFC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAC3B,IAAA,uBAAK,GAAE;;uEACmB;AAG7B,MAAa,4BAA4B;CAGxC;AAHD,oEAGC;AADC;IADC,IAAA,qBAAW,EAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE,CAAC;8BACzC,2BAA2B;8DAAC","sourcesContent":["import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';\nimport { IsBoolean, IsInt, IsOptional, IsString, Min } from 'class-validator';\n\nexport class AuthenticatedUserPayloadDto {\n @ApiProperty({ example: 123 })\n @IsInt()\n @Min(1)\n codiceUtente: number;\n\n @ApiPropertyOptional({ example: 'mario.rossi@dev.it' })\n @IsOptional()\n @IsString()\n email?: string;\n\n @ApiProperty({ example: false })\n @IsBoolean()\n flagSuper: boolean;\n\n @ApiProperty({ example: false })\n @IsBoolean()\n flagAdminConfigurator: boolean;\n\n @ApiProperty({ example: 1 })\n @IsInt()\n statoRegistrazione: number;\n}\n\nexport class AuthenticatedTokenPayloadDto {\n @ApiProperty({ type: AuthenticatedUserPayloadDto })\n userData: AuthenticatedUserPayloadDto;\n}\n"]}
@@ -4,4 +4,24 @@ export declare class Status {
4
4
  }
5
5
  export declare abstract class BaseResponse {
6
6
  Status: Status;
7
+ Message?: string;
8
+ }
9
+ export declare class ActionResponse {
10
+ severity: string;
11
+ status: number;
12
+ statusCode: number;
13
+ message: string;
14
+ }
15
+ export declare class ErrorResponse {
16
+ severity: string;
17
+ status: number;
18
+ statusCode: number;
19
+ message: string;
20
+ error: string;
21
+ }
22
+ export declare class PasswordExpiredResponse {
23
+ severity: string;
24
+ statusCode: number;
25
+ code: string;
26
+ message: string;
7
27
  }
@@ -9,7 +9,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.BaseResponse = exports.Status = void 0;
12
+ exports.PasswordExpiredResponse = exports.ErrorResponse = exports.ActionResponse = exports.BaseResponse = exports.Status = void 0;
13
13
  const swagger_1 = require("@nestjs/swagger");
14
14
  const class_transformer_1 = require("class-transformer");
15
15
  const class_validator_1 = require("class-validator");
@@ -36,4 +36,90 @@ __decorate([
36
36
  (0, class_validator_1.IsObject)(),
37
37
  __metadata("design:type", Status)
38
38
  ], BaseResponse.prototype, "Status", void 0);
39
+ __decorate([
40
+ (0, swagger_1.ApiPropertyOptional)({
41
+ example: 'Dati recuperati con successo.',
42
+ description: 'Messaggio informativo restituito dalla libreria quando presente.',
43
+ }),
44
+ (0, class_validator_1.IsOptional)(),
45
+ (0, class_validator_1.IsString)(),
46
+ __metadata("design:type", String)
47
+ ], BaseResponse.prototype, "Message", void 0);
48
+ class ActionResponse {
49
+ }
50
+ exports.ActionResponse = ActionResponse;
51
+ __decorate([
52
+ (0, swagger_1.ApiProperty)({ example: 'success' }),
53
+ (0, class_validator_1.IsString)(),
54
+ __metadata("design:type", String)
55
+ ], ActionResponse.prototype, "severity", void 0);
56
+ __decorate([
57
+ (0, swagger_1.ApiProperty)({ example: 200 }),
58
+ (0, class_validator_1.IsNumber)(),
59
+ __metadata("design:type", Number)
60
+ ], ActionResponse.prototype, "status", void 0);
61
+ __decorate([
62
+ (0, swagger_1.ApiProperty)({ example: 0 }),
63
+ (0, class_validator_1.IsNumber)(),
64
+ __metadata("design:type", Number)
65
+ ], ActionResponse.prototype, "statusCode", void 0);
66
+ __decorate([
67
+ (0, swagger_1.ApiProperty)({ example: 'Operazione completata con successo.' }),
68
+ (0, class_validator_1.IsString)(),
69
+ __metadata("design:type", String)
70
+ ], ActionResponse.prototype, "message", void 0);
71
+ class ErrorResponse {
72
+ }
73
+ exports.ErrorResponse = ErrorResponse;
74
+ __decorate([
75
+ (0, swagger_1.ApiProperty)({ example: 'error' }),
76
+ (0, class_validator_1.IsString)(),
77
+ __metadata("design:type", String)
78
+ ], ErrorResponse.prototype, "severity", void 0);
79
+ __decorate([
80
+ (0, swagger_1.ApiProperty)({ example: 400 }),
81
+ (0, class_validator_1.IsNumber)(),
82
+ __metadata("design:type", Number)
83
+ ], ErrorResponse.prototype, "status", void 0);
84
+ __decorate([
85
+ (0, swagger_1.ApiProperty)({ example: 2 }),
86
+ (0, class_validator_1.IsNumber)(),
87
+ __metadata("design:type", Number)
88
+ ], ErrorResponse.prototype, "statusCode", void 0);
89
+ __decorate([
90
+ (0, swagger_1.ApiProperty)({ example: 'An error occurred' }),
91
+ (0, class_validator_1.IsString)(),
92
+ __metadata("design:type", String)
93
+ ], ErrorResponse.prototype, "message", void 0);
94
+ __decorate([
95
+ (0, swagger_1.ApiProperty)({
96
+ example: '[UserController]: Error: Parametro non valido',
97
+ description: 'Dettaglio testuale dell errore con tag sorgente.',
98
+ }),
99
+ (0, class_validator_1.IsString)(),
100
+ __metadata("design:type", String)
101
+ ], ErrorResponse.prototype, "error", void 0);
102
+ class PasswordExpiredResponse {
103
+ }
104
+ exports.PasswordExpiredResponse = PasswordExpiredResponse;
105
+ __decorate([
106
+ (0, swagger_1.ApiProperty)({ example: 'warning' }),
107
+ (0, class_validator_1.IsString)(),
108
+ __metadata("design:type", String)
109
+ ], PasswordExpiredResponse.prototype, "severity", void 0);
110
+ __decorate([
111
+ (0, swagger_1.ApiProperty)({ example: 1 }),
112
+ (0, class_validator_1.IsNumber)(),
113
+ __metadata("design:type", Number)
114
+ ], PasswordExpiredResponse.prototype, "statusCode", void 0);
115
+ __decorate([
116
+ (0, swagger_1.ApiProperty)({ example: 'PASSWORD_EXPIRED' }),
117
+ (0, class_validator_1.IsString)(),
118
+ __metadata("design:type", String)
119
+ ], PasswordExpiredResponse.prototype, "code", void 0);
120
+ __decorate([
121
+ (0, swagger_1.ApiProperty)({ example: "Password scaduta. E' necessario aggiornarla" }),
122
+ (0, class_validator_1.IsString)(),
123
+ __metadata("design:type", String)
124
+ ], PasswordExpiredResponse.prototype, "message", void 0);
39
125
  //# sourceMappingURL=BaseResponse.js.map
@@ -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,6CAAmE;AACnE,yDAAyC;AACzC,qDAA2F;AAE3F,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;CAcjC;AAdD,oCAcC;AATC;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;AAQf;IANC,IAAA,6BAAmB,EAAC;QACnB,OAAO,EAAE,+BAA+B;QACxC,WAAW,EAAE,kEAAkE;KAChF,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;6CACM;AAGnB,MAAa,cAAc;CAgB1B;AAhBD,wCAgBC;AAbC;IAFC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IACnC,IAAA,0BAAQ,GAAE;;gDACM;AAIjB;IAFC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAC7B,IAAA,0BAAQ,GAAE;;8CACI;AAIf;IAFC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAC3B,IAAA,0BAAQ,GAAE;;kDACQ;AAInB;IAFC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,qCAAqC,EAAE,CAAC;IAC/D,IAAA,0BAAQ,GAAE;;+CACK;AAGlB,MAAa,aAAa;CAuBzB;AAvBD,sCAuBC;AApBC;IAFC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACjC,IAAA,0BAAQ,GAAE;;+CACM;AAIjB;IAFC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAC7B,IAAA,0BAAQ,GAAE;;6CACI;AAIf;IAFC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAC3B,IAAA,0BAAQ,GAAE;;iDACQ;AAInB;IAFC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC7C,IAAA,0BAAQ,GAAE;;8CACK;AAOhB;IALC,IAAA,qBAAW,EAAC;QACX,OAAO,EAAE,+CAA+C;QACxD,WAAW,EAAE,kDAAkD;KAChE,CAAC;IACD,IAAA,0BAAQ,GAAE;;4CACG;AAGhB,MAAa,uBAAuB;CAgBnC;AAhBD,0DAgBC;AAbC;IAFC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IACnC,IAAA,0BAAQ,GAAE;;yDACM;AAIjB;IAFC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAC3B,IAAA,0BAAQ,GAAE;;2DACQ;AAInB;IAFC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC5C,IAAA,0BAAQ,GAAE;;qDACE;AAIb;IAFC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,6CAA6C,EAAE,CAAC;IACvE,IAAA,0BAAQ,GAAE;;wDACK","sourcesContent":["import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';\nimport { Type } from 'class-transformer';\nimport { IsNumber, IsObject, IsOptional, 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 @ApiPropertyOptional({\n example: 'Dati recuperati con successo.',\n description: 'Messaggio informativo restituito dalla libreria quando presente.',\n })\n @IsOptional()\n @IsString()\n Message?: string;\n}\n\nexport class ActionResponse {\n @ApiProperty({ example: 'success' })\n @IsString()\n severity: string;\n\n @ApiProperty({ example: 200 })\n @IsNumber()\n status: number;\n\n @ApiProperty({ example: 0 })\n @IsNumber()\n statusCode: number;\n\n @ApiProperty({ example: 'Operazione completata con successo.' })\n @IsString()\n message: string;\n}\n\nexport class ErrorResponse {\n @ApiProperty({ example: 'error' })\n @IsString()\n severity: string;\n\n @ApiProperty({ example: 400 })\n @IsNumber()\n status: number;\n\n @ApiProperty({ example: 2 })\n @IsNumber()\n statusCode: number;\n\n @ApiProperty({ example: 'An error occurred' })\n @IsString()\n message: string;\n\n @ApiProperty({\n example: '[UserController]: Error: Parametro non valido',\n description: 'Dettaglio testuale dell errore con tag sorgente.',\n })\n @IsString()\n error: string;\n}\n\nexport class PasswordExpiredResponse {\n @ApiProperty({ example: 'warning' })\n @IsString()\n severity: string;\n\n @ApiProperty({ example: 1 })\n @IsNumber()\n statusCode: number;\n\n @ApiProperty({ example: 'PASSWORD_EXPIRED' })\n @IsString()\n code: string;\n\n @ApiProperty({ example: \"Password scaduta. E' necessario aggiornarla\" })\n @IsString()\n message: string;\n}\n"]}
@@ -0,0 +1,3 @@
1
+ export declare class ConfirmResetPasswordRequest {
2
+ newPassword: string;
3
+ }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ConfirmResetPasswordRequest = void 0;
13
+ const swagger_1 = require("@nestjs/swagger");
14
+ const class_validator_1 = require("class-validator");
15
+ class ConfirmResetPasswordRequest {
16
+ }
17
+ exports.ConfirmResetPasswordRequest = ConfirmResetPasswordRequest;
18
+ __decorate([
19
+ (0, swagger_1.ApiProperty)({
20
+ description: 'Nuova password da impostare.',
21
+ minLength: 8,
22
+ maxLength: 100,
23
+ example: 'PasswordSicura123!',
24
+ }),
25
+ (0, class_validator_1.IsString)({ message: 'La nuova password deve essere una stringa.' }),
26
+ (0, class_validator_1.Length)(8, 100, {
27
+ message: 'La nuova password deve essere compresa tra 8 e 100 caratteri.',
28
+ }),
29
+ __metadata("design:type", String)
30
+ ], ConfirmResetPasswordRequest.prototype, "newPassword", void 0);
31
+ //# sourceMappingURL=ConfirmResetPasswordRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfirmResetPasswordRequest.js","sourceRoot":"","sources":["../../../src/accessi-module/Dtos/ConfirmResetPasswordRequest.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAC9C,qDAAmD;AAEnD,MAAa,2BAA2B;CAYvC;AAZD,kEAYC;AADC;IAVC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,8BAA8B;QAC3C,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,GAAG;QACd,OAAO,EAAE,oBAAoB;KAC9B,CAAC;IACD,IAAA,0BAAQ,EAAC,EAAE,OAAO,EAAE,4CAA4C,EAAE,CAAC;IACnE,IAAA,wBAAM,EAAC,CAAC,EAAE,GAAG,EAAE;QACd,OAAO,EAAE,+DAA+D;KACzE,CAAC;;gEACkB","sourcesContent":["import { ApiProperty } from '@nestjs/swagger';\nimport { IsString, Length } from 'class-validator';\n\nexport class ConfirmResetPasswordRequest {\n @ApiProperty({\n description: 'Nuova password da impostare.',\n minLength: 8,\n maxLength: 100,\n example: 'PasswordSicura123!',\n })\n @IsString({ message: 'La nuova password deve essere una stringa.' })\n @Length(8, 100, {\n message: 'La nuova password deve essere compresa tra 8 e 100 caratteri.',\n })\n newPassword: string;\n}\n"]}
@@ -0,0 +1,3 @@
1
+ export declare class GetUserByTokenRequest {
2
+ token: string;
3
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.GetUserByTokenRequest = void 0;
13
+ const swagger_1 = require("@nestjs/swagger");
14
+ const class_validator_1 = require("class-validator");
15
+ class GetUserByTokenRequest {
16
+ }
17
+ exports.GetUserByTokenRequest = GetUserByTokenRequest;
18
+ __decorate([
19
+ (0, swagger_1.ApiProperty)({
20
+ description: "JWT dell'utente.",
21
+ example: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...',
22
+ }),
23
+ (0, class_validator_1.IsString)({ message: 'Il token deve essere una stringa.' }),
24
+ __metadata("design:type", String)
25
+ ], GetUserByTokenRequest.prototype, "token", void 0);
26
+ //# sourceMappingURL=GetUserByTokenRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetUserByTokenRequest.js","sourceRoot":"","sources":["../../../src/accessi-module/Dtos/GetUserByTokenRequest.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAC9C,qDAA2C;AAE3C,MAAa,qBAAqB;CAOjC;AAPD,sDAOC;AADC;IALC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,kBAAkB;QAC/B,OAAO,EAAE,yCAAyC;KACnD,CAAC;IACD,IAAA,0BAAQ,EAAC,EAAE,OAAO,EAAE,mCAAmC,EAAE,CAAC;;oDAC7C","sourcesContent":["import { ApiProperty } from '@nestjs/swagger';\nimport { IsString } from 'class-validator';\n\nexport class GetUserByTokenRequest {\n @ApiProperty({\n description: \"JWT dell'utente.\",\n example: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...',\n })\n @IsString({ message: 'Il token deve essere una stringa.' })\n token: string;\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import { BaseResponse } from './BaseResponse';
2
+ import { AuthenticatedTokenPayloadDto } from './AuthenticatedUserPayloadDto';
3
+ export declare class GetUserByTokenResponse extends BaseResponse {
4
+ Result: AuthenticatedTokenPayloadDto;
5
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.GetUserByTokenResponse = void 0;
13
+ const swagger_1 = require("@nestjs/swagger");
14
+ const class_transformer_1 = require("class-transformer");
15
+ const class_validator_1 = require("class-validator");
16
+ const BaseResponse_1 = require("./BaseResponse");
17
+ const AuthenticatedUserPayloadDto_1 = require("./AuthenticatedUserPayloadDto");
18
+ class GetUserByTokenResponse extends BaseResponse_1.BaseResponse {
19
+ }
20
+ exports.GetUserByTokenResponse = GetUserByTokenResponse;
21
+ __decorate([
22
+ (0, swagger_1.ApiProperty)({ type: AuthenticatedUserPayloadDto_1.AuthenticatedTokenPayloadDto }),
23
+ (0, class_validator_1.ValidateNested)(),
24
+ (0, class_transformer_1.Type)(() => AuthenticatedUserPayloadDto_1.AuthenticatedTokenPayloadDto),
25
+ __metadata("design:type", AuthenticatedUserPayloadDto_1.AuthenticatedTokenPayloadDto)
26
+ ], GetUserByTokenResponse.prototype, "Result", void 0);
27
+ //# sourceMappingURL=GetUserByTokenResponse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetUserByTokenResponse.js","sourceRoot":"","sources":["../../../src/accessi-module/Dtos/GetUserByTokenResponse.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAC9C,yDAAyC;AACzC,qDAAiD;AACjD,iDAA8C;AAC9C,+EAA6E;AAE7E,MAAa,sBAAuB,SAAQ,2BAAY;CAKvD;AALD,wDAKC;AADC;IAHC,IAAA,qBAAW,EAAC,EAAE,IAAI,EAAE,0DAA4B,EAAE,CAAC;IACnD,IAAA,gCAAc,GAAE;IAChB,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,0DAA4B,CAAC;8BACjC,0DAA4B;sDAAC","sourcesContent":["import { ApiProperty } from '@nestjs/swagger';\nimport { Type } from 'class-transformer';\nimport { ValidateNested } from 'class-validator';\nimport { BaseResponse } from './BaseResponse';\nimport { AuthenticatedTokenPayloadDto } from './AuthenticatedUserPayloadDto';\n\nexport class GetUserByTokenResponse extends BaseResponse {\n @ApiProperty({ type: AuthenticatedTokenPayloadDto })\n @ValidateNested()\n @Type(() => AuthenticatedTokenPayloadDto)\n Result: AuthenticatedTokenPayloadDto;\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import { RegisterRequest } from './RegisterRequest';
2
+ declare const PublicRegisterRequest_base: import("@nestjs/common").Type<Omit<RegisterRequest, "flagSuper" | "flagAdminConfigurator" | "roles" | "permissions">>;
3
+ export declare class PublicRegisterRequest extends PublicRegisterRequest_base {
4
+ }
5
+ export {};
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PublicRegisterRequest = void 0;
4
+ const swagger_1 = require("@nestjs/swagger");
5
+ const RegisterRequest_1 = require("./RegisterRequest");
6
+ class PublicRegisterRequest extends (0, swagger_1.OmitType)(RegisterRequest_1.RegisterRequest, [
7
+ 'flagSuper',
8
+ 'flagAdminConfigurator',
9
+ 'roles',
10
+ 'permissions',
11
+ ]) {
12
+ }
13
+ exports.PublicRegisterRequest = PublicRegisterRequest;
14
+ //# sourceMappingURL=PublicRegisterRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PublicRegisterRequest.js","sourceRoot":"","sources":["../../../src/accessi-module/Dtos/PublicRegisterRequest.ts"],"names":[],"mappings":";;;AAAA,6CAA2C;AAC3C,uDAAoD;AAEpD,MAAa,qBAAsB,SAAQ,IAAA,kBAAQ,EAAC,iCAAe,EAAE;IACnE,WAAW;IACX,uBAAuB;IACvB,OAAO;IACP,aAAa;CACL,CAAC;CAAG;AALd,sDAKc","sourcesContent":["import { OmitType } from '@nestjs/swagger';\nimport { RegisterRequest } from './RegisterRequest';\n\nexport class PublicRegisterRequest extends OmitType(RegisterRequest, [\n 'flagSuper',\n 'flagAdminConfigurator',\n 'roles',\n 'permissions',\n] as const) {}\n"]}