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

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 (141) hide show
  1. package/README.MD +38 -38
  2. package/dist/ContractGenerator.js.map +1 -1
  3. package/dist/DatabaseUpdater.d.ts +1 -1
  4. package/dist/DatabaseUpdater.js +24 -24
  5. package/dist/DatabaseUpdater.js.map +1 -1
  6. package/dist/EmilsoftwareModule.js.map +1 -1
  7. package/dist/ExecutionTimeLogger.js.map +1 -1
  8. package/dist/Logger.js.map +1 -1
  9. package/dist/Orm.d.ts +7 -1
  10. package/dist/Orm.js +172 -78
  11. package/dist/Orm.js.map +1 -1
  12. package/dist/RoutesLoggerMiddleware.js.map +1 -1
  13. package/dist/Utilities.d.ts +2 -2
  14. package/dist/Utilities.js +3 -0
  15. package/dist/Utilities.js.map +1 -1
  16. package/dist/accessi-module/AccessiModule.d.ts +1 -1
  17. package/dist/accessi-module/AccessiModule.js.map +1 -1
  18. package/dist/accessi-module/Controllers/AuthController.d.ts +4 -4
  19. package/dist/accessi-module/Controllers/AuthController.js +43 -33
  20. package/dist/accessi-module/Controllers/AuthController.js.map +1 -1
  21. package/dist/accessi-module/Controllers/ConfiguratorController.js +25 -30
  22. package/dist/accessi-module/Controllers/ConfiguratorController.js.map +1 -1
  23. package/dist/accessi-module/Controllers/EmailController.d.ts +2 -4
  24. package/dist/accessi-module/Controllers/EmailController.js +8 -12
  25. package/dist/accessi-module/Controllers/EmailController.js.map +1 -1
  26. package/dist/accessi-module/Controllers/FiltriController.js +29 -0
  27. package/dist/accessi-module/Controllers/FiltriController.js.map +1 -1
  28. package/dist/accessi-module/Controllers/PermissionController.js +35 -33
  29. package/dist/accessi-module/Controllers/PermissionController.js.map +1 -1
  30. package/dist/accessi-module/Controllers/UserController.d.ts +2 -2
  31. package/dist/accessi-module/Controllers/UserController.js +30 -12
  32. package/dist/accessi-module/Controllers/UserController.js.map +1 -1
  33. package/dist/accessi-module/Dtos/Abilitazione.js.map +1 -1
  34. package/dist/accessi-module/Dtos/AbilitazioneMenu.js.map +1 -1
  35. package/dist/accessi-module/Dtos/AssignPermissionsToUserRequest.js +0 -1
  36. package/dist/accessi-module/Dtos/AssignPermissionsToUserRequest.js.map +1 -1
  37. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js +0 -1
  38. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js.map +1 -1
  39. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.d.ts +10 -0
  40. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js +52 -0
  41. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js.map +1 -0
  42. package/dist/accessi-module/Dtos/BaseResponse.d.ts +20 -0
  43. package/dist/accessi-module/Dtos/BaseResponse.js +87 -1
  44. package/dist/accessi-module/Dtos/BaseResponse.js.map +1 -1
  45. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.d.ts +3 -0
  46. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.js +31 -0
  47. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.js.map +1 -0
  48. package/dist/accessi-module/Dtos/FiltriUtente.js +1 -0
  49. package/dist/accessi-module/Dtos/FiltriUtente.js.map +1 -1
  50. package/dist/accessi-module/Dtos/GetGroupsWithMenusResponse.js.map +1 -1
  51. package/dist/accessi-module/Dtos/GetMenusResponse.js.map +1 -1
  52. package/dist/accessi-module/Dtos/GetRolesResponse.js.map +1 -1
  53. package/dist/accessi-module/Dtos/GetUserByTokenRequest.d.ts +3 -0
  54. package/dist/accessi-module/Dtos/GetUserByTokenRequest.js +26 -0
  55. package/dist/accessi-module/Dtos/GetUserByTokenRequest.js.map +1 -0
  56. package/dist/accessi-module/Dtos/GetUserByTokenResponse.d.ts +5 -0
  57. package/dist/accessi-module/Dtos/GetUserByTokenResponse.js +27 -0
  58. package/dist/accessi-module/Dtos/GetUserByTokenResponse.js.map +1 -0
  59. package/dist/accessi-module/Dtos/GetUsersResponse.js.map +1 -1
  60. package/dist/accessi-module/Dtos/LoginRequest.js.map +1 -1
  61. package/dist/accessi-module/Dtos/LoginResponse.js.map +1 -1
  62. package/dist/accessi-module/Dtos/Permission.js.map +1 -1
  63. package/dist/accessi-module/Dtos/PublicRegisterRequest.d.ts +5 -0
  64. package/dist/accessi-module/Dtos/PublicRegisterRequest.js +14 -0
  65. package/dist/accessi-module/Dtos/PublicRegisterRequest.js.map +1 -0
  66. package/dist/accessi-module/Dtos/RegisterRequest.js +4 -0
  67. package/dist/accessi-module/Dtos/RegisterRequest.js.map +1 -1
  68. package/dist/accessi-module/Dtos/RegisterResponse.d.ts +1 -1
  69. package/dist/accessi-module/Dtos/RegisterResponse.js +3 -3
  70. package/dist/accessi-module/Dtos/RegisterResponse.js.map +1 -1
  71. package/dist/accessi-module/Dtos/Role.js.map +1 -1
  72. package/dist/accessi-module/Dtos/RuoliMenu.js.map +1 -1
  73. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.d.ts +4 -0
  74. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.js +36 -0
  75. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.js.map +1 -0
  76. package/dist/accessi-module/Dtos/SetStatoRegistrazione.js.map +1 -1
  77. package/dist/accessi-module/Dtos/StatoRegistrazione.js.map +1 -1
  78. package/dist/accessi-module/Dtos/TipoAbilitazione.js.map +1 -1
  79. package/dist/accessi-module/Dtos/TipoFiltro.js.map +1 -1
  80. package/dist/accessi-module/Dtos/TokenResult.js.map +1 -1
  81. package/dist/accessi-module/Dtos/UpdateEnabledStatusRequest.js.map +1 -1
  82. package/dist/accessi-module/Dtos/UserDto.js +5 -1
  83. package/dist/accessi-module/Dtos/UserDto.js.map +1 -1
  84. package/dist/accessi-module/Dtos/UserGrantsDto.js.map +1 -1
  85. package/dist/accessi-module/Dtos/UserGrantsResponse.d.ts +5 -0
  86. package/dist/accessi-module/Dtos/UserGrantsResponse.js +27 -0
  87. package/dist/accessi-module/Dtos/UserGrantsResponse.js.map +1 -0
  88. package/dist/accessi-module/Dtos/index.d.ts +7 -0
  89. package/dist/accessi-module/Dtos/index.js +7 -0
  90. package/dist/accessi-module/Dtos/index.js.map +1 -1
  91. package/dist/accessi-module/Services/AuthService/AuthService.js.map +1 -1
  92. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js.map +1 -1
  93. package/dist/accessi-module/Services/EmailService/EmailService.js +11 -11
  94. package/dist/accessi-module/Services/EmailService/EmailService.js.map +1 -1
  95. package/dist/accessi-module/Services/FiltriService/FiltriService.js +1 -8
  96. package/dist/accessi-module/Services/FiltriService/FiltriService.js.map +1 -1
  97. package/dist/accessi-module/Services/PermissionService/PermissionService.d.ts +4 -0
  98. package/dist/accessi-module/Services/PermissionService/PermissionService.js +210 -147
  99. package/dist/accessi-module/Services/PermissionService/PermissionService.js.map +1 -1
  100. package/dist/accessi-module/Services/UserService/UserService.js +77 -174
  101. package/dist/accessi-module/Services/UserService/UserService.js.map +1 -1
  102. package/dist/accessi-module/Views/reset-password.html +213 -213
  103. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js +16 -16
  104. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js.map +1 -1
  105. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js.map +1 -1
  106. package/dist/accessi-module/index.d.ts +1 -0
  107. package/dist/accessi-module/index.js +28 -5
  108. package/dist/accessi-module/index.js.map +1 -1
  109. package/dist/accessi-module/jwt/jwt.strategy.js.map +1 -1
  110. package/dist/accessi-module/middleware/accessiRequirements.js.map +1 -1
  111. package/dist/accessi-module/middleware/authenticateGen.js.map +1 -1
  112. package/dist/accessi-module/security/accessControl.js.map +1 -1
  113. package/dist/accessi-module/security/authenticatedToken.js.map +1 -1
  114. package/dist/accessi-module/security/passwordResetToken.js.map +1 -1
  115. package/dist/accessi-module/security/publicAuthRateLimit.js.map +1 -1
  116. package/dist/allegati-module/AllegatiModule.d.ts +1 -1
  117. package/dist/allegati-module/AllegatiModule.js.map +1 -1
  118. package/dist/allegati-module/Controllers/AllegatiController.js.map +1 -1
  119. package/dist/allegati-module/Dtos/AllegatoDto.js.map +1 -1
  120. package/dist/allegati-module/Dtos/BaseResponse.js.map +1 -1
  121. package/dist/allegati-module/Dtos/UploadSingleFileRequest.js.map +1 -1
  122. package/dist/allegati-module/Dtos/index.js.map +1 -1
  123. package/dist/allegati-module/Dtos/responses/DownloadAllegatoResponseDto.js.map +1 -1
  124. package/dist/allegati-module/Dtos/responses/GetListResponse.js.map +1 -1
  125. package/dist/allegati-module/Dtos/responses/UploadAllegatoResponseDto.js.map +1 -1
  126. package/dist/allegati-module/Services/AllegatiService/AllegatiService.js +49 -49
  127. package/dist/allegati-module/Services/AllegatiService/AllegatiService.js.map +1 -1
  128. package/dist/allegati-module/index.js.map +1 -1
  129. package/dist/autobind.js.map +1 -1
  130. package/dist/emilsoftware-utilities-2.0.0-dev.21.tgz +0 -0
  131. package/dist/firebird-compat.d.ts +25 -0
  132. package/dist/firebird-compat.js +218 -0
  133. package/dist/firebird-compat.js.map +1 -0
  134. package/dist/index.d.ts +5 -2
  135. package/dist/index.js +28 -2
  136. package/dist/index.js.map +1 -1
  137. package/dist/initEmilsoftwareModule.js.map +1 -1
  138. package/dist/swagger/SwaggerConfig.d.ts +7 -1
  139. package/dist/swagger/SwaggerConfig.js +18 -7
  140. package/dist/swagger/SwaggerConfig.js.map +1 -1
  141. package/package.json +83 -83
@@ -1 +1 @@
1
- {"version":3,"file":"FiltriController.js","sourceRoot":"","sources":["../../../src/accessi-module/Controllers/FiltriController.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAiG;AACjG,6CAAoF;AAEpF,+CAAgD;AAEhD,kCAAwF;AACxF,mDAAuD;AACvD,2EAAwE;AACxE,sDAAqD;AACrD,6DAImC;AAM5B,IAAM,gBAAgB,wBAAtB,MAAM,gBAAgB;IAC3B,YACmB,aAA4B,EACD,OAAuB;QADlD,kBAAa,GAAb,aAAa,CAAe;QACD,YAAO,GAAP,OAAO,CAAgB;IAClE,CAAC;IAiBE,aAAa,CAAQ,GAAa;;YACtC,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;gBAC1D,OAAO,yBAAa,CAAC,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YACvD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,yBAAa,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,kBAAgB,CAAC,IAAI,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;KAAA;IAaK,eAAe,CACZ,OAAgB,EAChB,GAAa,EACX,GAA2B;;YAEpC,IAAI,CAAC;gBACH,MAAM,iBAAiB,GAAG,IAAA,2CAA2B,EAAC,OAAO,CAAC,CAAC;gBAC/D,MAAM,cAAc,GAAG,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,CAAC;gBAEnC,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;oBACjC,IAAA,+BAAe,EACb,iBAAiB,EACjB,0EAA0E,CAC3E,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,IAAA,qCAAqB,EACnB,iBAAiB,EACjB,MAAM,CAAC,cAAc,CAAC,EACtB,qCAAqC,CACtC,CAAC;gBACJ,CAAC;gBAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBACxE,OAAO,yBAAa,CAAC,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YACvD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,yBAAa,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,kBAAgB,CAAC,IAAI,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;KAAA;IAgBK,gBAAgB,CACb,OAAgB,EAChB,GAAa,EACZ,GAAiB;;;YAEzB,IAAI,CAAC;gBACH,MAAM,iBAAiB,GAAG,IAAA,2CAA2B,EAAC,OAAO,CAAC,CAAC;gBAC/D,MAAM,cAAc,GAAG,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,mCAAI,iBAAiB,CAAC,YAAY,CAAC;gBAErE,IAAA,qCAAqB,EACnB,iBAAiB,EACjB,MAAM,CAAC,cAAc,CAAC,EACtB,qCAAqC,CACtC,CAAC;gBAEF,MAAM,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,cAAc,kCACrD,GAAG,KACN,MAAM,EAAE,cAAc,IACtB,CAAC;gBACH,OAAO,yBAAa,CAAC,aAAa,CAChC,GAAG,EACH,qCAAqC,cAAc,2BAA2B,CAC/E,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,yBAAa,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,kBAAgB,CAAC,IAAI,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;KAAA;CACF,CAAA;AA/GY,4CAAgB;AAqBrB;IAfL,IAAA,YAAG,EAAC,MAAM,CAAC;IACX,IAAA,sBAAY,EAAC;QACZ,WAAW,EAAE,eAAe;QAC5B,OAAO,EAAE,sCAAsC;QAC/C,WAAW,EAAE,wDAAwD;KACtE,CAAC;IACD,IAAA,qBAAW,EAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,kDAAkD;QAC/D,IAAI,EAAE,8BAAiB;KACxB,CAAC;IACD,IAAA,qBAAW,EAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,uDAAuD;KACrE,CAAC;IACmB,WAAA,IAAA,YAAG,GAAE,CAAA;;;;qDAOzB;AAaK;IAXL,IAAA,YAAG,EAAC,QAAQ,CAAC;IACb,IAAA,sBAAY,EAAC;QACZ,WAAW,EAAE,iBAAiB;QAC9B,OAAO,EAAE,gCAAgC;QACzC,WAAW,EAAE,yDAAyD;KACvE,CAAC;IACD,IAAA,qBAAW,EAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,sDAAsD;QACnE,IAAI,EAAE,8BAAuB;KAC9B,CAAC;IAEC,WAAA,IAAA,YAAG,GAAE,CAAA;IACL,WAAA,IAAA,YAAG,GAAE,CAAA;IACL,WAAA,IAAA,cAAK,GAAE,CAAA;;qDAAM,6BAAsB;;uDAwBrC;AAgBK;IAdL,IAAA,aAAI,EAAC,QAAQ,CAAC;IACd,IAAA,sBAAY,EAAC;QACZ,WAAW,EAAE,kBAAkB;QAC/B,OAAO,EAAE,4CAA4C;QACrD,WAAW,EAAE,+DAA+D;KAC7E,CAAC;IACD,IAAA,qBAAW,EAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,oCAAoC;KAClD,CAAC;IACD,IAAA,qBAAW,EAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,yDAAyD;KACvE,CAAC;IAEC,WAAA,IAAA,YAAG,GAAE,CAAA;IACL,WAAA,IAAA,YAAG,GAAE,CAAA;IACL,WAAA,IAAA,aAAI,GAAE,CAAA;;qDAAM,mBAAY;;wDAuB1B;2BA9GU,gBAAgB;IAJ5B,IAAA,iBAAO,EAAC,QAAQ,CAAC;IACjB,IAAA,uBAAa,GAAE;IACf,IAAA,mBAAU,EAAC,gBAAgB,CAAC;IAC5B,IAAA,kBAAS,EAAC,6BAAc,CAAC;IAIrB,WAAA,IAAA,eAAM,EAAC,iBAAiB,CAAC,CAAA;qCADM,6BAAa;GAFpC,gBAAgB,CA+G5B","sourcesContent":["import { Body, Controller, Get, Inject, Post, Query, Req, Res, UseGuards } from '@nestjs/common';\r\nimport { ApiBearerAuth, ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger';\r\nimport { Request, Response } from 'express';\r\nimport { RestUtilities } from '../../Utilities';\r\nimport { AccessiOptions } from '../AccessiModule';\r\nimport { FiltriUtente, GetFiltriUtenteRequest, GetFiltriUtenteResponse } from '../Dtos';\r\nimport { GetFiltriResponse } from '../Dtos/TipoFiltro';\r\nimport { FiltriService } from '../Services/FiltriService/FiltriService';\r\nimport { JwtSimpleGuard } from '../jwt/jwt.strategy';\r\nimport {\r\n ensureSelfOrSuperUser,\r\n ensureSuperUser,\r\n getAuthenticatedAccessiUser,\r\n} from '../security/accessControl';\r\n\r\n@ApiTags('Filtri')\r\n@ApiBearerAuth()\r\n@Controller('accessi/filtri')\r\n@UseGuards(JwtSimpleGuard)\r\nexport class FiltriController {\r\n constructor(\r\n private readonly filtriService: FiltriService,\r\n @Inject('ACCESSI_OPTIONS') private readonly options: AccessiOptions,\r\n ) {}\r\n\r\n @Get('tipi')\r\n @ApiOperation({\r\n operationId: 'getTipiFiltro',\r\n summary: 'Recupera la lista dei tipi di filtri',\r\n description: 'Ritorna tutti i tipi di filtri disponibili nel sistema',\r\n })\r\n @ApiResponse({\r\n status: 200,\r\n description: 'Lista dei tipi di filtri recuperata con successo',\r\n type: GetFiltriResponse,\r\n })\r\n @ApiResponse({\r\n status: 500,\r\n description: 'Errore interno durante il recupero dei tipi di filtri',\r\n })\r\n async getTipoFiltri(@Res() res: Response) {\r\n try {\r\n const response = await this.filtriService.getTipoFiltri();\r\n return RestUtilities.sendBaseResponse(res, response);\r\n } catch (error) {\r\n return RestUtilities.sendErrorMessage(res, error, FiltriController.name);\r\n }\r\n }\r\n\r\n @Get('utente')\r\n @ApiOperation({\r\n operationId: 'getFiltriUtente',\r\n summary: 'Recupera i filtri di un utente',\r\n description: 'Ritorna tutti i filtri associati ad un utente specifico',\r\n })\r\n @ApiResponse({\r\n status: 200,\r\n description: \"Lista dei filtri dell'utente recuperata con successo\",\r\n type: GetFiltriUtenteResponse,\r\n })\r\n async getFiltriUtente(\r\n @Req() request: Request,\r\n @Res() res: Response,\r\n @Query() req: GetFiltriUtenteRequest,\r\n ) {\r\n try {\r\n const authenticatedUser = getAuthenticatedAccessiUser(request);\r\n const targetUserCode = req?.codUte;\r\n\r\n if (targetUserCode === undefined) {\r\n ensureSuperUser(\r\n authenticatedUser,\r\n 'Solo gli amministratori possono consultare i filtri di tutti gli utenti.',\r\n );\r\n } else {\r\n ensureSelfOrSuperUser(\r\n authenticatedUser,\r\n Number(targetUserCode),\r\n 'Puoi consultare solo i tuoi filtri.',\r\n );\r\n }\r\n\r\n const response = await this.filtriService.getFiltriUser(targetUserCode);\r\n return RestUtilities.sendBaseResponse(res, response);\r\n } catch (error) {\r\n return RestUtilities.sendErrorMessage(res, error, FiltriController.name);\r\n }\r\n }\r\n\r\n @Post('utente')\r\n @ApiOperation({\r\n operationId: 'saveFiltriUtente',\r\n summary: 'Inserisce o aggiorna i filtri di un utente',\r\n description: 'Permette di salvare i filtri associati ad un utente specifico',\r\n })\r\n @ApiResponse({\r\n status: 200,\r\n description: 'Filtri utente salvati con successo',\r\n })\r\n @ApiResponse({\r\n status: 500,\r\n description: 'Errore interno durante il salvataggio dei filtri utente',\r\n })\r\n async saveFiltriUtente(\r\n @Req() request: Request,\r\n @Res() res: Response,\r\n @Body() req: FiltriUtente,\r\n ) {\r\n try {\r\n const authenticatedUser = getAuthenticatedAccessiUser(request);\r\n const targetUserCode = req?.codUte ?? authenticatedUser.codiceUtente;\r\n\r\n ensureSelfOrSuperUser(\r\n authenticatedUser,\r\n Number(targetUserCode),\r\n 'Puoi modificare solo i tuoi filtri.',\r\n );\r\n\r\n await this.filtriService.upsertFiltriUtente(targetUserCode, {\r\n ...req,\r\n codUte: targetUserCode,\r\n });\r\n return RestUtilities.sendOKMessage(\r\n res,\r\n `Aggiornamento filtri per l'utente ${targetUserCode} effettuato correttamente`,\r\n );\r\n } catch (error) {\r\n return RestUtilities.sendErrorMessage(res, error, FiltriController.name);\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"FiltriController.js","sourceRoot":"","sources":["../../../src/accessi-module/Controllers/FiltriController.ts"],"names":[],"mappings":"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","sourcesContent":["import { Body, Controller, Get, Inject, Post, Query, Req, Res, UseGuards } from '@nestjs/common';\nimport { ApiBearerAuth, ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger';\nimport { Request, Response } from 'express';\nimport { RestUtilities } from '../../Utilities';\nimport { AccessiOptions } from '../AccessiModule';\nimport { ActionResponse, ErrorResponse } from '../Dtos/BaseResponse';\nimport { FiltriUtente, GetFiltriUtenteRequest, GetFiltriUtenteResponse } from '../Dtos';\nimport { GetFiltriResponse } from '../Dtos/TipoFiltro';\nimport { FiltriService } from '../Services/FiltriService/FiltriService';\nimport { JwtSimpleGuard } from '../jwt/jwt.strategy';\nimport {\n ensureSelfOrSuperUser,\n ensureSuperUser,\n getAuthenticatedAccessiUser,\n} from '../security/accessControl';\n\n@ApiTags('Filtri')\n@ApiBearerAuth()\n@Controller('accessi/filtri')\n@UseGuards(JwtSimpleGuard)\nexport class FiltriController {\n constructor(\n private readonly filtriService: FiltriService,\n @Inject('ACCESSI_OPTIONS') private readonly options: AccessiOptions,\n ) {}\n\n @Get('tipi')\n @ApiOperation({\n operationId: 'getTipiFiltro',\n summary: 'Recupera la lista dei tipi di filtri',\n description: 'Ritorna tutti i tipi di filtri disponibili nel sistema',\n })\n @ApiResponse({\n status: 200,\n description: 'Lista dei tipi di filtri recuperata con successo',\n type: GetFiltriResponse,\n })\n @ApiResponse({\n status: 500,\n description: 'Errore interno durante il recupero dei tipi di filtri',\n type: ErrorResponse,\n })\n async getTipoFiltri(@Res() res: Response) {\n try {\n const response = await this.filtriService.getTipoFiltri();\n return RestUtilities.sendBaseResponse(res, response);\n } catch (error) {\n return RestUtilities.sendErrorMessage(res, error, FiltriController.name);\n }\n }\n\n @Get('utente')\n @ApiOperation({\n operationId: 'getFiltriUtente',\n summary: 'Recupera i filtri di un utente',\n description: 'Ritorna tutti i filtri associati ad un utente specifico',\n })\n @ApiResponse({\n status: 200,\n description: \"Lista dei filtri dell'utente recuperata con successo\",\n type: GetFiltriUtenteResponse,\n })\n @ApiResponse({\n status: 400,\n description: 'Errore nella richiesta.',\n type: ErrorResponse,\n })\n @ApiResponse({\n status: 403,\n description: 'Operazione non autorizzata.',\n type: ErrorResponse,\n })\n @ApiResponse({\n status: 500,\n description: 'Errore interno del server.',\n type: ErrorResponse,\n })\n async getFiltriUtente(\n @Req() request: Request,\n @Res() res: Response,\n @Query() req: GetFiltriUtenteRequest,\n ) {\n try {\n const authenticatedUser = getAuthenticatedAccessiUser(request);\n const targetUserCode = req?.codUte;\n\n if (targetUserCode === undefined) {\n ensureSuperUser(\n authenticatedUser,\n 'Solo gli amministratori possono consultare i filtri di tutti gli utenti.',\n );\n } else {\n ensureSelfOrSuperUser(\n authenticatedUser,\n Number(targetUserCode),\n 'Puoi consultare solo i tuoi filtri.',\n );\n }\n\n const response = await this.filtriService.getFiltriUser(targetUserCode);\n return RestUtilities.sendBaseResponse(res, response);\n } catch (error) {\n return RestUtilities.sendErrorMessage(res, error, FiltriController.name);\n }\n }\n\n @Post('utente')\n @ApiOperation({\n operationId: 'saveFiltriUtente',\n summary: 'Inserisce o aggiorna i filtri di un utente',\n description: 'Permette di salvare i filtri associati ad un utente specifico',\n })\n @ApiResponse({\n status: 200,\n description: 'Filtri utente salvati con successo',\n type: ActionResponse,\n })\n @ApiResponse({\n status: 400,\n description: 'Errore di validazione nei dati inviati.',\n type: ErrorResponse,\n })\n @ApiResponse({\n status: 403,\n description: 'Operazione non autorizzata.',\n type: ErrorResponse,\n })\n @ApiResponse({\n status: 500,\n description: 'Errore interno durante il salvataggio dei filtri utente',\n type: ErrorResponse,\n })\n async saveFiltriUtente(\n @Req() request: Request,\n @Res() res: Response,\n @Body() req: FiltriUtente,\n ) {\n try {\n const authenticatedUser = getAuthenticatedAccessiUser(request);\n const targetUserCode = req?.codUte ?? authenticatedUser.codiceUtente;\n\n ensureSelfOrSuperUser(\n authenticatedUser,\n Number(targetUserCode),\n 'Puoi modificare solo i tuoi filtri.',\n );\n\n await this.filtriService.upsertFiltriUtente(targetUserCode, {\n ...req,\n codUte: targetUserCode,\n });\n return RestUtilities.sendOKMessage(\n res,\n `Aggiornamento filtri per l'utente ${targetUserCode} effettuato correttamente`,\n );\n } catch (error) {\n return RestUtilities.sendErrorMessage(res, error, FiltriController.name);\n }\n }\n}\n"]}
@@ -26,13 +26,14 @@ exports.PermissionController = void 0;
26
26
  const common_1 = require("@nestjs/common");
27
27
  const swagger_1 = require("@nestjs/swagger");
28
28
  const Utilities_1 = require("../../Utilities");
29
+ const BaseResponse_1 = require("../Dtos/BaseResponse");
29
30
  const AssignPermissionsToUserRequest_1 = require("../Dtos/AssignPermissionsToUserRequest");
30
31
  const AssignRolesToUserRequest_1 = require("../Dtos/AssignRolesToUserRequest");
31
32
  const GetGroupsWithMenusResponse_1 = require("../Dtos/GetGroupsWithMenusResponse");
32
33
  const GetMenusResponse_1 = require("../Dtos/GetMenusResponse");
33
34
  const GetRolesResponse_1 = require("../Dtos/GetRolesResponse");
34
35
  const Role_1 = require("../Dtos/Role");
35
- const UserGrantsDto_1 = require("../Dtos/UserGrantsDto");
36
+ const UserGrantsResponse_1 = require("../Dtos/UserGrantsResponse");
36
37
  const PermissionService_1 = require("../Services/PermissionService/PermissionService");
37
38
  const jwt_strategy_1 = require("../jwt/jwt.strategy");
38
39
  const accessControl_1 = require("../security/accessControl");
@@ -98,11 +99,11 @@ let PermissionController = PermissionController_1 = class PermissionController {
98
99
  return __awaiter(this, void 0, void 0, function* () {
99
100
  try {
100
101
  (0, accessControl_1.ensureSuperUser)((0, accessControl_1.getAuthenticatedAccessiUser)(request), 'Solo gli amministratori possono assegnare ruoli agli utenti.');
101
- if (!assignRolesRequest.roles || assignRolesRequest.roles.length === 0) {
102
- throw new Error('E necessario fornire almeno un ruolo.');
103
- }
104
102
  yield this.permissionService.assignRolesToUser(codiceUtente, assignRolesRequest.roles);
105
- return Utilities_1.RestUtilities.sendOKMessage(res, `I ruoli ${assignRolesRequest.roles.join(', ')} sono stati assegnati all'utente ${codiceUtente}.`);
103
+ const responseMessage = assignRolesRequest.roles.length === 0
104
+ ? `Tutti i ruoli sono stati rimossi dall'utente ${codiceUtente}.`
105
+ : `I ruoli ${assignRolesRequest.roles.join(', ')} sono stati assegnati all'utente ${codiceUtente}.`;
106
+ return Utilities_1.RestUtilities.sendOKMessage(res, responseMessage);
106
107
  }
107
108
  catch (error) {
108
109
  return this.sendControllerError(res, error);
@@ -113,11 +114,11 @@ let PermissionController = PermissionController_1 = class PermissionController {
113
114
  return __awaiter(this, void 0, void 0, function* () {
114
115
  try {
115
116
  (0, accessControl_1.ensureSuperUser)((0, accessControl_1.getAuthenticatedAccessiUser)(request), 'Solo gli amministratori possono assegnare permessi agli utenti.');
116
- if (!assignPermissionsRequest.permissions || assignPermissionsRequest.permissions.length === 0) {
117
- throw new Error('E necessario fornire almeno una abilitazione.');
118
- }
119
117
  yield this.permissionService.assignPermissionsToUser(codiceUtente, assignPermissionsRequest.permissions);
120
- return Utilities_1.RestUtilities.sendOKMessage(res, `Le abilitazioni sono state assegnate all'utente ${codiceUtente}.`);
118
+ const responseMessage = assignPermissionsRequest.permissions.length === 0
119
+ ? `Tutte le abilitazioni sono state rimosse dall'utente ${codiceUtente}.`
120
+ : `Le abilitazioni sono state assegnate all'utente ${codiceUtente}.`;
121
+ return Utilities_1.RestUtilities.sendOKMessage(res, responseMessage);
121
122
  }
122
123
  catch (error) {
123
124
  return this.sendControllerError(res, error);
@@ -182,11 +183,12 @@ __decorate([
182
183
  description: 'Recupera tutti i ruoli presenti nel sistema con le relative voci di menu.',
183
184
  }),
184
185
  (0, swagger_1.ApiOkResponse)({ description: 'Elenco dei ruoli con i rispettivi menu', type: GetRolesResponse_1.GetRolesResponse }),
185
- (0, swagger_1.ApiInternalServerErrorResponse)({ description: 'Errore interno del server' }),
186
- (0, swagger_1.ApiResponse)({ status: common_1.HttpStatus.OK, description: 'Lista dei ruoli restituita con successo.' }),
186
+ (0, swagger_1.ApiInternalServerErrorResponse)({ description: 'Errore interno del server', type: BaseResponse_1.ErrorResponse }),
187
+ (0, swagger_1.ApiResponse)({ status: common_1.HttpStatus.OK, description: 'Lista dei ruoli restituita con successo.', type: GetRolesResponse_1.GetRolesResponse }),
187
188
  (0, swagger_1.ApiResponse)({
188
189
  status: common_1.HttpStatus.INTERNAL_SERVER_ERROR,
189
190
  description: 'Errore interno del server durante il recupero dei ruoli.',
191
+ type: BaseResponse_1.ErrorResponse,
190
192
  }),
191
193
  (0, common_1.Get)('roles'),
192
194
  __param(0, (0, common_1.Res)()),
@@ -207,9 +209,9 @@ __decorate([
207
209
  description: 'Dati aggiornati del ruolo',
208
210
  type: Role_1.Role,
209
211
  }),
210
- (0, swagger_1.ApiResponse)({ status: 200, description: 'Il ruolo e stato aggiornato con successo' }),
211
- (0, swagger_1.ApiResponse)({ status: 400, description: 'Errore di validazione nei dati inviati' }),
212
- (0, swagger_1.ApiResponse)({ status: 500, description: 'Errore interno del server' }),
212
+ (0, swagger_1.ApiResponse)({ status: 200, description: 'Il ruolo e stato aggiornato con successo', type: BaseResponse_1.ActionResponse }),
213
+ (0, swagger_1.ApiResponse)({ status: 400, description: 'Errore di validazione nei dati inviati', type: BaseResponse_1.ErrorResponse }),
214
+ (0, swagger_1.ApiResponse)({ status: 500, description: 'Errore interno del server', type: BaseResponse_1.ErrorResponse }),
213
215
  (0, common_1.Put)('update-role/:codiceRuolo'),
214
216
  __param(0, (0, common_1.Req)()),
215
217
  __param(1, (0, common_1.Param)('codiceRuolo', common_1.ParseIntPipe)),
@@ -221,9 +223,9 @@ __decorate([
221
223
  ], PermissionController.prototype, "updateRole", null);
222
224
  __decorate([
223
225
  (0, swagger_1.ApiOperation)({ summary: 'Crea un nuovo ruolo', operationId: 'createRole' }),
224
- (0, swagger_1.ApiResponse)({ status: 201, description: 'Il ruolo e stato creato con successo' }),
225
- (0, swagger_1.ApiResponse)({ status: 400, description: 'Errore di validazione nei dati inviati' }),
226
- (0, swagger_1.ApiResponse)({ status: 500, description: 'Errore interno del server' }),
226
+ (0, swagger_1.ApiResponse)({ status: 201, description: 'Il ruolo e stato creato con successo', type: BaseResponse_1.ActionResponse }),
227
+ (0, swagger_1.ApiResponse)({ status: 400, description: 'Errore di validazione nei dati inviati', type: BaseResponse_1.ErrorResponse }),
228
+ (0, swagger_1.ApiResponse)({ status: 500, description: 'Errore interno del server', type: BaseResponse_1.ErrorResponse }),
227
229
  (0, swagger_1.ApiBody)({
228
230
  description: 'Dati del nuovo ruolo',
229
231
  required: true,
@@ -249,9 +251,9 @@ __decorate([
249
251
  type: AssignRolesToUserRequest_1.AssignRolesToUserRequest,
250
252
  description: "Lista dei ruoli da assegnare all'utente",
251
253
  }),
252
- (0, swagger_1.ApiResponse)({ status: 200, description: "Ruoli assegnati con successo all'utente" }),
253
- (0, swagger_1.ApiResponse)({ status: 400, description: 'Errore di validazione nei dati inviati' }),
254
- (0, swagger_1.ApiResponse)({ status: 500, description: 'Errore interno del server' }),
254
+ (0, swagger_1.ApiResponse)({ status: 200, description: "Ruoli assegnati con successo all'utente", type: BaseResponse_1.ActionResponse }),
255
+ (0, swagger_1.ApiResponse)({ status: 400, description: 'Errore di validazione nei dati inviati', type: BaseResponse_1.ErrorResponse }),
256
+ (0, swagger_1.ApiResponse)({ status: 500, description: 'Errore interno del server', type: BaseResponse_1.ErrorResponse }),
255
257
  (0, common_1.Post)('assign-roles/:codiceUtente'),
256
258
  __param(0, (0, common_1.Req)()),
257
259
  __param(1, (0, common_1.Res)()),
@@ -276,9 +278,9 @@ __decorate([
276
278
  type: AssignPermissionsToUserRequest_1.AssignPermissionsToUserRequest,
277
279
  description: "Lista delle abilitazioni da assegnare all'utente",
278
280
  }),
279
- (0, swagger_1.ApiResponse)({ status: 200, description: "Abilitazioni assegnate con successo all'utente" }),
280
- (0, swagger_1.ApiResponse)({ status: 400, description: 'Errore di validazione nei dati inviati' }),
281
- (0, swagger_1.ApiResponse)({ status: 500, description: 'Errore interno del server' }),
281
+ (0, swagger_1.ApiResponse)({ status: 200, description: "Abilitazioni assegnate con successo all'utente", type: BaseResponse_1.ActionResponse }),
282
+ (0, swagger_1.ApiResponse)({ status: 400, description: 'Errore di validazione nei dati inviati', type: BaseResponse_1.ErrorResponse }),
283
+ (0, swagger_1.ApiResponse)({ status: 500, description: 'Errore interno del server', type: BaseResponse_1.ErrorResponse }),
282
284
  (0, common_1.Post)('assign-permissions/:codiceUtente'),
283
285
  __param(0, (0, common_1.Req)()),
284
286
  __param(1, (0, common_1.Res)()),
@@ -297,9 +299,9 @@ __decorate([
297
299
  example: 382,
298
300
  type: Number,
299
301
  }),
300
- (0, swagger_1.ApiResponse)({ status: 200, description: 'Ruolo eliminato con successo' }),
301
- (0, swagger_1.ApiResponse)({ status: 400, description: 'Errore nei parametri della richiesta' }),
302
- (0, swagger_1.ApiResponse)({ status: 500, description: 'Errore interno del server' }),
302
+ (0, swagger_1.ApiResponse)({ status: 200, description: 'Ruolo eliminato con successo', type: BaseResponse_1.ActionResponse }),
303
+ (0, swagger_1.ApiResponse)({ status: 400, description: 'Errore nei parametri della richiesta', type: BaseResponse_1.ErrorResponse }),
304
+ (0, swagger_1.ApiResponse)({ status: 500, description: 'Errore interno del server', type: BaseResponse_1.ErrorResponse }),
303
305
  (0, common_1.Delete)('delete-role/:codiceRuolo'),
304
306
  __param(0, (0, common_1.Req)()),
305
307
  __param(1, (0, common_1.Param)('codiceRuolo', common_1.ParseIntPipe)),
@@ -311,8 +313,8 @@ __decorate([
311
313
  __decorate([
312
314
  (0, swagger_1.ApiOperation)({ summary: 'Recupera tutti i menu disponibili', operationId: 'getMenus' }),
313
315
  (0, swagger_1.ApiOkResponse)({ description: 'Elenco menu', type: GetMenusResponse_1.GetMenusResponse }),
314
- (0, swagger_1.ApiResponse)({ status: 200, description: 'Lista dei menu recuperata con successo' }),
315
- (0, swagger_1.ApiResponse)({ status: 500, description: 'Errore interno del server' }),
316
+ (0, swagger_1.ApiResponse)({ status: 200, description: 'Lista dei menu recuperata con successo', type: GetMenusResponse_1.GetMenusResponse }),
317
+ (0, swagger_1.ApiResponse)({ status: 500, description: 'Errore interno del server', type: BaseResponse_1.ErrorResponse }),
316
318
  (0, common_1.Get)('menus'),
317
319
  __param(0, (0, common_1.Res)()),
318
320
  __metadata("design:type", Function),
@@ -328,8 +330,8 @@ __decorate([
328
330
  description: 'Elenco gruppi con relativi menu',
329
331
  type: GetGroupsWithMenusResponse_1.GetGroupsWithMenusResponse,
330
332
  }),
331
- (0, swagger_1.ApiResponse)({ status: 200, description: 'Lista dei menu recuperata con successo' }),
332
- (0, swagger_1.ApiResponse)({ status: 500, description: 'Errore interno del server' }),
333
+ (0, swagger_1.ApiResponse)({ status: 200, description: 'Lista dei menu recuperata con successo', type: GetGroupsWithMenusResponse_1.GetGroupsWithMenusResponse }),
334
+ (0, swagger_1.ApiResponse)({ status: 500, description: 'Errore interno del server', type: BaseResponse_1.ErrorResponse }),
333
335
  (0, swagger_1.ApiQuery)({
334
336
  name: 'includeDisabled',
335
337
  required: false,
@@ -348,9 +350,9 @@ __decorate([
348
350
  summary: 'Recupera i ruoli e i menu di un utente',
349
351
  operationId: 'getUserRolesAndGrants',
350
352
  }),
351
- (0, swagger_1.ApiOkResponse)({ description: 'Elenco menu', type: UserGrantsDto_1.UserGrantsDto }),
352
- (0, swagger_1.ApiResponse)({ status: 200, description: 'Lista dei menu recuperata con successo' }),
353
- (0, swagger_1.ApiResponse)({ status: 500, description: 'Errore interno del server' }),
353
+ (0, swagger_1.ApiOkResponse)({ description: 'Elenco grant utente', type: UserGrantsResponse_1.UserGrantsResponse }),
354
+ (0, swagger_1.ApiResponse)({ status: 200, description: 'Grant utente recuperati con successo', type: UserGrantsResponse_1.UserGrantsResponse }),
355
+ (0, swagger_1.ApiResponse)({ status: 500, description: 'Errore interno del server', type: BaseResponse_1.ErrorResponse }),
354
356
  (0, common_1.Get)('grants/:codiceUtente'),
355
357
  __param(0, (0, common_1.Req)()),
356
358
  __param(1, (0, common_1.Param)('codiceUtente', common_1.ParseIntPipe)),
@@ -1 +1 @@
1
- {"version":3,"file":"PermissionController.js","sourceRoot":"","sources":["../../../src/accessi-module/Controllers/PermissionController.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 ParseIntPipe,\r\n Post,\r\n Put,\r\n Query,\r\n Req,\r\n Res,\r\n UseGuards,\r\n} from '@nestjs/common';\r\nimport {\r\n ApiBearerAuth,\r\n ApiBody,\r\n ApiInternalServerErrorResponse,\r\n ApiOkResponse,\r\n ApiOperation,\r\n ApiParam,\r\n ApiQuery,\r\n ApiResponse,\r\n ApiTags,\r\n} from '@nestjs/swagger';\r\nimport { Request, Response } from 'express';\r\nimport { RestUtilities } from '../../Utilities';\r\nimport { AssignPermissionsToUserRequest } from '../Dtos/AssignPermissionsToUserRequest';\r\nimport { AssignRolesToUserRequest } from '../Dtos/AssignRolesToUserRequest';\r\nimport { GetGroupsWithMenusResponse } from '../Dtos/GetGroupsWithMenusResponse';\r\nimport { GetMenusResponse } from '../Dtos/GetMenusResponse';\r\nimport { GetRolesResponse } from '../Dtos/GetRolesResponse';\r\nimport { Role } from '../Dtos/Role';\r\nimport { UserGrantsDto } from '../Dtos/UserGrantsDto';\r\nimport { PermissionService } from '../Services/PermissionService/PermissionService';\r\nimport { JwtSimpleGuard } from '../jwt/jwt.strategy';\r\nimport {\r\n ensureSelfOrSuperUser,\r\n ensureSuperUser,\r\n getAuthenticatedAccessiUser,\r\n} from '../security/accessControl';\r\n\r\n@ApiTags('Permission')\r\n@ApiBearerAuth()\r\n@Controller('accessi/permission')\r\n@UseGuards(JwtSimpleGuard)\r\nexport class PermissionController {\r\n constructor(private readonly permissionService: PermissionService) {}\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, PermissionController.name, status);\r\n }\r\n\r\n @ApiOperation({\r\n summary: 'Ritorna i ruoli disponibili con i relativi menu',\r\n operationId: 'getRoles',\r\n description: 'Recupera tutti i ruoli presenti nel sistema con le relative voci di menu.',\r\n })\r\n @ApiOkResponse({ description: 'Elenco dei ruoli con i rispettivi menu', type: GetRolesResponse })\r\n @ApiInternalServerErrorResponse({ description: 'Errore interno del server' })\r\n @ApiResponse({ status: HttpStatus.OK, description: 'Lista dei ruoli restituita con successo.' })\r\n @ApiResponse({\r\n status: HttpStatus.INTERNAL_SERVER_ERROR,\r\n description: 'Errore interno del server durante il recupero dei ruoli.',\r\n })\r\n @Get('roles')\r\n async getRoles(@Res() res: Response): Promise<void> {\r\n try {\r\n const roles = await this.permissionService.getRolesWithMenus();\r\n RestUtilities.sendBaseResponse(res, roles);\r\n } catch (error) {\r\n this.sendControllerError(res, error);\r\n throw error;\r\n }\r\n }\r\n\r\n @ApiOperation({ summary: 'Aggiorna un ruolo esistente', operationId: 'updateRole' })\r\n @ApiParam({\r\n name: 'codiceRuolo',\r\n description: 'Codice identificativo del ruolo da aggiornare',\r\n required: true,\r\n example: 101,\r\n type: Number,\r\n })\r\n @ApiBody({\r\n description: 'Dati aggiornati del ruolo',\r\n type: Role,\r\n })\r\n @ApiResponse({ status: 200, description: 'Il ruolo e stato aggiornato con successo' })\r\n @ApiResponse({ status: 400, description: 'Errore di validazione nei dati inviati' })\r\n @ApiResponse({ status: 500, description: 'Errore interno del server' })\r\n @Put('update-role/:codiceRuolo')\r\n async updateRole(\r\n @Req() request: Request,\r\n @Param('codiceRuolo', ParseIntPipe) codiceRuolo: number,\r\n @Body() role: Role,\r\n @Res() res: Response,\r\n ) {\r\n try {\r\n ensureSuperUser(\r\n getAuthenticatedAccessiUser(request),\r\n 'Solo gli amministratori possono modificare i ruoli.',\r\n );\r\n\r\n if (Number.isNaN(codiceRuolo)) throw new Error('Il codice del ruolo e obbligatorio.');\r\n if (!role.descrizioneRuolo) throw new Error('La descrizione del ruolo non puo essere vuota.');\r\n if (!role.menu || role.menu.length === 0) {\r\n throw new Error('Il ruolo deve avere almeno un menu.');\r\n }\r\n\r\n await this.permissionService.updateOrInsertRole(role, codiceRuolo);\r\n return RestUtilities.sendOKMessage(\r\n res,\r\n `Il ruolo ${codiceRuolo} 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({ summary: 'Crea un nuovo ruolo', operationId: 'createRole' })\r\n @ApiResponse({ status: 201, description: 'Il ruolo e stato creato con successo' })\r\n @ApiResponse({ status: 400, description: 'Errore di validazione nei dati inviati' })\r\n @ApiResponse({ status: 500, description: 'Errore interno del server' })\r\n @ApiBody({\r\n description: 'Dati del nuovo ruolo',\r\n required: true,\r\n type: Role,\r\n })\r\n @Post('create-role')\r\n async createRole(@Req() request: Request, @Res() res: Response, @Body() role: Role) {\r\n try {\r\n ensureSuperUser(\r\n getAuthenticatedAccessiUser(request),\r\n 'Solo gli amministratori possono creare ruoli.',\r\n );\r\n\r\n if (!role) throw new Error('Il ruolo non puo essere vuoto.');\r\n if (!role.descrizioneRuolo) throw new Error('La descrizione del ruolo non puo essere vuota.');\r\n if (!role.menu || role.menu.length === 0) {\r\n throw new Error('Il ruolo deve avere almeno un menu.');\r\n }\r\n\r\n await this.permissionService.updateOrInsertRole(role);\r\n return RestUtilities.sendOKMessage(res, 'Il ruolo e stato creato con successo.');\r\n } catch (error) {\r\n return this.sendControllerError(res, error);\r\n }\r\n }\r\n\r\n @ApiOperation({ summary: 'Assegna piu ruoli a un utente', operationId: 'assignRolesToUser' })\r\n @ApiParam({\r\n name: 'codiceUtente',\r\n description: \"Codice identificativo dell'utente a cui assegnare i ruoli\",\r\n required: true,\r\n example: 22,\r\n })\r\n @ApiBody({\r\n type: AssignRolesToUserRequest,\r\n description: \"Lista dei ruoli da assegnare all'utente\",\r\n })\r\n @ApiResponse({ status: 200, description: \"Ruoli assegnati con successo all'utente\" })\r\n @ApiResponse({ status: 400, description: 'Errore di validazione nei dati inviati' })\r\n @ApiResponse({ status: 500, description: 'Errore interno del server' })\r\n @Post('assign-roles/:codiceUtente')\r\n async assignRolesToUser(\r\n @Req() request: Request,\r\n @Res() res: Response,\r\n @Param('codiceUtente', ParseIntPipe) codiceUtente: number,\r\n @Body() assignRolesRequest: AssignRolesToUserRequest,\r\n ) {\r\n try {\r\n ensureSuperUser(\r\n getAuthenticatedAccessiUser(request),\r\n 'Solo gli amministratori possono assegnare ruoli agli utenti.',\r\n );\r\n\r\n if (!assignRolesRequest.roles || assignRolesRequest.roles.length === 0) {\r\n throw new Error('E necessario fornire almeno un ruolo.');\r\n }\r\n\r\n await this.permissionService.assignRolesToUser(codiceUtente, assignRolesRequest.roles);\r\n return RestUtilities.sendOKMessage(\r\n res,\r\n `I ruoli ${assignRolesRequest.roles.join(', ')} sono stati assegnati all'utente ${codiceUtente}.`,\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: 'Assegna abilitazioni dirette a un utente',\r\n operationId: 'assignPermissionsToUser',\r\n })\r\n @ApiParam({\r\n name: 'codiceUtente',\r\n description: \"Codice identificativo dell'utente a cui assegnare le abilitazioni\",\r\n required: true,\r\n example: 22,\r\n })\r\n @ApiBody({\r\n type: AssignPermissionsToUserRequest,\r\n description: \"Lista delle abilitazioni da assegnare all'utente\",\r\n })\r\n @ApiResponse({ status: 200, description: \"Abilitazioni assegnate con successo all'utente\" })\r\n @ApiResponse({ status: 400, description: 'Errore di validazione nei dati inviati' })\r\n @ApiResponse({ status: 500, description: 'Errore interno del server' })\r\n @Post('assign-permissions/:codiceUtente')\r\n async assignPermissionsToUser(\r\n @Req() request: Request,\r\n @Res() res: Response,\r\n @Param('codiceUtente', ParseIntPipe) codiceUtente: number,\r\n @Body() assignPermissionsRequest: AssignPermissionsToUserRequest,\r\n ) {\r\n try {\r\n ensureSuperUser(\r\n getAuthenticatedAccessiUser(request),\r\n 'Solo gli amministratori possono assegnare permessi agli utenti.',\r\n );\r\n\r\n if (!assignPermissionsRequest.permissions || assignPermissionsRequest.permissions.length === 0) {\r\n throw new Error('E necessario fornire almeno una abilitazione.');\r\n }\r\n\r\n await this.permissionService.assignPermissionsToUser(\r\n codiceUtente,\r\n assignPermissionsRequest.permissions,\r\n );\r\n return RestUtilities.sendOKMessage(\r\n res,\r\n `Le abilitazioni sono state assegnate all'utente ${codiceUtente}.`,\r\n );\r\n } catch (error) {\r\n return this.sendControllerError(res, error);\r\n }\r\n }\r\n\r\n @ApiOperation({ summary: 'Elimina un ruolo esistente', operationId: 'deleteRole' })\r\n @ApiParam({\r\n name: 'codiceRuolo',\r\n description: 'Codice identificativo del ruolo da eliminare',\r\n required: true,\r\n example: 382,\r\n type: Number,\r\n })\r\n @ApiResponse({ status: 200, description: 'Ruolo eliminato con successo' })\r\n @ApiResponse({ status: 400, description: 'Errore nei parametri della richiesta' })\r\n @ApiResponse({ status: 500, description: 'Errore interno del server' })\r\n @Delete('delete-role/:codiceRuolo')\r\n async deleteRole(\r\n @Req() request: Request,\r\n @Param('codiceRuolo', ParseIntPipe) codiceRuolo: 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 ruoli.',\r\n );\r\n\r\n await this.permissionService.deleteRole(codiceRuolo);\r\n return RestUtilities.sendOKMessage(\r\n res,\r\n `Il ruolo ${codiceRuolo} e' stato eliminato con successo.`,\r\n );\r\n } catch (error) {\r\n return this.sendControllerError(res, error);\r\n }\r\n }\r\n\r\n @ApiOperation({ summary: 'Recupera tutti i menu disponibili', operationId: 'getMenus' })\r\n @ApiOkResponse({ description: 'Elenco menu', type: GetMenusResponse })\r\n @ApiResponse({ status: 200, description: 'Lista dei menu recuperata con successo' })\r\n @ApiResponse({ status: 500, description: 'Errore interno del server' })\r\n @Get('menus')\r\n async getMenus(@Res() res: Response) {\r\n try {\r\n const menus = await this.permissionService.getMenus();\r\n return RestUtilities.sendBaseResponse(res, menus);\r\n } catch (error) {\r\n return this.sendControllerError(res, error);\r\n }\r\n }\r\n\r\n @ApiOperation({\r\n summary: 'Recupera tutti i gruppi disponibili con i relativi menu',\r\n operationId: 'getGroupsWithMenus',\r\n })\r\n @ApiOkResponse({\r\n description: 'Elenco gruppi con relativi menu',\r\n type: GetGroupsWithMenusResponse,\r\n })\r\n @ApiResponse({ status: 200, description: 'Lista dei menu recuperata con successo' })\r\n @ApiResponse({ status: 500, description: 'Errore interno del server' })\r\n @ApiQuery({\r\n name: 'includeDisabled',\r\n required: false,\r\n type: Boolean,\r\n description: 'Quando true ritorna anche i menu e gruppi disabilitati.',\r\n })\r\n @Get('groups-with-menus')\r\n async getGroupsWithMenus(@Query('includeDisabled') includeDisabled: string, @Res() res: Response) {\r\n try {\r\n const includeDisabledFlag =\r\n typeof includeDisabled === 'string'\r\n ? ['true', '1', 'yes'].includes(includeDisabled.toLowerCase())\r\n : false;\r\n\r\n const menus = await this.permissionService.getGroupsWithMenus(includeDisabledFlag);\r\n return RestUtilities.sendBaseResponse(res, menus);\r\n } catch (error) {\r\n return this.sendControllerError(res, error);\r\n }\r\n }\r\n\r\n @ApiOperation({\r\n summary: 'Recupera i ruoli e i menu di un utente',\r\n operationId: 'getUserRolesAndGrants',\r\n })\r\n @ApiOkResponse({ description: 'Elenco menu', type: UserGrantsDto })\r\n @ApiResponse({ status: 200, description: 'Lista dei menu recuperata con successo' })\r\n @ApiResponse({ status: 500, description: 'Errore interno del server' })\r\n @Get('grants/:codiceUtente')\r\n async getUserRolesAndGrants(\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 consultare solo i tuoi grant, salvo privilegi amministrativi.',\r\n );\r\n\r\n const menus = await this.permissionService.getUserRolesAndGrants(codiceUtente);\r\n return RestUtilities.sendBaseResponse(res, menus);\r\n } catch (error) {\r\n return this.sendControllerError(res, error);\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"PermissionController.js","sourceRoot":"","sources":["../../../src/accessi-module/Controllers/PermissionController.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Body,\n Controller,\n Delete,\n Get,\n HttpException,\n HttpStatus,\n Param,\n ParseIntPipe,\n Post,\n Put,\n Query,\n Req,\n Res,\n UseGuards,\n} from '@nestjs/common';\nimport {\n ApiBearerAuth,\n ApiBody,\n ApiInternalServerErrorResponse,\n ApiOkResponse,\n ApiOperation,\n ApiParam,\n ApiQuery,\n ApiResponse,\n ApiTags,\n} from '@nestjs/swagger';\nimport { Request, Response } from 'express';\nimport { RestUtilities } from '../../Utilities';\nimport { ActionResponse, ErrorResponse } from '../Dtos/BaseResponse';\nimport { AssignPermissionsToUserRequest } from '../Dtos/AssignPermissionsToUserRequest';\nimport { AssignRolesToUserRequest } from '../Dtos/AssignRolesToUserRequest';\nimport { GetGroupsWithMenusResponse } from '../Dtos/GetGroupsWithMenusResponse';\nimport { GetMenusResponse } from '../Dtos/GetMenusResponse';\nimport { GetRolesResponse } from '../Dtos/GetRolesResponse';\nimport { Role } from '../Dtos/Role';\nimport { UserGrantsDto } from '../Dtos/UserGrantsDto';\nimport { UserGrantsResponse } from '../Dtos/UserGrantsResponse';\nimport { PermissionService } from '../Services/PermissionService/PermissionService';\nimport { JwtSimpleGuard } from '../jwt/jwt.strategy';\nimport {\n ensureSelfOrSuperUser,\n ensureSuperUser,\n getAuthenticatedAccessiUser,\n} from '../security/accessControl';\n\n@ApiTags('Permission')\n@ApiBearerAuth()\n@Controller('accessi/permission')\n@UseGuards(JwtSimpleGuard)\nexport class PermissionController {\n constructor(private readonly permissionService: PermissionService) {}\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, PermissionController.name, status);\n }\n\n @ApiOperation({\n summary: 'Ritorna i ruoli disponibili con i relativi menu',\n operationId: 'getRoles',\n description: 'Recupera tutti i ruoli presenti nel sistema con le relative voci di menu.',\n })\n @ApiOkResponse({ description: 'Elenco dei ruoli con i rispettivi menu', type: GetRolesResponse })\n @ApiInternalServerErrorResponse({ description: 'Errore interno del server', type: ErrorResponse })\n @ApiResponse({ status: HttpStatus.OK, description: 'Lista dei ruoli restituita con successo.', type: GetRolesResponse })\n @ApiResponse({\n status: HttpStatus.INTERNAL_SERVER_ERROR,\n description: 'Errore interno del server durante il recupero dei ruoli.',\n type: ErrorResponse,\n })\n @Get('roles')\n async getRoles(@Res() res: Response): Promise<void> {\n try {\n const roles = await this.permissionService.getRolesWithMenus();\n RestUtilities.sendBaseResponse(res, roles);\n } catch (error) {\n this.sendControllerError(res, error);\n throw error;\n }\n }\n\n @ApiOperation({ summary: 'Aggiorna un ruolo esistente', operationId: 'updateRole' })\n @ApiParam({\n name: 'codiceRuolo',\n description: 'Codice identificativo del ruolo da aggiornare',\n required: true,\n example: 101,\n type: Number,\n })\n @ApiBody({\n description: 'Dati aggiornati del ruolo',\n type: Role,\n })\n @ApiResponse({ status: 200, description: 'Il ruolo e stato aggiornato con successo', type: ActionResponse })\n @ApiResponse({ status: 400, description: 'Errore di validazione nei dati inviati', type: ErrorResponse })\n @ApiResponse({ status: 500, description: 'Errore interno del server', type: ErrorResponse })\n @Put('update-role/:codiceRuolo')\n async updateRole(\n @Req() request: Request,\n @Param('codiceRuolo', ParseIntPipe) codiceRuolo: number,\n @Body() role: Role,\n @Res() res: Response,\n ) {\n try {\n ensureSuperUser(\n getAuthenticatedAccessiUser(request),\n 'Solo gli amministratori possono modificare i ruoli.',\n );\n\n if (Number.isNaN(codiceRuolo)) throw new Error('Il codice del ruolo e obbligatorio.');\n if (!role.descrizioneRuolo) throw new Error('La descrizione del ruolo non puo essere vuota.');\n if (!role.menu || role.menu.length === 0) {\n throw new Error('Il ruolo deve avere almeno un menu.');\n }\n\n await this.permissionService.updateOrInsertRole(role, codiceRuolo);\n return RestUtilities.sendOKMessage(\n res,\n `Il ruolo ${codiceRuolo} e' stato aggiornato con successo.`,\n );\n } catch (error) {\n return this.sendControllerError(res, error);\n }\n }\n\n @ApiOperation({ summary: 'Crea un nuovo ruolo', operationId: 'createRole' })\n @ApiResponse({ status: 201, description: 'Il ruolo e stato creato con successo', type: ActionResponse })\n @ApiResponse({ status: 400, description: 'Errore di validazione nei dati inviati', type: ErrorResponse })\n @ApiResponse({ status: 500, description: 'Errore interno del server', type: ErrorResponse })\n @ApiBody({\n description: 'Dati del nuovo ruolo',\n required: true,\n type: Role,\n })\n @Post('create-role')\n async createRole(@Req() request: Request, @Res() res: Response, @Body() role: Role) {\n try {\n ensureSuperUser(\n getAuthenticatedAccessiUser(request),\n 'Solo gli amministratori possono creare ruoli.',\n );\n\n if (!role) throw new Error('Il ruolo non puo essere vuoto.');\n if (!role.descrizioneRuolo) throw new Error('La descrizione del ruolo non puo essere vuota.');\n if (!role.menu || role.menu.length === 0) {\n throw new Error('Il ruolo deve avere almeno un menu.');\n }\n\n await this.permissionService.updateOrInsertRole(role);\n return RestUtilities.sendOKMessage(res, 'Il ruolo e stato creato con successo.');\n } catch (error) {\n return this.sendControllerError(res, error);\n }\n }\n\n @ApiOperation({ summary: 'Assegna piu ruoli a un utente', operationId: 'assignRolesToUser' })\n @ApiParam({\n name: 'codiceUtente',\n description: \"Codice identificativo dell'utente a cui assegnare i ruoli\",\n required: true,\n example: 22,\n })\n @ApiBody({\n type: AssignRolesToUserRequest,\n description: \"Lista dei ruoli da assegnare all'utente\",\n })\n @ApiResponse({ status: 200, description: \"Ruoli assegnati con successo all'utente\", type: ActionResponse })\n @ApiResponse({ status: 400, description: 'Errore di validazione nei dati inviati', type: ErrorResponse })\n @ApiResponse({ status: 500, description: 'Errore interno del server', type: ErrorResponse })\n @Post('assign-roles/:codiceUtente')\n async assignRolesToUser(\n @Req() request: Request,\n @Res() res: Response,\n @Param('codiceUtente', ParseIntPipe) codiceUtente: number,\n @Body() assignRolesRequest: AssignRolesToUserRequest,\n ) {\n try {\n ensureSuperUser(\n getAuthenticatedAccessiUser(request),\n 'Solo gli amministratori possono assegnare ruoli agli utenti.',\n );\n\n await this.permissionService.assignRolesToUser(codiceUtente, assignRolesRequest.roles);\n const responseMessage =\n assignRolesRequest.roles.length === 0\n ? `Tutti i ruoli sono stati rimossi dall'utente ${codiceUtente}.`\n : `I ruoli ${assignRolesRequest.roles.join(', ')} sono stati assegnati all'utente ${codiceUtente}.`;\n return RestUtilities.sendOKMessage(\n res,\n responseMessage,\n );\n } catch (error) {\n return this.sendControllerError(res, error);\n }\n }\n\n @ApiOperation({\n summary: 'Assegna abilitazioni dirette a un utente',\n operationId: 'assignPermissionsToUser',\n })\n @ApiParam({\n name: 'codiceUtente',\n description: \"Codice identificativo dell'utente a cui assegnare le abilitazioni\",\n required: true,\n example: 22,\n })\n @ApiBody({\n type: AssignPermissionsToUserRequest,\n description: \"Lista delle abilitazioni da assegnare all'utente\",\n })\n @ApiResponse({ status: 200, description: \"Abilitazioni assegnate con successo all'utente\", type: ActionResponse })\n @ApiResponse({ status: 400, description: 'Errore di validazione nei dati inviati', type: ErrorResponse })\n @ApiResponse({ status: 500, description: 'Errore interno del server', type: ErrorResponse })\n @Post('assign-permissions/:codiceUtente')\n async assignPermissionsToUser(\n @Req() request: Request,\n @Res() res: Response,\n @Param('codiceUtente', ParseIntPipe) codiceUtente: number,\n @Body() assignPermissionsRequest: AssignPermissionsToUserRequest,\n ) {\n try {\n ensureSuperUser(\n getAuthenticatedAccessiUser(request),\n 'Solo gli amministratori possono assegnare permessi agli utenti.',\n );\n\n await this.permissionService.assignPermissionsToUser(\n codiceUtente,\n assignPermissionsRequest.permissions,\n );\n const responseMessage =\n assignPermissionsRequest.permissions.length === 0\n ? `Tutte le abilitazioni sono state rimosse dall'utente ${codiceUtente}.`\n : `Le abilitazioni sono state assegnate all'utente ${codiceUtente}.`;\n return RestUtilities.sendOKMessage(\n res,\n responseMessage,\n );\n } catch (error) {\n return this.sendControllerError(res, error);\n }\n }\n\n @ApiOperation({ summary: 'Elimina un ruolo esistente', operationId: 'deleteRole' })\n @ApiParam({\n name: 'codiceRuolo',\n description: 'Codice identificativo del ruolo da eliminare',\n required: true,\n example: 382,\n type: Number,\n })\n @ApiResponse({ status: 200, description: 'Ruolo eliminato con successo', type: ActionResponse })\n @ApiResponse({ status: 400, description: 'Errore nei parametri della richiesta', type: ErrorResponse })\n @ApiResponse({ status: 500, description: 'Errore interno del server', type: ErrorResponse })\n @Delete('delete-role/:codiceRuolo')\n async deleteRole(\n @Req() request: Request,\n @Param('codiceRuolo', ParseIntPipe) codiceRuolo: number,\n @Res() res: Response,\n ) {\n try {\n ensureSuperUser(\n getAuthenticatedAccessiUser(request),\n 'Solo gli amministratori possono eliminare ruoli.',\n );\n\n await this.permissionService.deleteRole(codiceRuolo);\n return RestUtilities.sendOKMessage(\n res,\n `Il ruolo ${codiceRuolo} e' stato eliminato con successo.`,\n );\n } catch (error) {\n return this.sendControllerError(res, error);\n }\n }\n\n @ApiOperation({ summary: 'Recupera tutti i menu disponibili', operationId: 'getMenus' })\n @ApiOkResponse({ description: 'Elenco menu', type: GetMenusResponse })\n @ApiResponse({ status: 200, description: 'Lista dei menu recuperata con successo', type: GetMenusResponse })\n @ApiResponse({ status: 500, description: 'Errore interno del server', type: ErrorResponse })\n @Get('menus')\n async getMenus(@Res() res: Response) {\n try {\n const menus = await this.permissionService.getMenus();\n return RestUtilities.sendBaseResponse(res, menus);\n } catch (error) {\n return this.sendControllerError(res, error);\n }\n }\n\n @ApiOperation({\n summary: 'Recupera tutti i gruppi disponibili con i relativi menu',\n operationId: 'getGroupsWithMenus',\n })\n @ApiOkResponse({\n description: 'Elenco gruppi con relativi menu',\n type: GetGroupsWithMenusResponse,\n })\n @ApiResponse({ status: 200, description: 'Lista dei menu recuperata con successo', type: GetGroupsWithMenusResponse })\n @ApiResponse({ status: 500, description: 'Errore interno del server', type: ErrorResponse })\n @ApiQuery({\n name: 'includeDisabled',\n required: false,\n type: Boolean,\n description: 'Quando true ritorna anche i menu e gruppi disabilitati.',\n })\n @Get('groups-with-menus')\n async getGroupsWithMenus(@Query('includeDisabled') includeDisabled: string, @Res() res: Response) {\n try {\n const includeDisabledFlag =\n typeof includeDisabled === 'string'\n ? ['true', '1', 'yes'].includes(includeDisabled.toLowerCase())\n : false;\n\n const menus = await this.permissionService.getGroupsWithMenus(includeDisabledFlag);\n return RestUtilities.sendBaseResponse(res, menus);\n } catch (error) {\n return this.sendControllerError(res, error);\n }\n }\n\n @ApiOperation({\n summary: 'Recupera i ruoli e i menu di un utente',\n operationId: 'getUserRolesAndGrants',\n })\n @ApiOkResponse({ description: 'Elenco grant utente', type: UserGrantsResponse })\n @ApiResponse({ status: 200, description: 'Grant utente recuperati con successo', type: UserGrantsResponse })\n @ApiResponse({ status: 500, description: 'Errore interno del server', type: ErrorResponse })\n @Get('grants/:codiceUtente')\n async getUserRolesAndGrants(\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 consultare solo i tuoi grant, salvo privilegi amministrativi.',\n );\n\n const menus = await this.permissionService.getUserRolesAndGrants(codiceUtente);\n return RestUtilities.sendBaseResponse(res, menus);\n } catch (error) {\n return this.sendControllerError(res, error);\n }\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { Request, Response } from 'express';
2
2
  import { AccessiOptions } from '../AccessiModule';
3
- import { RegisterRequest } from '../Dtos/RegisterRequest';
3
+ import { PublicRegisterRequest } from '../Dtos/PublicRegisterRequest';
4
4
  import { SetStatoRegistrazioneDto } from '../Dtos/SetStatoRegistrazione';
5
5
  import { UserDto } from '../Dtos/UserDto';
6
6
  import { EmailService } from '../Services/EmailService/EmailService';
@@ -16,7 +16,7 @@ export declare class UserController {
16
16
  getUsers(request: Request, res: Response, email?: string, codiceUtente?: number, includeExtensionFields?: boolean, includeGrants?: boolean): Promise<Response<any, Record<string, any>>>;
17
17
  deleteUser(request: Request, codiceUtente: number, res: Response): Promise<Response<any, Record<string, any>>>;
18
18
  setStatoRegistrazione(request: Request, body: SetStatoRegistrazioneDto, res: Response): Promise<Response<any, Record<string, any>>>;
19
- register(request: Request, registrationData: RegisterRequest, res: Response): Promise<Response<any, Record<string, any>>>;
19
+ register(request: Request, registrationData: PublicRegisterRequest, res: Response): Promise<Response<any, Record<string, any>>>;
20
20
  updateUtente(request: Request, codiceUtente: number, user: UserDto, res: Response): Promise<Response<any, Record<string, any>>>;
21
21
  setGdpr(request: Request, codiceUtente: number, res: Response): Promise<Response<any, Record<string, any>>>;
22
22
  }
@@ -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'),