emilsoftware-utilities 2.0.0-dev.1 → 2.0.0-dev.3
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.
- package/README.MD +38 -38
- package/dist/ContractGenerator.js.map +1 -1
- package/dist/DatabaseUpdater.js +24 -24
- package/dist/DatabaseUpdater.js.map +1 -1
- package/dist/EmilsoftwareModule.js.map +1 -1
- package/dist/ExecutionTimeLogger.js.map +1 -1
- package/dist/Logger.js.map +1 -1
- package/dist/Orm.d.ts +5 -0
- package/dist/Orm.js +149 -57
- package/dist/Orm.js.map +1 -1
- package/dist/RoutesLoggerMiddleware.js.map +1 -1
- package/dist/Utilities.d.ts +2 -2
- package/dist/Utilities.js +4 -0
- package/dist/Utilities.js.map +1 -1
- package/dist/accessi-module/AccessiModule.js.map +1 -1
- package/dist/accessi-module/Controllers/AuthController.js.map +1 -1
- package/dist/accessi-module/Controllers/ConfiguratorController.js.map +1 -1
- package/dist/accessi-module/Controllers/EmailController.js.map +1 -1
- package/dist/accessi-module/Controllers/FiltriController.js.map +1 -1
- package/dist/accessi-module/Controllers/PermissionController.js.map +1 -1
- package/dist/accessi-module/Controllers/UserController.js.map +1 -1
- package/dist/accessi-module/Dtos/Abilitazione.js.map +1 -1
- package/dist/accessi-module/Dtos/AbilitazioneMenu.js.map +1 -1
- package/dist/accessi-module/Dtos/AssignPermissionsToUserRequest.js.map +1 -1
- package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js.map +1 -1
- package/dist/accessi-module/Dtos/BaseResponse.js.map +1 -1
- package/dist/accessi-module/Dtos/FiltriUtente.js.map +1 -1
- package/dist/accessi-module/Dtos/GetGroupsWithMenusResponse.js.map +1 -1
- package/dist/accessi-module/Dtos/GetMenusResponse.js.map +1 -1
- package/dist/accessi-module/Dtos/GetRolesResponse.js.map +1 -1
- package/dist/accessi-module/Dtos/GetUsersResponse.js.map +1 -1
- package/dist/accessi-module/Dtos/LoginRequest.js.map +1 -1
- package/dist/accessi-module/Dtos/LoginResponse.js.map +1 -1
- package/dist/accessi-module/Dtos/Permission.js.map +1 -1
- package/dist/accessi-module/Dtos/RegisterRequest.js.map +1 -1
- package/dist/accessi-module/Dtos/RegisterResponse.js.map +1 -1
- package/dist/accessi-module/Dtos/Role.js.map +1 -1
- package/dist/accessi-module/Dtos/RuoliMenu.js.map +1 -1
- package/dist/accessi-module/Dtos/SetStatoRegistrazione.js.map +1 -1
- package/dist/accessi-module/Dtos/StatoRegistrazione.js.map +1 -1
- package/dist/accessi-module/Dtos/TipoAbilitazione.js.map +1 -1
- package/dist/accessi-module/Dtos/TipoFiltro.js.map +1 -1
- package/dist/accessi-module/Dtos/TokenResult.js.map +1 -1
- package/dist/accessi-module/Dtos/UpdateEnabledStatusRequest.js.map +1 -1
- package/dist/accessi-module/Dtos/UserDto.js.map +1 -1
- package/dist/accessi-module/Dtos/UserGrantsDto.js.map +1 -1
- package/dist/accessi-module/Dtos/index.js.map +1 -1
- package/dist/accessi-module/Services/AuthService/AuthService.d.ts +1 -0
- package/dist/accessi-module/Services/AuthService/AuthService.js +12 -2
- package/dist/accessi-module/Services/AuthService/AuthService.js.map +1 -1
- package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js.map +1 -1
- package/dist/accessi-module/Services/EmailService/EmailService.js +11 -11
- package/dist/accessi-module/Services/EmailService/EmailService.js.map +1 -1
- package/dist/accessi-module/Services/FiltriService/FiltriService.js +1 -1
- package/dist/accessi-module/Services/FiltriService/FiltriService.js.map +1 -1
- package/dist/accessi-module/Services/PermissionService/PermissionService.js +87 -87
- package/dist/accessi-module/Services/PermissionService/PermissionService.js.map +1 -1
- package/dist/accessi-module/Services/UserService/UserService.js +65 -65
- package/dist/accessi-module/Services/UserService/UserService.js.map +1 -1
- package/dist/accessi-module/Views/reset-password.html +213 -213
- package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js +25 -16
- package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js.map +1 -1
- package/dist/accessi-module/database-updates/runAccessiDbUpdate.js.map +1 -1
- package/dist/accessi-module/index.js +16 -1
- package/dist/accessi-module/index.js.map +1 -1
- package/dist/accessi-module/jwt/jwt.strategy.js.map +1 -1
- package/dist/accessi-module/middleware/accessiRequirements.js.map +1 -1
- package/dist/accessi-module/middleware/authenticateGen.js.map +1 -1
- package/dist/accessi-module/security/accessControl.js.map +1 -1
- package/dist/accessi-module/security/authenticatedToken.js.map +1 -1
- package/dist/accessi-module/security/passwordResetToken.js.map +1 -1
- package/dist/accessi-module/security/publicAuthRateLimit.js.map +1 -1
- package/dist/allegati-module/AllegatiModule.js.map +1 -1
- package/dist/allegati-module/Controllers/AllegatiController.js.map +1 -1
- package/dist/allegati-module/Dtos/AllegatoDto.js.map +1 -1
- package/dist/allegati-module/Dtos/BaseResponse.js.map +1 -1
- package/dist/allegati-module/Dtos/UploadSingleFileRequest.js.map +1 -1
- package/dist/allegati-module/Dtos/index.js.map +1 -1
- package/dist/allegati-module/Dtos/responses/DownloadAllegatoResponseDto.js.map +1 -1
- package/dist/allegati-module/Dtos/responses/GetListResponse.js.map +1 -1
- package/dist/allegati-module/Dtos/responses/UploadAllegatoResponseDto.js.map +1 -1
- package/dist/allegati-module/Services/AllegatiService/AllegatiService.js +49 -49
- package/dist/allegati-module/Services/AllegatiService/AllegatiService.js.map +1 -1
- package/dist/allegati-module/index.js.map +1 -1
- package/dist/autobind.js.map +1 -1
- package/dist/firebird-compat.d.ts +15 -0
- package/dist/firebird-compat.js +198 -0
- package/dist/firebird-compat.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.js +27 -1
- package/dist/index.js.map +1 -1
- package/dist/initEmilsoftwareModule.js.map +1 -1
- package/dist/swagger/SwaggerConfig.js.map +1 -1
- package/package.json +83 -83
- package/dist/emilsoftware-utilities-2.0.0-dev.1.tgz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmailService.js","sourceRoot":"","sources":["../../../../src/accessi-module/Services/EmailService/EmailService.ts"],"names":[],"mappings":"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","sourcesContent":["import nodemailer from 'nodemailer';\nimport { v4 as uuidv4 } from 'uuid';\nimport { AccessiOptions } from '../../AccessiModule';\nimport { Orm } from '../../../Orm';\nimport { Inject, Injectable } from '@nestjs/common';\nimport { StatoRegistrazione } from '../../Dtos/StatoRegistrazione';\nimport {\n createPasswordResetToken,\n getAccessiJwtSecret,\n} from '../../security/passwordResetToken';\n\n@Injectable()\nexport class EmailService {\n constructor(@Inject('ACCESSI_OPTIONS') private readonly accessiOptions: AccessiOptions) {}\n\n sendAccountUpdateEmail(email: string, message: string): Promise<void> {\n throw new Error('Method not implemented.');\n }\n\n private transporter = nodemailer.createTransport(this.accessiOptions.emailOptions);\n\n public async sendPasswordResetEmail(email: string, htmlMail?: string): Promise<void> {\n let codiceUtente: number | null = null;\n let resetToken: string | null = null;\n\n try {\n if (typeof email !== 'string' || email.trim() === '') {\n return;\n }\n\n const normalizedEmail = email.trim().toLowerCase();\n const userResult = await Orm.query(\n this.accessiOptions.databaseOptions,\n 'SELECT FIRST 1 CODUTE as codice_utente, STAREG as stato_registrazione FROM UTENTI WHERE LOWER(USRNAME) = ?',\n [normalizedEmail],\n );\n const user = userResult.map((row) => ({\n codiceUtente: Number(row.CODICE_UTENTE ?? row.codice_utente ?? row.CODUTE ?? row.codute),\n statoRegistrazione: Number(\n row.STATO_REGISTRAZIONE ?? row.stato_registrazione ?? row.STAREG ?? row.stareg,\n ),\n }))[0];\n\n if (\n !user?.codiceUtente ||\n user.statoRegistrazione === StatoRegistrazione.BLOCC ||\n user.statoRegistrazione === StatoRegistrazione.DELETE\n ) {\n return;\n }\n\n codiceUtente = user.codiceUtente;\n const nonce = uuidv4();\n const secret = getAccessiJwtSecret(this.accessiOptions);\n resetToken = createPasswordResetToken(codiceUtente, nonce, secret);\n\n await Orm.execute(\n this.accessiOptions.databaseOptions,\n 'UPDATE UTENTI SET KEYREG = ? WHERE CODUTE = ? ',\n [nonce, codiceUtente],\n );\n\n //costruizione dei queryparams\n const returnUrlQueryParams =\n '?returnUrl=' +\n encodeURIComponent(this.accessiOptions.confirmationEmailReturnUrl) +\n '&prefix=' +\n encodeURIComponent(this.accessiOptions.confirmationEmailPrefix ?? '');\n const { confirmationEmailUrl, customResetPage } = this.accessiOptions;\n\n // costruisco l'url di base\n let resetUrl = `${confirmationEmailUrl}/api/accessi/email/reset-password-page/${encodeURIComponent(\n resetToken,\n )}${returnUrlQueryParams}`;\n\n //solo se gli do la customResetPage\n if (customResetPage) {\n resetUrl = `${customResetPage}?token=${encodeURIComponent(resetToken)}`;\n }\n\n let sPhrase: string;\n\n if (htmlMail) {\n sPhrase = htmlMail.replace('#link_conferma_password_url', resetUrl);\n } else {\n sPhrase = ` Gentile utente,<br>\n abbiamo ricevuto la tua richiesta.<br><br>\n\n Per completare l'operazione, clicca sul link qui sotto:<br>\n <a href=\"${resetUrl}\">completa la procedura</a><br><br>\n\n Se hai richiesto la registrazione al servizio o la reimpostazione della password, questo passaggio è necessario.<br>\n Se non sei stato tu a effettuare questa richiesta, puoi ignorare questo messaggio in tutta sicurezza.<br><br>\n\n Questa è una comunicazione automatica, ti preghiamo di non rispondere a questa email.<br><br>\n\n Grazie.<br>`;\n }\n\n const html = this.GetHtmlMail(sPhrase);\n const mailOptions = {\n from: this.accessiOptions.emailOptions.from,\n to: email,\n subject: 'Scelta nuova password',\n text: sPhrase,\n html: html,\n };\n\n await this.transporter.sendMail(mailOptions);\n } catch (error) {\n if (codiceUtente) {\n await Orm.execute(\n this.accessiOptions.databaseOptions,\n 'UPDATE UTENTI SET KEYREG = NULL WHERE CODUTE = ?',\n [codiceUtente],\n ).catch(() => undefined);\n }\n console.error(\"Errore nell'invio dell'email di reset password:\", error);\n throw new Error(\"Errore durante l'invio dell'email di reset password.\");\n }\n }\n\n private GetHtmlMail(sPhrase: string): string {\n let sTxt = '';\n sTxt += '<html xmlns=\"http://www.w3.org/1999/xhtml\">';\n sTxt += '<head>';\n sTxt += ' <meta content=\"text/html; charset=utf-8\" http-equiv=\"Content-Type\">';\n sTxt += ' <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">';\n sTxt += ' <title></title>';\n sTxt += ' <style type=\"text/css\">';\n sTxt += ' @media only screen and (max-width:480px) {';\n sTxt += ' body,';\n sTxt += ' table,';\n sTxt += ' td,';\n sTxt += ' p,';\n sTxt += ' a,';\n sTxt += ' li,';\n sTxt += ' blockquote {';\n sTxt += ' -webkit-text-size-adjust: none !important';\n sTxt += ' }';\n sTxt += ' body {';\n sTxt += ' width: 100% !important;';\n sTxt += ' min-width: 100% !important';\n sTxt += ' }';\n sTxt += ' #bodyCell {';\n sTxt += ' padding: 10px !important';\n sTxt += ' }';\n sTxt += ' table.kmMobileHide {';\n sTxt += ' display: none !important';\n sTxt += ' }';\n sTxt += ' table.kmDesktopOnly,';\n sTxt += ' td.kmDesktopOnly,';\n sTxt += ' th.kmDesktopOnly,';\n sTxt += ' tr.kmDesktopOnly,';\n sTxt += ' td.kmDesktopWrapHeaderMobileNone {';\n sTxt += ' display: none !important';\n sTxt += ' }';\n sTxt += ' table.kmMobileOnly {';\n sTxt += ' display: table !important';\n sTxt += ' }';\n sTxt += ' tr.kmMobileOnly {';\n sTxt += ' display: table-row !important';\n sTxt += ' }';\n sTxt += ' td.kmMobileOnly,';\n sTxt += ' td.kmDesktopWrapHeader,';\n sTxt += ' th.kmMobileOnly {';\n sTxt += ' display: table-cell !important';\n sTxt += ' }';\n sTxt += ' tr.kmMobileNoAlign,';\n sTxt += ' table.kmMobileNoAlign {';\n sTxt += ' float: none !important;';\n sTxt += ' text-align: initial !important;';\n sTxt += ' vertical-align: middle !important;';\n sTxt += ' table-layout: fixed !important';\n sTxt += ' }';\n sTxt += ' tr.kmMobileCenterAlign {';\n sTxt += ' float: none !important;';\n sTxt += ' text-align: center !important;';\n sTxt += ' vertical-align: middle !important;';\n sTxt += ' table-layout: fixed !important';\n sTxt += ' }';\n sTxt += ' td.kmButtonCollection {';\n sTxt += ' padding-left: 9px !important;';\n sTxt += ' padding-right: 9px !important;';\n sTxt += ' padding-top: 9px !important;';\n sTxt += ' padding-bottom: 9px !importan';\n sTxt += ' }';\n sTxt += ' td.kmMobileHeaderStackDesktopNone,';\n sTxt += ' img.kmMobileHeaderStackDesktopNone,';\n sTxt += ' td.kmMobileHeaderStack {';\n sTxt += ' display: block !important;';\n sTxt += ' margin-left: auto !important;';\n sTxt += ' margin-right: auto !important;';\n sTxt += ' padding-bottom: 9px !important;';\n sTxt += ' padding-right: 0 !important;';\n sTxt += ' padding-left: 0 !important';\n sTxt += ' }';\n sTxt += ' td.kmMobileWrapHeader,';\n sTxt += ' td.kmMobileWrapHeaderDesktopNone {';\n sTxt += ' display: inline-block !important';\n sTxt += ' }';\n sTxt += ' td.kmMobileHeaderSpacing {';\n sTxt += ' padding-right: 10px !important';\n sTxt += ' }';\n sTxt += ' td.kmMobileHeaderNoSpacing {';\n sTxt += ' padding-right: 0 !important';\n sTxt += ' }';\n sTxt += ' table.kmDesktopAutoWidth {';\n sTxt += ' width: inherit !important';\n sTxt += ' }';\n sTxt += ' table.kmMobileAutoWidth {';\n sTxt += ' width: 100% !important';\n sTxt += ' }';\n sTxt += ' table.kmTextContentContainer {';\n sTxt += ' width: 100% !important';\n sTxt += ' }';\n sTxt += ' table.kmBoxedTextContentContainer {';\n sTxt += ' width: 100% !important';\n sTxt += ' }';\n sTxt += ' td.kmImageContent {';\n sTxt += ' padding-left: 0 !important;';\n sTxt += ' padding-right: 0 !important';\n sTxt += ' }';\n sTxt += ' img.kmImage {';\n sTxt += ' width: 100% !important';\n sTxt += ' }';\n sTxt += ' td.kmMobileStretch {';\n sTxt += ' padding-left: 0 !important;';\n sTxt += ' padding-right: 0 !important';\n sTxt += ' }';\n sTxt += ' table.kmSplitContentLeftContentContainer,';\n sTxt += ' table.kmSplitContentRightContentContainer,';\n sTxt += ' table.kmColumnContainer,';\n sTxt += ' td.kmVerticalButtonBarContentOuter table.kmButtonBarContent,';\n sTxt +=\n ' td.kmVerticalButtonCollectionContentOuter table.kmButtonCollectionContent,';\n sTxt += ' table.kmVerticalButton,';\n sTxt += ' table.kmVerticalButtonContent {';\n sTxt += ' width: 100% !important';\n sTxt += ' }';\n sTxt += ' td.kmButtonCollectionInner {';\n sTxt += ' padding-left: 9px !important;';\n sTxt += ' padding-right: 9px !important;';\n sTxt += ' padding-top: 9px !important;';\n sTxt += ' padding-bottom: 9px !important';\n sTxt += ' }';\n sTxt += ' td.kmVerticalButtonIconContent,';\n sTxt += ' td.kmVerticalButtonTextContent,';\n sTxt += ' td.kmVerticalButtonContentOuter {';\n sTxt += ' padding-left: 0 !important;';\n sTxt += ' padding-right: 0 !important;';\n sTxt += ' padding-bottom: 9px !important';\n sTxt += ' }';\n sTxt += ' table.kmSplitContentLeftContentContainer td.kmTextContent,';\n sTxt += ' table.kmSplitContentRightContentContainer td.kmTextContent,';\n sTxt += ' table.kmColumnContainer td.kmTextContent,';\n sTxt += ' table.kmSplitContentLeftContentContainer td.kmImageContent,';\n sTxt += ' table.kmSplitContentRightContentContainer td.kmImageContent {';\n sTxt += ' padding-top: 9px !important';\n sTxt += ' }';\n sTxt += ' td.rowContainer.kmFloatLeft,';\n sTxt += ' td.rowContainer.kmFloatLeft,';\n sTxt += ' td.rowContainer.kmFloatLeft.firstColumn,';\n sTxt += ' td.rowContainer.kmFloatLeft.firstColumn,';\n sTxt += ' td.rowContainer.kmFloatLeft.lastColumn,';\n sTxt += ' td.rowContainer.kmFloatLeft.lastColumn {';\n sTxt += ' float: left;';\n sTxt += ' clear: both;';\n sTxt += ' width: 100% !important';\n sTxt += ' }';\n sTxt += ' table.templateContainer,';\n sTxt += ' table.templateContainer.brandingContainer,';\n sTxt += ' div.templateContainer,';\n sTxt += ' div.templateContainer.brandingContainer,';\n sTxt += ' table.templateRow {';\n sTxt += ' max-width: 600px !important;';\n sTxt += ' width: 100% !important';\n sTxt += ' }';\n sTxt += ' h1 {';\n sTxt += ' font-size: 30px !important;';\n sTxt += ' line-height: 130% !important';\n sTxt += ' }';\n sTxt += ' h2 {';\n sTxt += ' font-size: 22px !important;';\n sTxt += ' line-height: 130% !important';\n sTxt += ' }';\n sTxt += ' h3 {';\n sTxt += ' font-size: 22px !important;';\n sTxt += ' line-height: 130% !important';\n sTxt += ' }';\n sTxt += ' h4 {';\n sTxt += ' font-size: 16px !important;';\n sTxt += ' line-height: 130% !important';\n sTxt += ' }';\n sTxt += ' td.kmTextContent {';\n sTxt += ' font-size: 14px !important;';\n sTxt += ' line-height: 130% !important';\n sTxt += ' }';\n sTxt += ' td.kmTextBlockInner td.kmTextContent {';\n sTxt += ' padding-right: 18px !important;';\n sTxt += ' padding-left: 18px !important';\n sTxt += ' }';\n sTxt += ' table.kmTableBlock.kmTableMobile td.kmTableBlockInner {';\n sTxt += ' padding-left: 9px !important;';\n sTxt += ' padding-right: 9px !important';\n sTxt += ' }';\n sTxt += ' table.kmTableBlock.kmTableMobile td.kmTableBlockInner .kmTextContent {';\n sTxt += ' font-size: 14px !important;';\n sTxt += ' line-height: 130% !important;';\n sTxt += ' padding-left: 4px !important;';\n sTxt += ' padding-right: 4px !important';\n sTxt += ' }';\n sTxt += ' }';\n sTxt += ' </style>';\n sTxt += '</head>';\n sTxt +=\n '<body style=\"margin:0;padding:0;font-family:\"Raleway\", Helvetica, sans-serif;font-weight:400;letter-spacing:0.75px;line-height:180%;background-color:#F2F2F2\">';\n sTxt += ' <center>';\n sTxt +=\n ' <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"bodyTable\" width=\"100%\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0;padding:0;background-color:#F2F2F2;height:100%;margin:0;width:100%\">';\n sTxt += ' <tbody>';\n sTxt += ' <tr>';\n sTxt +=\n ' <td align=\"center\" id=\"bodyCell\" valign=\"top\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0;padding-top:10px;padding-left:10px;padding-bottom:20px;padding-right:10px;border-top:0;height:100%;margin:0;width:100%\">';\n sTxt += ' <!--[if !mso]>';\n sTxt += '\t\t\t\t\t<!-->';\n sTxt +=\n ' <div class=\"templateContainer\" style=\"border:0 none #aaa;background-color:#F2F2F2;border-radius:0;display: table; width:90%\">';\n sTxt += ' <div class=\"templateContainerInner\" style=\"padding:0\">';\n sTxt += ' <!--';\n sTxt += '\t\t\t\t\t\t\t<![endif]-->';\n sTxt += ' <!--[if mso]>';\n sTxt +=\n '\t\t\t\t\t\t\t<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"templateContainer\" width=\"90%\" ';\n sTxt +=\n ' style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0;\">';\n sTxt += '\t\t\t\t\t\t\t\t<tbody>';\n sTxt += '\t\t\t\t\t\t\t\t\t<tr>';\n sTxt +=\n '\t\t\t\t\t\t\t\t\t\t<td class=\"templateContainerInner\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0;\">';\n sTxt += '\t\t\t\t\t\t\t\t\t\t\t<![endif]-->';\n sTxt +=\n ' <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0\">';\n sTxt += ' <tr>';\n sTxt +=\n ' <td align=\"center\" valign=\"top\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0\">';\n sTxt +=\n ' <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"templateRow\" width=\"100%\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0\">';\n sTxt += ' <tbody>';\n sTxt += ' <tr>';\n sTxt +=\n ' <td class=\"rowContainer kmFloatLeft\" valign=\"top\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0\">';\n sTxt +=\n ' <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"kmTextBlock\" width=\"100%\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0\">';\n sTxt +=\n ' <tbody class=\"kmTextBlockOuter\">';\n sTxt += ' <tr>';\n sTxt +=\n ' <td class=\"kmTextBlockInner\" valign=\"top\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0;background-color:#FFFFFF;\">';\n sTxt +=\n ' <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"kmTextContentContainer\" width=\"100%\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0\">';\n sTxt +=\n ' <tbody>';\n sTxt +=\n ' <tr>';\n sTxt +=\n ' <td class=\"kmTextContent\" valign=\"top\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0;color:#272727;font-family:Helvetica, Arial;font-size:13px;line-height:200%;letter-spacing:normal;text-align:left;padding-top:40px;padding-bottom:40px;padding-left:40px;padding-right:40px;\">';\n sTxt +=\n ' <p>' +\n sPhrase +\n '<p>';\n sTxt +=\n ' </td>';\n sTxt +=\n ' </tr>';\n sTxt +=\n ' </tbody>';\n sTxt += ' </table>';\n sTxt += ' </td>';\n sTxt += ' </tr>';\n sTxt += ' </tbody>';\n sTxt += ' </table>';\n sTxt += ' </td>';\n sTxt += ' </tr>';\n sTxt += ' </tbody>';\n sTxt += ' </table>';\n sTxt += ' </td>';\n sTxt += ' </tr>';\n sTxt += ' </table>';\n sTxt += ' <!--[if !mso]>';\n sTxt += '\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<!-->';\n sTxt += ' </div>';\n sTxt += ' </div>';\n sTxt += ' <!--';\n sTxt += '\t\t\t\t\t\t\t\t\t\t\t\t\t<![endif]-->';\n sTxt += ' <!--[if mso]>';\n sTxt += '\t\t\t\t\t\t\t\t\t\t\t\t</td>';\n sTxt += '\t\t\t\t\t\t\t\t\t\t\t</tr>';\n sTxt += '\t\t\t\t\t\t\t\t\t\t</tbody>';\n sTxt += '\t\t\t\t\t\t\t\t\t</table>';\n sTxt += '\t\t\t\t\t\t\t\t\t<![endif]-->';\n sTxt += ' </td>';\n sTxt += ' </tr>';\n sTxt += ' </tbody>';\n sTxt += ' </table>';\n sTxt += ' </center>';\n sTxt += '</body>';\n sTxt += '</html> ';\n\n return sTxt;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"EmailService.js","sourceRoot":"","sources":["../../../../src/accessi-module/Services/EmailService/EmailService.ts"],"names":[],"mappings":"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","sourcesContent":["import nodemailer from 'nodemailer';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { AccessiOptions } from '../../AccessiModule';\r\nimport { Orm } from '../../../Orm';\r\nimport { Inject, Injectable } from '@nestjs/common';\r\nimport { StatoRegistrazione } from '../../Dtos/StatoRegistrazione';\r\nimport {\r\n createPasswordResetToken,\r\n getAccessiJwtSecret,\r\n} from '../../security/passwordResetToken';\r\n\r\n@Injectable()\r\nexport class EmailService {\r\n constructor(@Inject('ACCESSI_OPTIONS') private readonly accessiOptions: AccessiOptions) {}\r\n\r\n sendAccountUpdateEmail(email: string, message: string): Promise<void> {\r\n throw new Error('Method not implemented.');\r\n }\r\n\r\n private transporter = nodemailer.createTransport(this.accessiOptions.emailOptions);\r\n\r\n public async sendPasswordResetEmail(email: string, htmlMail?: string): Promise<void> {\r\n let codiceUtente: number | null = null;\r\n let resetToken: string | null = null;\r\n\r\n try {\r\n if (typeof email !== 'string' || email.trim() === '') {\r\n return;\r\n }\r\n\r\n const normalizedEmail = email.trim().toLowerCase();\r\n const userResult = await Orm.query(\r\n this.accessiOptions.databaseOptions,\r\n 'SELECT FIRST 1 CODUTE as codice_utente, STAREG as stato_registrazione FROM UTENTI WHERE LOWER(USRNAME) = ?',\r\n [normalizedEmail],\r\n );\r\n const user = userResult.map((row) => ({\r\n codiceUtente: Number(row.CODICE_UTENTE ?? row.codice_utente ?? row.CODUTE ?? row.codute),\r\n statoRegistrazione: Number(\r\n row.STATO_REGISTRAZIONE ?? row.stato_registrazione ?? row.STAREG ?? row.stareg,\r\n ),\r\n }))[0];\r\n\r\n if (\r\n !user?.codiceUtente ||\r\n user.statoRegistrazione === StatoRegistrazione.BLOCC ||\r\n user.statoRegistrazione === StatoRegistrazione.DELETE\r\n ) {\r\n return;\r\n }\r\n\r\n codiceUtente = user.codiceUtente;\r\n const nonce = uuidv4();\r\n const secret = getAccessiJwtSecret(this.accessiOptions);\r\n resetToken = createPasswordResetToken(codiceUtente, nonce, secret);\r\n\r\n await Orm.execute(\r\n this.accessiOptions.databaseOptions,\r\n 'UPDATE UTENTI SET KEYREG = ? WHERE CODUTE = ? ',\r\n [nonce, codiceUtente],\r\n );\r\n\r\n //costruizione dei queryparams\r\n const returnUrlQueryParams =\r\n '?returnUrl=' +\r\n encodeURIComponent(this.accessiOptions.confirmationEmailReturnUrl) +\r\n '&prefix=' +\r\n encodeURIComponent(this.accessiOptions.confirmationEmailPrefix ?? '');\r\n const { confirmationEmailUrl, customResetPage } = this.accessiOptions;\r\n\r\n // costruisco l'url di base\r\n let resetUrl = `${confirmationEmailUrl}/api/accessi/email/reset-password-page/${encodeURIComponent(\r\n resetToken,\r\n )}${returnUrlQueryParams}`;\r\n\r\n //solo se gli do la customResetPage\r\n if (customResetPage) {\r\n resetUrl = `${customResetPage}?token=${encodeURIComponent(resetToken)}`;\r\n }\r\n\r\n let sPhrase: string;\r\n\r\n if (htmlMail) {\r\n sPhrase = htmlMail.replace('#link_conferma_password_url', resetUrl);\r\n } else {\r\n sPhrase = ` Gentile utente,<br>\r\n abbiamo ricevuto la tua richiesta.<br><br>\r\n\r\n Per completare l'operazione, clicca sul link qui sotto:<br>\r\n <a href=\"${resetUrl}\">completa la procedura</a><br><br>\r\n\r\n Se hai richiesto la registrazione al servizio o la reimpostazione della password, questo passaggio è necessario.<br>\r\n Se non sei stato tu a effettuare questa richiesta, puoi ignorare questo messaggio in tutta sicurezza.<br><br>\r\n\r\n Questa è una comunicazione automatica, ti preghiamo di non rispondere a questa email.<br><br>\r\n\r\n Grazie.<br>`;\r\n }\r\n\r\n const html = this.GetHtmlMail(sPhrase);\r\n const mailOptions = {\r\n from: this.accessiOptions.emailOptions.from,\r\n to: email,\r\n subject: 'Scelta nuova password',\r\n text: sPhrase,\r\n html: html,\r\n };\r\n\r\n await this.transporter.sendMail(mailOptions);\r\n } catch (error) {\r\n if (codiceUtente) {\r\n await Orm.execute(\r\n this.accessiOptions.databaseOptions,\r\n 'UPDATE UTENTI SET KEYREG = NULL WHERE CODUTE = ?',\r\n [codiceUtente],\r\n ).catch(() => undefined);\r\n }\r\n console.error(\"Errore nell'invio dell'email di reset password:\", error);\r\n throw new Error(\"Errore durante l'invio dell'email di reset password.\");\r\n }\r\n }\r\n\r\n private GetHtmlMail(sPhrase: string): string {\r\n let sTxt = '';\r\n sTxt += '<html xmlns=\"http://www.w3.org/1999/xhtml\">';\r\n sTxt += '<head>';\r\n sTxt += ' <meta content=\"text/html; charset=utf-8\" http-equiv=\"Content-Type\">';\r\n sTxt += ' <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">';\r\n sTxt += ' <title></title>';\r\n sTxt += ' <style type=\"text/css\">';\r\n sTxt += ' @media only screen and (max-width:480px) {';\r\n sTxt += ' body,';\r\n sTxt += ' table,';\r\n sTxt += ' td,';\r\n sTxt += ' p,';\r\n sTxt += ' a,';\r\n sTxt += ' li,';\r\n sTxt += ' blockquote {';\r\n sTxt += ' -webkit-text-size-adjust: none !important';\r\n sTxt += ' }';\r\n sTxt += ' body {';\r\n sTxt += ' width: 100% !important;';\r\n sTxt += ' min-width: 100% !important';\r\n sTxt += ' }';\r\n sTxt += ' #bodyCell {';\r\n sTxt += ' padding: 10px !important';\r\n sTxt += ' }';\r\n sTxt += ' table.kmMobileHide {';\r\n sTxt += ' display: none !important';\r\n sTxt += ' }';\r\n sTxt += ' table.kmDesktopOnly,';\r\n sTxt += ' td.kmDesktopOnly,';\r\n sTxt += ' th.kmDesktopOnly,';\r\n sTxt += ' tr.kmDesktopOnly,';\r\n sTxt += ' td.kmDesktopWrapHeaderMobileNone {';\r\n sTxt += ' display: none !important';\r\n sTxt += ' }';\r\n sTxt += ' table.kmMobileOnly {';\r\n sTxt += ' display: table !important';\r\n sTxt += ' }';\r\n sTxt += ' tr.kmMobileOnly {';\r\n sTxt += ' display: table-row !important';\r\n sTxt += ' }';\r\n sTxt += ' td.kmMobileOnly,';\r\n sTxt += ' td.kmDesktopWrapHeader,';\r\n sTxt += ' th.kmMobileOnly {';\r\n sTxt += ' display: table-cell !important';\r\n sTxt += ' }';\r\n sTxt += ' tr.kmMobileNoAlign,';\r\n sTxt += ' table.kmMobileNoAlign {';\r\n sTxt += ' float: none !important;';\r\n sTxt += ' text-align: initial !important;';\r\n sTxt += ' vertical-align: middle !important;';\r\n sTxt += ' table-layout: fixed !important';\r\n sTxt += ' }';\r\n sTxt += ' tr.kmMobileCenterAlign {';\r\n sTxt += ' float: none !important;';\r\n sTxt += ' text-align: center !important;';\r\n sTxt += ' vertical-align: middle !important;';\r\n sTxt += ' table-layout: fixed !important';\r\n sTxt += ' }';\r\n sTxt += ' td.kmButtonCollection {';\r\n sTxt += ' padding-left: 9px !important;';\r\n sTxt += ' padding-right: 9px !important;';\r\n sTxt += ' padding-top: 9px !important;';\r\n sTxt += ' padding-bottom: 9px !importan';\r\n sTxt += ' }';\r\n sTxt += ' td.kmMobileHeaderStackDesktopNone,';\r\n sTxt += ' img.kmMobileHeaderStackDesktopNone,';\r\n sTxt += ' td.kmMobileHeaderStack {';\r\n sTxt += ' display: block !important;';\r\n sTxt += ' margin-left: auto !important;';\r\n sTxt += ' margin-right: auto !important;';\r\n sTxt += ' padding-bottom: 9px !important;';\r\n sTxt += ' padding-right: 0 !important;';\r\n sTxt += ' padding-left: 0 !important';\r\n sTxt += ' }';\r\n sTxt += ' td.kmMobileWrapHeader,';\r\n sTxt += ' td.kmMobileWrapHeaderDesktopNone {';\r\n sTxt += ' display: inline-block !important';\r\n sTxt += ' }';\r\n sTxt += ' td.kmMobileHeaderSpacing {';\r\n sTxt += ' padding-right: 10px !important';\r\n sTxt += ' }';\r\n sTxt += ' td.kmMobileHeaderNoSpacing {';\r\n sTxt += ' padding-right: 0 !important';\r\n sTxt += ' }';\r\n sTxt += ' table.kmDesktopAutoWidth {';\r\n sTxt += ' width: inherit !important';\r\n sTxt += ' }';\r\n sTxt += ' table.kmMobileAutoWidth {';\r\n sTxt += ' width: 100% !important';\r\n sTxt += ' }';\r\n sTxt += ' table.kmTextContentContainer {';\r\n sTxt += ' width: 100% !important';\r\n sTxt += ' }';\r\n sTxt += ' table.kmBoxedTextContentContainer {';\r\n sTxt += ' width: 100% !important';\r\n sTxt += ' }';\r\n sTxt += ' td.kmImageContent {';\r\n sTxt += ' padding-left: 0 !important;';\r\n sTxt += ' padding-right: 0 !important';\r\n sTxt += ' }';\r\n sTxt += ' img.kmImage {';\r\n sTxt += ' width: 100% !important';\r\n sTxt += ' }';\r\n sTxt += ' td.kmMobileStretch {';\r\n sTxt += ' padding-left: 0 !important;';\r\n sTxt += ' padding-right: 0 !important';\r\n sTxt += ' }';\r\n sTxt += ' table.kmSplitContentLeftContentContainer,';\r\n sTxt += ' table.kmSplitContentRightContentContainer,';\r\n sTxt += ' table.kmColumnContainer,';\r\n sTxt += ' td.kmVerticalButtonBarContentOuter table.kmButtonBarContent,';\r\n sTxt +=\r\n ' td.kmVerticalButtonCollectionContentOuter table.kmButtonCollectionContent,';\r\n sTxt += ' table.kmVerticalButton,';\r\n sTxt += ' table.kmVerticalButtonContent {';\r\n sTxt += ' width: 100% !important';\r\n sTxt += ' }';\r\n sTxt += ' td.kmButtonCollectionInner {';\r\n sTxt += ' padding-left: 9px !important;';\r\n sTxt += ' padding-right: 9px !important;';\r\n sTxt += ' padding-top: 9px !important;';\r\n sTxt += ' padding-bottom: 9px !important';\r\n sTxt += ' }';\r\n sTxt += ' td.kmVerticalButtonIconContent,';\r\n sTxt += ' td.kmVerticalButtonTextContent,';\r\n sTxt += ' td.kmVerticalButtonContentOuter {';\r\n sTxt += ' padding-left: 0 !important;';\r\n sTxt += ' padding-right: 0 !important;';\r\n sTxt += ' padding-bottom: 9px !important';\r\n sTxt += ' }';\r\n sTxt += ' table.kmSplitContentLeftContentContainer td.kmTextContent,';\r\n sTxt += ' table.kmSplitContentRightContentContainer td.kmTextContent,';\r\n sTxt += ' table.kmColumnContainer td.kmTextContent,';\r\n sTxt += ' table.kmSplitContentLeftContentContainer td.kmImageContent,';\r\n sTxt += ' table.kmSplitContentRightContentContainer td.kmImageContent {';\r\n sTxt += ' padding-top: 9px !important';\r\n sTxt += ' }';\r\n sTxt += ' td.rowContainer.kmFloatLeft,';\r\n sTxt += ' td.rowContainer.kmFloatLeft,';\r\n sTxt += ' td.rowContainer.kmFloatLeft.firstColumn,';\r\n sTxt += ' td.rowContainer.kmFloatLeft.firstColumn,';\r\n sTxt += ' td.rowContainer.kmFloatLeft.lastColumn,';\r\n sTxt += ' td.rowContainer.kmFloatLeft.lastColumn {';\r\n sTxt += ' float: left;';\r\n sTxt += ' clear: both;';\r\n sTxt += ' width: 100% !important';\r\n sTxt += ' }';\r\n sTxt += ' table.templateContainer,';\r\n sTxt += ' table.templateContainer.brandingContainer,';\r\n sTxt += ' div.templateContainer,';\r\n sTxt += ' div.templateContainer.brandingContainer,';\r\n sTxt += ' table.templateRow {';\r\n sTxt += ' max-width: 600px !important;';\r\n sTxt += ' width: 100% !important';\r\n sTxt += ' }';\r\n sTxt += ' h1 {';\r\n sTxt += ' font-size: 30px !important;';\r\n sTxt += ' line-height: 130% !important';\r\n sTxt += ' }';\r\n sTxt += ' h2 {';\r\n sTxt += ' font-size: 22px !important;';\r\n sTxt += ' line-height: 130% !important';\r\n sTxt += ' }';\r\n sTxt += ' h3 {';\r\n sTxt += ' font-size: 22px !important;';\r\n sTxt += ' line-height: 130% !important';\r\n sTxt += ' }';\r\n sTxt += ' h4 {';\r\n sTxt += ' font-size: 16px !important;';\r\n sTxt += ' line-height: 130% !important';\r\n sTxt += ' }';\r\n sTxt += ' td.kmTextContent {';\r\n sTxt += ' font-size: 14px !important;';\r\n sTxt += ' line-height: 130% !important';\r\n sTxt += ' }';\r\n sTxt += ' td.kmTextBlockInner td.kmTextContent {';\r\n sTxt += ' padding-right: 18px !important;';\r\n sTxt += ' padding-left: 18px !important';\r\n sTxt += ' }';\r\n sTxt += ' table.kmTableBlock.kmTableMobile td.kmTableBlockInner {';\r\n sTxt += ' padding-left: 9px !important;';\r\n sTxt += ' padding-right: 9px !important';\r\n sTxt += ' }';\r\n sTxt += ' table.kmTableBlock.kmTableMobile td.kmTableBlockInner .kmTextContent {';\r\n sTxt += ' font-size: 14px !important;';\r\n sTxt += ' line-height: 130% !important;';\r\n sTxt += ' padding-left: 4px !important;';\r\n sTxt += ' padding-right: 4px !important';\r\n sTxt += ' }';\r\n sTxt += ' }';\r\n sTxt += ' </style>';\r\n sTxt += '</head>';\r\n sTxt +=\r\n '<body style=\"margin:0;padding:0;font-family:\"Raleway\", Helvetica, sans-serif;font-weight:400;letter-spacing:0.75px;line-height:180%;background-color:#F2F2F2\">';\r\n sTxt += ' <center>';\r\n sTxt +=\r\n ' <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"bodyTable\" width=\"100%\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0;padding:0;background-color:#F2F2F2;height:100%;margin:0;width:100%\">';\r\n sTxt += ' <tbody>';\r\n sTxt += ' <tr>';\r\n sTxt +=\r\n ' <td align=\"center\" id=\"bodyCell\" valign=\"top\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0;padding-top:10px;padding-left:10px;padding-bottom:20px;padding-right:10px;border-top:0;height:100%;margin:0;width:100%\">';\r\n sTxt += ' <!--[if !mso]>';\r\n sTxt += '\t\t\t\t\t<!-->';\r\n sTxt +=\r\n ' <div class=\"templateContainer\" style=\"border:0 none #aaa;background-color:#F2F2F2;border-radius:0;display: table; width:90%\">';\r\n sTxt += ' <div class=\"templateContainerInner\" style=\"padding:0\">';\r\n sTxt += ' <!--';\r\n sTxt += '\t\t\t\t\t\t\t<![endif]-->';\r\n sTxt += ' <!--[if mso]>';\r\n sTxt +=\r\n '\t\t\t\t\t\t\t<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"templateContainer\" width=\"90%\" ';\r\n sTxt +=\r\n ' style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0;\">';\r\n sTxt += '\t\t\t\t\t\t\t\t<tbody>';\r\n sTxt += '\t\t\t\t\t\t\t\t\t<tr>';\r\n sTxt +=\r\n '\t\t\t\t\t\t\t\t\t\t<td class=\"templateContainerInner\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0;\">';\r\n sTxt += '\t\t\t\t\t\t\t\t\t\t\t<![endif]-->';\r\n sTxt +=\r\n ' <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0\">';\r\n sTxt += ' <tr>';\r\n sTxt +=\r\n ' <td align=\"center\" valign=\"top\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0\">';\r\n sTxt +=\r\n ' <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"templateRow\" width=\"100%\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0\">';\r\n sTxt += ' <tbody>';\r\n sTxt += ' <tr>';\r\n sTxt +=\r\n ' <td class=\"rowContainer kmFloatLeft\" valign=\"top\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0\">';\r\n sTxt +=\r\n ' <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"kmTextBlock\" width=\"100%\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0\">';\r\n sTxt +=\r\n ' <tbody class=\"kmTextBlockOuter\">';\r\n sTxt += ' <tr>';\r\n sTxt +=\r\n ' <td class=\"kmTextBlockInner\" valign=\"top\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0;background-color:#FFFFFF;\">';\r\n sTxt +=\r\n ' <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"kmTextContentContainer\" width=\"100%\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0\">';\r\n sTxt +=\r\n ' <tbody>';\r\n sTxt +=\r\n ' <tr>';\r\n sTxt +=\r\n ' <td class=\"kmTextContent\" valign=\"top\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0;color:#272727;font-family:Helvetica, Arial;font-size:13px;line-height:200%;letter-spacing:normal;text-align:left;padding-top:40px;padding-bottom:40px;padding-left:40px;padding-right:40px;\">';\r\n sTxt +=\r\n ' <p>' +\r\n sPhrase +\r\n '<p>';\r\n sTxt +=\r\n ' </td>';\r\n sTxt +=\r\n ' </tr>';\r\n sTxt +=\r\n ' </tbody>';\r\n sTxt += ' </table>';\r\n sTxt += ' </td>';\r\n sTxt += ' </tr>';\r\n sTxt += ' </tbody>';\r\n sTxt += ' </table>';\r\n sTxt += ' </td>';\r\n sTxt += ' </tr>';\r\n sTxt += ' </tbody>';\r\n sTxt += ' </table>';\r\n sTxt += ' </td>';\r\n sTxt += ' </tr>';\r\n sTxt += ' </table>';\r\n sTxt += ' <!--[if !mso]>';\r\n sTxt += '\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<!-->';\r\n sTxt += ' </div>';\r\n sTxt += ' </div>';\r\n sTxt += ' <!--';\r\n sTxt += '\t\t\t\t\t\t\t\t\t\t\t\t\t<![endif]-->';\r\n sTxt += ' <!--[if mso]>';\r\n sTxt += '\t\t\t\t\t\t\t\t\t\t\t\t</td>';\r\n sTxt += '\t\t\t\t\t\t\t\t\t\t\t</tr>';\r\n sTxt += '\t\t\t\t\t\t\t\t\t\t</tbody>';\r\n sTxt += '\t\t\t\t\t\t\t\t\t</table>';\r\n sTxt += '\t\t\t\t\t\t\t\t\t<![endif]-->';\r\n sTxt += ' </td>';\r\n sTxt += ' </tr>';\r\n sTxt += ' </tbody>';\r\n sTxt += ' </table>';\r\n sTxt += ' </center>';\r\n sTxt += '</body>';\r\n sTxt += '</html> ';\r\n\r\n return sTxt;\r\n }\r\n}\r\n"]}
|
|
@@ -51,7 +51,7 @@ let FiltriService = FiltriService_1 = class FiltriService {
|
|
|
51
51
|
return __awaiter(this, void 0, void 0, function* () {
|
|
52
52
|
try {
|
|
53
53
|
let params = [];
|
|
54
|
-
let getQuery = `SELECT CODUTE AS COD_UTE, PROG AS PROGRESSIVO, NUMREP AS NUM_REP, IDXPERS AS IDX_PERS, CODCLISUPER AS COD_CLI_SUPER, CODAGE AS COD_AGE, CODCLICOL AS COD_CLI_COL,
|
|
54
|
+
let getQuery = `SELECT CODUTE AS COD_UTE, PROG AS PROGRESSIVO, NUMREP AS NUM_REP, IDXPERS AS IDX_PERS, CODCLISUPER AS COD_CLI_SUPER, CODAGE AS COD_AGE, CODCLICOL AS COD_CLI_COL,
|
|
55
55
|
CODCLIENTI AS COD_CLIENTI, TIPFIL AS TIP_FIL, CODDIP AS COD_DIP, IDXPOS AS IDX_POS, CODVET AS COD_VET FROM FILTRI `;
|
|
56
56
|
if (codUte === undefined) {
|
|
57
57
|
this.logger.log('Nessun utente passato, recupero i filtri di tutti gli utenti...');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FiltriService.js","sourceRoot":"","sources":["../../../../src/accessi-module/Services/FiltriService/FiltriService.ts"],"names":[],"mappings":"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","sourcesContent":["import { Inject, Injectable } from '@nestjs/common';\nimport { AccessiOptions } from '../../AccessiModule';\nimport { TipoFiltro } from '../../Dtos/TipoFiltro';\nimport { Orm } from '../../../Orm';\nimport { RestUtilities } from '../../../Utilities';\nimport { Logger } from '../../../Logger';\nimport { FiltriUtente, FILTRI_UTENTE_DB_MAPPING } from '../../Dtos';\n\n@Injectable()\nexport class FiltriService {\n private readonly logger = new Logger(FiltriService.name);\n constructor(@Inject('ACCESSI_OPTIONS') private readonly accessiOptions: AccessiOptions) {}\n\n public async getTipoFiltri(): Promise<TipoFiltro[]> {\n try {\n let getQuery =\n 'SELECT TIPFIL AS TIP_FIL, DESFIL AS DES_FIL, FLDFIL AS FLD_FIL, FLGENABLED AS FLG_ENABLED FROM FILTRI_TIPO';\n const params = [];\n\n let result = await Orm.query(this.accessiOptions.databaseOptions, getQuery, params);\n return result.map(RestUtilities.convertKeysToCamelCase);\n } catch (error) {\n this.logger.error('Errore durante il recupero dei tipi di filtri', error);\n throw error;\n }\n }\n\n public async getFiltriUser(codUte: number): Promise<FiltriUtente[]> {\n try {\n let params = [];\n\n let getQuery = `SELECT CODUTE AS COD_UTE, PROG AS PROGRESSIVO, NUMREP AS NUM_REP, IDXPERS AS IDX_PERS, CODCLISUPER AS COD_CLI_SUPER, CODAGE AS COD_AGE, CODCLICOL AS COD_CLI_COL,\n CODCLIENTI AS COD_CLIENTI, TIPFIL AS TIP_FIL, CODDIP AS COD_DIP, IDXPOS AS IDX_POS, CODVET AS COD_VET FROM FILTRI `;\n\n if (codUte === undefined) {\n this.logger.log('Nessun utente passato, recupero i filtri di tutti gli utenti...');\n } else {\n this.logger.log('codUte passato, recupero i filtri dell utente ' + codUte);\n getQuery += ' WHERE CODUTE = ?';\n params.push(codUte);\n }\n\n let result = await Orm.query(this.accessiOptions.databaseOptions, getQuery, params);\n return result.map(RestUtilities.convertKeysToCamelCase);\n } catch (error) {\n throw error;\n }\n }\n\n public async upsertFiltriUtente(codUte: number, dto: Partial<FiltriUtente>): Promise<void> {\n try {\n console.debug('Dati utente da aggiornare: ', dto)\n if (!codUte || codUte <= 0) throw new Error('Codice utente non valido');\n\n const dbFields: string[] = ['CODUTE'];\n const values: any[] = [codUte];\n\n //aggiungo solo campi valorizzati\n for (const [key, cfg] of Object.entries(FILTRI_UTENTE_DB_MAPPING)) {\n console.log('valuto campo: ', key)\n const value = (dto as any)[key];\n\n //gestione campi vuoti, null o undefined\n if (value === undefined) {\n console.log(`Campo ${key} vuoto: ${value}`)\n continue\n }\n\n if (value === null || value === '') {\n dbFields.push(cfg.dbField);\n values.push(null);\n continue\n }\n\n\n\n // if (value === undefined || value === null || value === '') {\n // console.log(`Campo ${key} vuoto: ${value}`)\n // continue;\n // }\n\n if (cfg.numeric && typeof value !== 'number') {\n throw new Error(`Il campo ${key} deve essere un numero`);\n }\n if (!cfg.numeric && typeof value !== 'string') {\n throw new Error(`Il campo ${key} deve essere una stringa`);\n }\n dbFields.push(cfg.dbField);\n values.push(value);\n }\n\n if (dbFields.length === 1) {\n this.logger.log(`Nessun campo valido da inserire per l'utente ${codUte}`)\n return\n }\n\n let sSql = `UPDATE OR INSERT INTO FILTRI (${dbFields.join(',')}) VALUES (${values.map(() => '?').join(', ')}) MATCHING (CODUTE)`\n await Orm.execute(this.accessiOptions.databaseOptions, sSql, values)\n\n this.logger.log('Update or Insert filtri OK per CODUTE = ' + codUte)\n\n } catch (error) {\n throw new Error(`Errore durante update or insert filtri per utente ${codUte}: ${error.message}`);\n\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"FiltriService.js","sourceRoot":"","sources":["../../../../src/accessi-module/Services/FiltriService/FiltriService.ts"],"names":[],"mappings":"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","sourcesContent":["import { Inject, Injectable } from '@nestjs/common';\r\nimport { AccessiOptions } from '../../AccessiModule';\r\nimport { TipoFiltro } from '../../Dtos/TipoFiltro';\r\nimport { Orm } from '../../../Orm';\r\nimport { RestUtilities } from '../../../Utilities';\r\nimport { Logger } from '../../../Logger';\r\nimport { FiltriUtente, FILTRI_UTENTE_DB_MAPPING } from '../../Dtos';\r\n\r\n@Injectable()\r\nexport class FiltriService {\r\n private readonly logger = new Logger(FiltriService.name);\r\n constructor(@Inject('ACCESSI_OPTIONS') private readonly accessiOptions: AccessiOptions) {}\r\n\r\n public async getTipoFiltri(): Promise<TipoFiltro[]> {\r\n try {\r\n let getQuery =\r\n 'SELECT TIPFIL AS TIP_FIL, DESFIL AS DES_FIL, FLDFIL AS FLD_FIL, FLGENABLED AS FLG_ENABLED FROM FILTRI_TIPO';\r\n const params = [];\r\n\r\n let result = await Orm.query(this.accessiOptions.databaseOptions, getQuery, params);\r\n return result.map(RestUtilities.convertKeysToCamelCase);\r\n } catch (error) {\r\n this.logger.error('Errore durante il recupero dei tipi di filtri', error);\r\n throw error;\r\n }\r\n }\r\n\r\n public async getFiltriUser(codUte: number): Promise<FiltriUtente[]> {\r\n try {\r\n let params = [];\r\n\r\n let getQuery = `SELECT CODUTE AS COD_UTE, PROG AS PROGRESSIVO, NUMREP AS NUM_REP, IDXPERS AS IDX_PERS, CODCLISUPER AS COD_CLI_SUPER, CODAGE AS COD_AGE, CODCLICOL AS COD_CLI_COL,\r\n CODCLIENTI AS COD_CLIENTI, TIPFIL AS TIP_FIL, CODDIP AS COD_DIP, IDXPOS AS IDX_POS, CODVET AS COD_VET FROM FILTRI `;\r\n\r\n if (codUte === undefined) {\r\n this.logger.log('Nessun utente passato, recupero i filtri di tutti gli utenti...');\r\n } else {\r\n this.logger.log('codUte passato, recupero i filtri dell utente ' + codUte);\r\n getQuery += ' WHERE CODUTE = ?';\r\n params.push(codUte);\r\n }\r\n\r\n let result = await Orm.query(this.accessiOptions.databaseOptions, getQuery, params);\r\n return result.map(RestUtilities.convertKeysToCamelCase);\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n\r\n public async upsertFiltriUtente(codUte: number, dto: Partial<FiltriUtente>): Promise<void> {\r\n try {\r\n console.debug('Dati utente da aggiornare: ', dto)\r\n if (!codUte || codUte <= 0) throw new Error('Codice utente non valido');\r\n\r\n const dbFields: string[] = ['CODUTE'];\r\n const values: any[] = [codUte];\r\n\r\n //aggiungo solo campi valorizzati\r\n for (const [key, cfg] of Object.entries(FILTRI_UTENTE_DB_MAPPING)) {\r\n console.log('valuto campo: ', key)\r\n const value = (dto as any)[key];\r\n\r\n //gestione campi vuoti, null o undefined\r\n if (value === undefined) {\r\n console.log(`Campo ${key} vuoto: ${value}`)\r\n continue\r\n }\r\n\r\n if (value === null || value === '') {\r\n dbFields.push(cfg.dbField);\r\n values.push(null);\r\n continue\r\n }\r\n\r\n\r\n\r\n // if (value === undefined || value === null || value === '') {\r\n // console.log(`Campo ${key} vuoto: ${value}`)\r\n // continue;\r\n // }\r\n\r\n if (cfg.numeric && typeof value !== 'number') {\r\n throw new Error(`Il campo ${key} deve essere un numero`);\r\n }\r\n if (!cfg.numeric && typeof value !== 'string') {\r\n throw new Error(`Il campo ${key} deve essere una stringa`);\r\n }\r\n dbFields.push(cfg.dbField);\r\n values.push(value);\r\n }\r\n\r\n if (dbFields.length === 1) {\r\n this.logger.log(`Nessun campo valido da inserire per l'utente ${codUte}`)\r\n return\r\n }\r\n\r\n let sSql = `UPDATE OR INSERT INTO FILTRI (${dbFields.join(',')}) VALUES (${values.map(() => '?').join(', ')}) MATCHING (CODUTE)`\r\n await Orm.execute(this.accessiOptions.databaseOptions, sSql, values)\r\n\r\n this.logger.log('Update or Insert filtri OK per CODUTE = ' + codUte)\r\n\r\n } catch (error) {\r\n throw new Error(`Errore durante update or insert filtri per utente ${codUte}: ${error.message}`);\r\n\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -97,18 +97,18 @@ let PermissionService = class PermissionService {
|
|
|
97
97
|
}
|
|
98
98
|
getRolesWithMenus() {
|
|
99
99
|
return __awaiter(this, void 0, void 0, function* () {
|
|
100
|
-
const query = `
|
|
101
|
-
SELECT
|
|
102
|
-
R.CODRUO AS codice_ruolo,
|
|
103
|
-
R.DESRUO AS descrizione_ruolo,
|
|
104
|
-
M.CODMNU AS codice_menu,
|
|
105
|
-
M.DESMNU AS descrizione_menu,
|
|
106
|
-
M.NOTE AS note,
|
|
107
|
-
RM.TIPABI AS tipo_abilitazione
|
|
108
|
-
FROM RUOLI R
|
|
109
|
-
LEFT JOIN RUOLI_MNU RM ON R.CODRUO = RM.CODRUO
|
|
110
|
-
LEFT JOIN MENU M ON RM.CODMNU = M.CODMNU
|
|
111
|
-
ORDER BY R.CODRUO, M.CODMNU
|
|
100
|
+
const query = `
|
|
101
|
+
SELECT
|
|
102
|
+
R.CODRUO AS codice_ruolo,
|
|
103
|
+
R.DESRUO AS descrizione_ruolo,
|
|
104
|
+
M.CODMNU AS codice_menu,
|
|
105
|
+
M.DESMNU AS descrizione_menu,
|
|
106
|
+
M.NOTE AS note,
|
|
107
|
+
RM.TIPABI AS tipo_abilitazione
|
|
108
|
+
FROM RUOLI R
|
|
109
|
+
LEFT JOIN RUOLI_MNU RM ON R.CODRUO = RM.CODRUO
|
|
110
|
+
LEFT JOIN MENU M ON RM.CODMNU = M.CODMNU
|
|
111
|
+
ORDER BY R.CODRUO, M.CODMNU
|
|
112
112
|
`;
|
|
113
113
|
let result = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, query, []);
|
|
114
114
|
result = result.map(Utilities_1.RestUtilities.convertKeysToCamelCase);
|
|
@@ -184,20 +184,20 @@ let PermissionService = class PermissionService {
|
|
|
184
184
|
}
|
|
185
185
|
getMenus() {
|
|
186
186
|
return __awaiter(this, void 0, void 0, function* () {
|
|
187
|
-
const query = `
|
|
188
|
-
SELECT
|
|
189
|
-
M.CODMNU AS codiceMenu,
|
|
190
|
-
M.DESMNU AS descrizioneMenu,
|
|
191
|
-
M.CODGRP AS codiceGruppo,
|
|
192
|
-
G.DESGRP AS descrizioneGruppo,
|
|
193
|
-
M.ICON AS icona,
|
|
194
|
-
M.CODTIP AS tipo,
|
|
195
|
-
M.PAGINA AS pagina,
|
|
196
|
-
M.NOTE AS note
|
|
197
|
-
FROM MENU M
|
|
198
|
-
LEFT JOIN MENU_GRP G ON M.CODGRP = G.CODGRP
|
|
199
|
-
WHERE M.FLGENABLED = 1
|
|
200
|
-
ORDER BY G.CODGRP, M.CODMNU
|
|
187
|
+
const query = `
|
|
188
|
+
SELECT
|
|
189
|
+
M.CODMNU AS codiceMenu,
|
|
190
|
+
M.DESMNU AS descrizioneMenu,
|
|
191
|
+
M.CODGRP AS codiceGruppo,
|
|
192
|
+
G.DESGRP AS descrizioneGruppo,
|
|
193
|
+
M.ICON AS icona,
|
|
194
|
+
M.CODTIP AS tipo,
|
|
195
|
+
M.PAGINA AS pagina,
|
|
196
|
+
M.NOTE AS note
|
|
197
|
+
FROM MENU M
|
|
198
|
+
LEFT JOIN MENU_GRP G ON M.CODGRP = G.CODGRP
|
|
199
|
+
WHERE M.FLGENABLED = 1
|
|
200
|
+
ORDER BY G.CODGRP, M.CODMNU
|
|
201
201
|
`;
|
|
202
202
|
const result = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, query, []);
|
|
203
203
|
return result.map(Utilities_1.RestUtilities.convertKeysToCamelCase);
|
|
@@ -208,24 +208,24 @@ let PermissionService = class PermissionService {
|
|
|
208
208
|
const filtersClause = includeDisabled
|
|
209
209
|
? ''
|
|
210
210
|
: 'WHERE M.FLGENABLED = 1 AND (G.FLGENABLED IS NULL OR G.FLGENABLED = 1)';
|
|
211
|
-
const query = `
|
|
212
|
-
SELECT
|
|
213
|
-
M.CODMNU AS codice_menu,
|
|
214
|
-
M.DESMNU AS descrizione_menu,
|
|
215
|
-
M.CODGRP AS codice_gruppo,
|
|
216
|
-
G.DESGRP AS descrizione_gruppo,
|
|
217
|
-
M.ICON AS icona,
|
|
218
|
-
M.CODTIP AS tipo,
|
|
219
|
-
M.PAGINA AS pagina,
|
|
220
|
-
M.NOTE AS note,
|
|
221
|
-
G.ORDINE AS ordine_gruppo,
|
|
222
|
-
M.ORDINE as ordine_menu,
|
|
223
|
-
M.FLGENABLED AS menu_enabled,
|
|
224
|
-
G.FLGENABLED AS group_enabled
|
|
225
|
-
FROM MENU M
|
|
226
|
-
LEFT JOIN MENU_GRP G ON M.CODGRP = G.CODGRP
|
|
227
|
-
${filtersClause}
|
|
228
|
-
ORDER BY G.CODGRP, M.CODMNU
|
|
211
|
+
const query = `
|
|
212
|
+
SELECT
|
|
213
|
+
M.CODMNU AS codice_menu,
|
|
214
|
+
M.DESMNU AS descrizione_menu,
|
|
215
|
+
M.CODGRP AS codice_gruppo,
|
|
216
|
+
G.DESGRP AS descrizione_gruppo,
|
|
217
|
+
M.ICON AS icona,
|
|
218
|
+
M.CODTIP AS tipo,
|
|
219
|
+
M.PAGINA AS pagina,
|
|
220
|
+
M.NOTE AS note,
|
|
221
|
+
G.ORDINE AS ordine_gruppo,
|
|
222
|
+
M.ORDINE as ordine_menu,
|
|
223
|
+
M.FLGENABLED AS menu_enabled,
|
|
224
|
+
G.FLGENABLED AS group_enabled
|
|
225
|
+
FROM MENU M
|
|
226
|
+
LEFT JOIN MENU_GRP G ON M.CODGRP = G.CODGRP
|
|
227
|
+
${filtersClause}
|
|
228
|
+
ORDER BY G.CODGRP, M.CODMNU
|
|
229
229
|
`;
|
|
230
230
|
const result = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, query, []);
|
|
231
231
|
const groupMap = new Map();
|
|
@@ -269,57 +269,57 @@ let PermissionService = class PermissionService {
|
|
|
269
269
|
let abilitazioni = [];
|
|
270
270
|
let ruoli = [];
|
|
271
271
|
if (isSuperAdmin) {
|
|
272
|
-
const query = `
|
|
273
|
-
SELECT
|
|
274
|
-
M.CODMNU AS codice_menu,
|
|
275
|
-
30 AS tipo_abilitazione,
|
|
276
|
-
M.DESMNU AS descrizione_menu,
|
|
277
|
-
G.DESGRP AS descrizione_gruppo,
|
|
278
|
-
G.CODGRP AS codice_gruppo,
|
|
279
|
-
M.ICON AS icona,
|
|
280
|
-
M.CODTIP AS tipo,
|
|
281
|
-
M.PAGINA AS pagina,
|
|
282
|
-
M.NOTE AS note
|
|
283
|
-
FROM MENU M
|
|
284
|
-
INNER JOIN MENU_GRP G ON G.CODGRP = M.CODGRP
|
|
285
|
-
WHERE M.FLGENABLED = 1 AND G.FLGENABLED = 1
|
|
272
|
+
const query = `
|
|
273
|
+
SELECT
|
|
274
|
+
M.CODMNU AS codice_menu,
|
|
275
|
+
30 AS tipo_abilitazione,
|
|
276
|
+
M.DESMNU AS descrizione_menu,
|
|
277
|
+
G.DESGRP AS descrizione_gruppo,
|
|
278
|
+
G.CODGRP AS codice_gruppo,
|
|
279
|
+
M.ICON AS icona,
|
|
280
|
+
M.CODTIP AS tipo,
|
|
281
|
+
M.PAGINA AS pagina,
|
|
282
|
+
M.NOTE AS note
|
|
283
|
+
FROM MENU M
|
|
284
|
+
INNER JOIN MENU_GRP G ON G.CODGRP = M.CODGRP
|
|
285
|
+
WHERE M.FLGENABLED = 1 AND G.FLGENABLED = 1
|
|
286
286
|
`;
|
|
287
287
|
abilitazioni = (yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, query, [])
|
|
288
288
|
.then(results => results.map(Utilities_1.RestUtilities.convertKeysToCamelCase)));
|
|
289
289
|
}
|
|
290
290
|
else {
|
|
291
|
-
const queryAbilitazioni = `
|
|
292
|
-
SELECT
|
|
293
|
-
A.CODMNU AS codice_menu,
|
|
294
|
-
A.TIPABI AS tipo_abilitazione,
|
|
295
|
-
M.DESMNU AS descrizione_menu,
|
|
296
|
-
G.DESGRP AS descrizione_gruppo,
|
|
297
|
-
G.CODGRP AS codice_gruppo,
|
|
298
|
-
M.ICON AS icona,
|
|
299
|
-
M.CODTIP AS tipo,
|
|
300
|
-
M.PAGINA AS pagina,
|
|
301
|
-
M.NOTE AS note
|
|
302
|
-
FROM ABILITAZIONI A
|
|
303
|
-
INNER JOIN MENU M ON A.CODMNU = M.CODMNU
|
|
304
|
-
INNER JOIN MENU_GRP G ON G.CODGRP = M.CODGRP
|
|
305
|
-
WHERE A.CODUTE = ? AND M.FLGENABLED = 1 AND G.FLGENABLED = 1
|
|
291
|
+
const queryAbilitazioni = `
|
|
292
|
+
SELECT
|
|
293
|
+
A.CODMNU AS codice_menu,
|
|
294
|
+
A.TIPABI AS tipo_abilitazione,
|
|
295
|
+
M.DESMNU AS descrizione_menu,
|
|
296
|
+
G.DESGRP AS descrizione_gruppo,
|
|
297
|
+
G.CODGRP AS codice_gruppo,
|
|
298
|
+
M.ICON AS icona,
|
|
299
|
+
M.CODTIP AS tipo,
|
|
300
|
+
M.PAGINA AS pagina,
|
|
301
|
+
M.NOTE AS note
|
|
302
|
+
FROM ABILITAZIONI A
|
|
303
|
+
INNER JOIN MENU M ON A.CODMNU = M.CODMNU
|
|
304
|
+
INNER JOIN MENU_GRP G ON G.CODGRP = M.CODGRP
|
|
305
|
+
WHERE A.CODUTE = ? AND M.FLGENABLED = 1 AND G.FLGENABLED = 1
|
|
306
306
|
`;
|
|
307
307
|
abilitazioni = (yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, queryAbilitazioni, [codiceUtente])
|
|
308
308
|
.then(results => results.map(Utilities_1.RestUtilities.convertKeysToCamelCase)));
|
|
309
|
-
const queryRuoli = `
|
|
310
|
-
SELECT
|
|
311
|
-
R.CODRUO AS codice_ruolo,
|
|
312
|
-
R.DESRUO AS descrizione_ruolo,
|
|
313
|
-
RM.CODMNU AS codice_menu,
|
|
314
|
-
RM.TIPABI AS tipo_abilitazione,
|
|
315
|
-
M.DESMNU AS descrizione_menu,
|
|
316
|
-
M.NOTE AS note
|
|
317
|
-
FROM UTENTI_RUOLI RU
|
|
318
|
-
INNER JOIN RUOLI R ON RU.CODRUO = R.CODRUO
|
|
319
|
-
INNER JOIN RUOLI_MNU RM ON R.CODRUO = RM.CODRUO
|
|
320
|
-
INNER JOIN MENU M ON RM.CODMNU = M.CODMNU
|
|
321
|
-
INNER JOIN MENU_GRP G ON G.CODGRP = M.CODGRP
|
|
322
|
-
WHERE RU.CODUTE = ? AND M.FLGENABLED = 1 AND G.FLGENABLED = 1
|
|
309
|
+
const queryRuoli = `
|
|
310
|
+
SELECT
|
|
311
|
+
R.CODRUO AS codice_ruolo,
|
|
312
|
+
R.DESRUO AS descrizione_ruolo,
|
|
313
|
+
RM.CODMNU AS codice_menu,
|
|
314
|
+
RM.TIPABI AS tipo_abilitazione,
|
|
315
|
+
M.DESMNU AS descrizione_menu,
|
|
316
|
+
M.NOTE AS note
|
|
317
|
+
FROM UTENTI_RUOLI RU
|
|
318
|
+
INNER JOIN RUOLI R ON RU.CODRUO = R.CODRUO
|
|
319
|
+
INNER JOIN RUOLI_MNU RM ON R.CODRUO = RM.CODRUO
|
|
320
|
+
INNER JOIN MENU M ON RM.CODMNU = M.CODMNU
|
|
321
|
+
INNER JOIN MENU_GRP G ON G.CODGRP = M.CODGRP
|
|
322
|
+
WHERE RU.CODUTE = ? AND M.FLGENABLED = 1 AND G.FLGENABLED = 1
|
|
323
323
|
`;
|
|
324
324
|
let ruoliResult = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, queryRuoli, [codiceUtente]);
|
|
325
325
|
ruoliResult = ruoliResult.map(Utilities_1.RestUtilities.convertKeysToCamelCase);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PermissionService.js","sourceRoot":"","sources":["../../../../src/accessi-module/Services/PermissionService/PermissionService.ts"],"names":[],"mappings":"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","sourcesContent":["\nimport { Orm } from \"../../../Orm\";\nimport { RestUtilities } from \"../../../Utilities\";\nimport { AccessiOptions } from \"../../AccessiModule\";\nimport { Permission, TipoAbilitazione } from \"../../Dtos\";\nimport { AbilitazioneMenu } from \"../../Dtos/AbilitazioneMenu\";\nimport { GroupWithMenusEntity } from \"../../Dtos/GetGroupsWithMenusResponse\";\nimport { MenuEntity } from \"../../Dtos/GetMenusResponse\";\nimport { Role } from \"../../Dtos/Role\";\nimport { Inject, Injectable } from \"@nestjs/common\";\n\n@Injectable()\nexport class PermissionService {\n constructor(\n @Inject('ACCESSI_OPTIONS') private readonly accessiOptions: AccessiOptions\n ) { }\n\n\n public async addAbilitazioni(codiceUtente: number, menuAbilitazioni: any[]): Promise<void> {\n const deleteQuery = `DELETE FROM ABILITAZIONI WHERE CODUTE = ?`;\n await Orm.execute(this.accessiOptions.databaseOptions, deleteQuery, [codiceUtente]);\n\n const abilitazioniToInsert = menuAbilitazioni\n .flatMap(menuGrp => menuGrp.menu)\n .filter(menu => menu.flgChk)\n .map(menu => [codiceUtente, menu.codiceMenu, menu.tipoAbilitazione]);\n\n const insertQuery = `UPDATE OR INSERT INTO ABILITAZIONI (CODUTE, CODMNU, TIPABI) VALUES (?, ?, ?)`;\n\n for (const params of abilitazioniToInsert) {\n await Orm.execute(this.accessiOptions.databaseOptions, insertQuery, params);\n }\n }\n\n\n public async resetAbilitazioni(codiceUtente: number): Promise<void> {\n const query = \"DELETE FROM ABILITAZIONI WHERE CODUTE = ?\";\n await Orm.execute(this.accessiOptions.databaseOptions, query, [codiceUtente]);\n }\n\n public async updateOrInsertRole(role: Role, codiceRuolo: number | null = null): Promise<void> {\n\n // creazione nuovo ruolo\n if (codiceRuolo == null) {\n const createRoleQuery = `INSERT INTO RUOLI (DESRUO) VALUES (?)`;\n await Orm.execute(this.accessiOptions.databaseOptions, createRoleQuery, [role.descrizioneRuolo]);\n\n const createdRoleResult = await Orm.query(\n this.accessiOptions.databaseOptions,\n 'SELECT FIRST 1 CODRUO FROM RUOLI WHERE DESRUO = ? ORDER BY CODRUO DESC',\n [role.descrizioneRuolo]\n );\n const rawCodiceRuolo = createdRoleResult?.[0]?.CODRUO ?? createdRoleResult?.[0]?.codruo;\n const parsedCodiceRuolo = typeof rawCodiceRuolo === 'number'\n ? rawCodiceRuolo\n : Number.parseInt(`${rawCodiceRuolo ?? ''}`, 10);\n if (Number.isNaN(parsedCodiceRuolo)) {\n throw new Error('Creazione ruolo non riuscita: impossibile recuperare CODRUO.');\n }\n codiceRuolo = parsedCodiceRuolo;\n } else\n // aggiornamento ruolo esistente\n {\n\n let updateRoleQuery = `UPDATE RUOLI SET DESRUO = ? WHERE CODRUO = ?`;\n await Orm.query(this.accessiOptions.databaseOptions, updateRoleQuery, [role.descrizioneRuolo, codiceRuolo]);\n\n let deleteRoleMenuQuery = `DELETE FROM RUOLI_MNU WHERE CODRUO = ?`;\n await Orm.query(this.accessiOptions.databaseOptions, deleteRoleMenuQuery, [codiceRuolo]);\n }\n\n if (codiceRuolo === null) {\n throw new Error('Operazione ruolo non riuscita: codice ruolo non valorizzato.');\n }\n\n let createRoleMenuQuery = `INSERT INTO RUOLI_MNU (CODRUO, CODMNU, TIPABI) VALUES (?, ?, ?)`;\n for (let menu of role.menu) {\n await Orm.query(this.accessiOptions.databaseOptions, createRoleMenuQuery, [codiceRuolo, menu.codiceMenu, menu.tipoAbilitazione]);\n }\n\n }\n\n\n public async getRolesWithMenus(): Promise<Role[]> {\n const query = `\n SELECT \n R.CODRUO AS codice_ruolo, \n R.DESRUO AS descrizione_ruolo, \n M.CODMNU AS codice_menu, \n M.DESMNU AS descrizione_menu,\n M.NOTE AS note,\n RM.TIPABI AS tipo_abilitazione\n FROM RUOLI R\n LEFT JOIN RUOLI_MNU RM ON R.CODRUO = RM.CODRUO\n LEFT JOIN MENU M ON RM.CODMNU = M.CODMNU\n ORDER BY R.CODRUO, M.CODMNU\n `;\n\n let result = await Orm.query(this.accessiOptions.databaseOptions, query, []);\n result = result.map(RestUtilities.convertKeysToCamelCase);\n\n const ruoliMap = new Map<number, Role>();\n\n for (const row of result) {\n const { codiceRuolo, descrizioneRuolo, codiceMenu, descrizioneMenu, tipoAbilitazione } = row;\n\n if (!ruoliMap.has(codiceRuolo)) {\n ruoliMap.set(codiceRuolo, {\n codiceRuolo,\n descrizioneRuolo: descrizioneRuolo?.trim(),\n menu: []\n });\n }\n\n const abilitationValue = typeof tipoAbilitazione === 'number'\n ? tipoAbilitazione\n : Number.parseInt(`${tipoAbilitazione ?? ''}`, 10);\n\n if (!codiceMenu || Number.isNaN(abilitationValue) || abilitationValue <= TipoAbilitazione.NESSUNA) {\n continue;\n }\n\n ruoliMap.get(codiceRuolo)!.menu.push({\n codiceRuolo: codiceRuolo,\n codiceMenu: codiceMenu.trim(),\n tipoAbilitazione: abilitationValue as TipoAbilitazione,\n });\n }\n\n return Array.from(ruoliMap.values());\n }\n\n\n public async assignRolesToUser(codiceUtente: number, roles: number[]): Promise<void> {\n\n const userExistsQuery = `SELECT COUNT(*) FROM UTENTI WHERE CODUTE = ?`;\n let result = await Orm.query(this.accessiOptions.databaseOptions, userExistsQuery, [codiceUtente]);\n\n if (result[0].COUNT === 0) {\n throw new Error(`L'utente con codice ${codiceUtente} non esiste.`);\n }\n\n const deleteQuery = `DELETE FROM UTENTI_RUOLI WHERE CODUTE = ?`;\n await Orm.query(this.accessiOptions.databaseOptions, deleteQuery, [codiceUtente]);\n\n const insertQuery = `INSERT INTO UTENTI_RUOLI (CODUTE, CODRUO) VALUES (?, ?)`;\n\n for (const codiceRuolo of roles) {\n await Orm.query(this.accessiOptions.databaseOptions, insertQuery, [codiceUtente, codiceRuolo]);\n }\n }\n\n\n public async assignPermissionsToUser(codiceUtente: number, permissions: Permission[]): Promise<void> {\n\n const userExistsQuery = `SELECT COUNT(*) FROM UTENTI WHERE CODUTE = ?`;\n let result = await Orm.query(this.accessiOptions.databaseOptions, userExistsQuery, [codiceUtente]);\n\n if (result[0].COUNT === 0) {\n throw new Error(`L'utente con codice ${codiceUtente} non esiste.`);\n }\n\n const deleteQuery = `DELETE FROM ABILITAZIONI WHERE CODUTE = ?`;\n await Orm.execute(this.accessiOptions.databaseOptions, deleteQuery, [codiceUtente]);\n\n const insertQuery = `INSERT INTO ABILITAZIONI (CODUTE, CODMNU, TIPABI) VALUES (?, ?, ?)`;\n\n for (const permission of permissions) {\n await Orm.execute(this.accessiOptions.databaseOptions, insertQuery, [codiceUtente, permission.codiceMenu, permission.tipoAbilitazione]);\n }\n }\n\n\n public async deleteRole(codiceRuolo: number): Promise<void> {\n\n const existsQuery = `SELECT COUNT(*) FROM RUOLI WHERE CODRUO = ?`;\n let result = await Orm.query(this.accessiOptions.databaseOptions, existsQuery, [codiceRuolo]);\n\n if (result[0].COUNT === 0) {\n throw new Error(`Il ruolo con codice ${codiceRuolo} non esiste.`);\n }\n\n const deleteRoleMenusQuery = `DELETE FROM RUOLI_MNU WHERE CODRUO = ?`;\n await Orm.query(this.accessiOptions.databaseOptions, deleteRoleMenusQuery, [codiceRuolo]);\n\n const deleteRoleUsersQuery = `DELETE FROM UTENTI_RUOLI WHERE CODRUO = ?`;\n await Orm.query(this.accessiOptions.databaseOptions, deleteRoleUsersQuery, [codiceRuolo]);\n\n const deleteRoleQuery = `DELETE FROM RUOLI WHERE CODRUO = ?`;\n await Orm.query(this.accessiOptions.databaseOptions, deleteRoleQuery, [codiceRuolo]);\n\n }\n\n\n public async getMenus(): Promise<MenuEntity[]> {\n const query = `\n SELECT \n M.CODMNU AS codiceMenu, \n M.DESMNU AS descrizioneMenu,\n M.CODGRP AS codiceGruppo,\n G.DESGRP AS descrizioneGruppo,\n M.ICON AS icona,\n M.CODTIP AS tipo,\n M.PAGINA AS pagina,\n M.NOTE AS note\n FROM MENU M\n LEFT JOIN MENU_GRP G ON M.CODGRP = G.CODGRP\n WHERE M.FLGENABLED = 1\n ORDER BY G.CODGRP, M.CODMNU\n `;\n\n const result = await Orm.query(this.accessiOptions.databaseOptions, query, []);\n return result.map(RestUtilities.convertKeysToCamelCase);\n }\n\n\n public async getGroupsWithMenus(includeDisabled = false): Promise<GroupWithMenusEntity[]> {\n const filtersClause = includeDisabled\n ? ''\n : 'WHERE M.FLGENABLED = 1 AND (G.FLGENABLED IS NULL OR G.FLGENABLED = 1)';\n\n const query = `\n SELECT\n M.CODMNU AS codice_menu,\n M.DESMNU AS descrizione_menu,\n M.CODGRP AS codice_gruppo,\n G.DESGRP AS descrizione_gruppo,\n M.ICON AS icona,\n M.CODTIP AS tipo,\n M.PAGINA AS pagina,\n M.NOTE AS note,\n G.ORDINE AS ordine_gruppo,\n M.ORDINE as ordine_menu,\n M.FLGENABLED AS menu_enabled,\n G.FLGENABLED AS group_enabled\n FROM MENU M\n LEFT JOIN MENU_GRP G ON M.CODGRP = G.CODGRP\n ${filtersClause}\n ORDER BY G.CODGRP, M.CODMNU\n `;\n\n const result = await Orm.query(this.accessiOptions.databaseOptions, query, []);\n\n const groupMap = new Map<\n string,\n GroupWithMenusEntity & { menus: (MenuEntity & { enabled?: boolean })[] }\n >();\n\n result.forEach(row => {\n const converted = RestUtilities.convertKeysToCamelCase(row) as MenuEntity & {\n menuEnabled?: number | boolean;\n groupEnabled?: number | boolean;\n };\n\n const { menuEnabled, groupEnabled, ...menuBase } = converted as any;\n const normalizedGroupKey = menuBase.codiceGruppo ?? '__UNGROUPED__';\n const groupEnabledFlag =\n groupEnabled === undefined ? true : Number(groupEnabled) === 1 || groupEnabled === true;\n const menuEnabledFlag =\n menuEnabled === undefined ? true : Number(menuEnabled) === 1 || menuEnabled === true;\n\n if (!groupMap.has(normalizedGroupKey)) {\n groupMap.set(normalizedGroupKey, {\n codiceGruppo: menuBase.codiceGruppo ?? normalizedGroupKey,\n descrizioneGruppo: menuBase.descrizioneGruppo,\n ordineGruppo: menuBase.ordineGruppo,\n enabled: groupEnabledFlag,\n menus: [],\n });\n }\n\n if (menuBase.codiceMenu) {\n groupMap.get(normalizedGroupKey)!.menus.push({\n ...menuBase,\n enabled: menuEnabledFlag,\n });\n }\n });\n\n const groupsArray = Array.from(groupMap.values())\n .map(group => ({\n ...group,\n menus: (group.menus ?? []).sort(\n (a, b) =>\n (a.ordineMenu ?? Number.MAX_SAFE_INTEGER) - (b.ordineMenu ?? Number.MAX_SAFE_INTEGER),\n ),\n }))\n .sort(\n (a, b) =>\n (a.ordineGruppo ?? Number.MAX_SAFE_INTEGER) - (b.ordineGruppo ?? Number.MAX_SAFE_INTEGER),\n );\n\n return groupsArray;\n }\n\n\n\n public async getUserRolesAndGrants(codiceUtente: number): Promise<{\n abilitazioni: AbilitazioneMenu[],\n ruoli: Role[],\n grants: AbilitazioneMenu[]\n }> {\n const codiceUtenteQuery = \"SELECT FLGSUPER as flag_super FROM UTENTI_CONFIG WHERE CODUTE = ?\";\n let result = await Orm.query(this.accessiOptions.databaseOptions, codiceUtenteQuery, [codiceUtente]);\n if (!result || result.length == 0) throw new Error(\"Nessun utente trovato con il codice utente \" + codiceUtente);\n\n result = result.map(RestUtilities.convertKeysToCamelCase) as { flagSuper: boolean }[];\n const isSuperAdmin = result[0].flagSuper;\n\n let abilitazioni: AbilitazioneMenu[] = [];\n let ruoli: Role[] = [];\n\n if (isSuperAdmin) {\n const query = `\n SELECT\n M.CODMNU AS codice_menu,\n 30 AS tipo_abilitazione,\n M.DESMNU AS descrizione_menu,\n G.DESGRP AS descrizione_gruppo,\n G.CODGRP AS codice_gruppo,\n M.ICON AS icona,\n M.CODTIP AS tipo,\n M.PAGINA AS pagina,\n M.NOTE AS note\n FROM MENU M\n INNER JOIN MENU_GRP G ON G.CODGRP = M.CODGRP\n WHERE M.FLGENABLED = 1 AND G.FLGENABLED = 1\n `;\n abilitazioni = await Orm.query(this.accessiOptions.databaseOptions, query, [])\n .then(results => results.map(RestUtilities.convertKeysToCamelCase)) as AbilitazioneMenu[];\n } else {\n const queryAbilitazioni = `\n SELECT\n A.CODMNU AS codice_menu,\n A.TIPABI AS tipo_abilitazione,\n M.DESMNU AS descrizione_menu,\n G.DESGRP AS descrizione_gruppo,\n G.CODGRP AS codice_gruppo,\n M.ICON AS icona,\n M.CODTIP AS tipo,\n M.PAGINA AS pagina,\n M.NOTE AS note\n FROM ABILITAZIONI A\n INNER JOIN MENU M ON A.CODMNU = M.CODMNU\n INNER JOIN MENU_GRP G ON G.CODGRP = M.CODGRP\n WHERE A.CODUTE = ? AND M.FLGENABLED = 1 AND G.FLGENABLED = 1\n `;\n abilitazioni = await Orm.query(this.accessiOptions.databaseOptions, queryAbilitazioni, [codiceUtente])\n .then(results => results.map(RestUtilities.convertKeysToCamelCase)) as AbilitazioneMenu[];\n\n const queryRuoli = `\n SELECT\n R.CODRUO AS codice_ruolo,\n R.DESRUO AS descrizione_ruolo,\n RM.CODMNU AS codice_menu,\n RM.TIPABI AS tipo_abilitazione,\n M.DESMNU AS descrizione_menu,\n M.NOTE AS note\n FROM UTENTI_RUOLI RU\n INNER JOIN RUOLI R ON RU.CODRUO = R.CODRUO\n INNER JOIN RUOLI_MNU RM ON R.CODRUO = RM.CODRUO\n INNER JOIN MENU M ON RM.CODMNU = M.CODMNU\n INNER JOIN MENU_GRP G ON G.CODGRP = M.CODGRP\n WHERE RU.CODUTE = ? AND M.FLGENABLED = 1 AND G.FLGENABLED = 1\n `;\n let ruoliResult = await Orm.query(this.accessiOptions.databaseOptions, queryRuoli, [codiceUtente]);\n ruoliResult = ruoliResult.map(RestUtilities.convertKeysToCamelCase);\n\n const ruoliMap = new Map<number, Role>();\n for (const row of ruoliResult) {\n const { codiceRuolo, descrizioneRuolo, codiceMenu, descrizioneMenu, tipoAbilitazione } = row;\n\n if (!ruoliMap.has(codiceRuolo)) {\n ruoliMap.set(codiceRuolo, {\n codiceRuolo,\n descrizioneRuolo: descrizioneRuolo?.trim(),\n menu: []\n });\n }\n\n if (codiceMenu) {\n ruoliMap.get(codiceRuolo)!.menu.push({\n codiceRuolo: codiceRuolo,\n codiceMenu: codiceMenu.trim(),\n tipoAbilitazione,\n });\n }\n }\n\n ruoli = Array.from(ruoliMap.values());\n }\n\n // Merge user-specific and role-based permissions\n const grantsMap = new Map<string, AbilitazioneMenu>();\n\n // Add user-specific permissions\n for (const abilitazione of abilitazioni) {\n grantsMap.set(abilitazione.codiceMenu, abilitazione);\n }\n\n // Add role-based permissions if not already present\n for (const ruolo of ruoli) {\n for (const menu of ruolo.menu) {\n if (!grantsMap.has(menu.codiceMenu)) {\n grantsMap.set(menu.codiceMenu, menu);\n }\n }\n }\n\n const grants = Array.from(grantsMap.values());\n\n return { abilitazioni, ruoli, grants };\n }\n\n\n\n}\n\n\n"]}
|
|
1
|
+
{"version":3,"file":"PermissionService.js","sourceRoot":"","sources":["../../../../src/accessi-module/Services/PermissionService/PermissionService.ts"],"names":[],"mappings":"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","sourcesContent":["\r\nimport { Orm } from \"../../../Orm\";\r\nimport { RestUtilities } from \"../../../Utilities\";\r\nimport { AccessiOptions } from \"../../AccessiModule\";\r\nimport { Permission, TipoAbilitazione } from \"../../Dtos\";\r\nimport { AbilitazioneMenu } from \"../../Dtos/AbilitazioneMenu\";\r\nimport { GroupWithMenusEntity } from \"../../Dtos/GetGroupsWithMenusResponse\";\r\nimport { MenuEntity } from \"../../Dtos/GetMenusResponse\";\r\nimport { Role } from \"../../Dtos/Role\";\r\nimport { Inject, Injectable } from \"@nestjs/common\";\r\n\r\n@Injectable()\r\nexport class PermissionService {\r\n constructor(\r\n @Inject('ACCESSI_OPTIONS') private readonly accessiOptions: AccessiOptions\r\n ) { }\r\n\r\n\r\n public async addAbilitazioni(codiceUtente: number, menuAbilitazioni: any[]): Promise<void> {\r\n const deleteQuery = `DELETE FROM ABILITAZIONI WHERE CODUTE = ?`;\r\n await Orm.execute(this.accessiOptions.databaseOptions, deleteQuery, [codiceUtente]);\r\n\r\n const abilitazioniToInsert = menuAbilitazioni\r\n .flatMap(menuGrp => menuGrp.menu)\r\n .filter(menu => menu.flgChk)\r\n .map(menu => [codiceUtente, menu.codiceMenu, menu.tipoAbilitazione]);\r\n\r\n const insertQuery = `UPDATE OR INSERT INTO ABILITAZIONI (CODUTE, CODMNU, TIPABI) VALUES (?, ?, ?)`;\r\n\r\n for (const params of abilitazioniToInsert) {\r\n await Orm.execute(this.accessiOptions.databaseOptions, insertQuery, params);\r\n }\r\n }\r\n\r\n\r\n public async resetAbilitazioni(codiceUtente: number): Promise<void> {\r\n const query = \"DELETE FROM ABILITAZIONI WHERE CODUTE = ?\";\r\n await Orm.execute(this.accessiOptions.databaseOptions, query, [codiceUtente]);\r\n }\r\n\r\n public async updateOrInsertRole(role: Role, codiceRuolo: number | null = null): Promise<void> {\r\n\r\n // creazione nuovo ruolo\r\n if (codiceRuolo == null) {\r\n const createRoleQuery = `INSERT INTO RUOLI (DESRUO) VALUES (?)`;\r\n await Orm.execute(this.accessiOptions.databaseOptions, createRoleQuery, [role.descrizioneRuolo]);\r\n\r\n const createdRoleResult = await Orm.query(\r\n this.accessiOptions.databaseOptions,\r\n 'SELECT FIRST 1 CODRUO FROM RUOLI WHERE DESRUO = ? ORDER BY CODRUO DESC',\r\n [role.descrizioneRuolo]\r\n );\r\n const rawCodiceRuolo = createdRoleResult?.[0]?.CODRUO ?? createdRoleResult?.[0]?.codruo;\r\n const parsedCodiceRuolo = typeof rawCodiceRuolo === 'number'\r\n ? rawCodiceRuolo\r\n : Number.parseInt(`${rawCodiceRuolo ?? ''}`, 10);\r\n if (Number.isNaN(parsedCodiceRuolo)) {\r\n throw new Error('Creazione ruolo non riuscita: impossibile recuperare CODRUO.');\r\n }\r\n codiceRuolo = parsedCodiceRuolo;\r\n } else\r\n // aggiornamento ruolo esistente\r\n {\r\n\r\n let updateRoleQuery = `UPDATE RUOLI SET DESRUO = ? WHERE CODRUO = ?`;\r\n await Orm.query(this.accessiOptions.databaseOptions, updateRoleQuery, [role.descrizioneRuolo, codiceRuolo]);\r\n\r\n let deleteRoleMenuQuery = `DELETE FROM RUOLI_MNU WHERE CODRUO = ?`;\r\n await Orm.query(this.accessiOptions.databaseOptions, deleteRoleMenuQuery, [codiceRuolo]);\r\n }\r\n\r\n if (codiceRuolo === null) {\r\n throw new Error('Operazione ruolo non riuscita: codice ruolo non valorizzato.');\r\n }\r\n\r\n let createRoleMenuQuery = `INSERT INTO RUOLI_MNU (CODRUO, CODMNU, TIPABI) VALUES (?, ?, ?)`;\r\n for (let menu of role.menu) {\r\n await Orm.query(this.accessiOptions.databaseOptions, createRoleMenuQuery, [codiceRuolo, menu.codiceMenu, menu.tipoAbilitazione]);\r\n }\r\n\r\n }\r\n\r\n\r\n public async getRolesWithMenus(): Promise<Role[]> {\r\n const query = `\r\n SELECT \r\n R.CODRUO AS codice_ruolo, \r\n R.DESRUO AS descrizione_ruolo, \r\n M.CODMNU AS codice_menu, \r\n M.DESMNU AS descrizione_menu,\r\n M.NOTE AS note,\r\n RM.TIPABI AS tipo_abilitazione\r\n FROM RUOLI R\r\n LEFT JOIN RUOLI_MNU RM ON R.CODRUO = RM.CODRUO\r\n LEFT JOIN MENU M ON RM.CODMNU = M.CODMNU\r\n ORDER BY R.CODRUO, M.CODMNU\r\n `;\r\n\r\n let result = await Orm.query(this.accessiOptions.databaseOptions, query, []);\r\n result = result.map(RestUtilities.convertKeysToCamelCase);\r\n\r\n const ruoliMap = new Map<number, Role>();\r\n\r\n for (const row of result) {\r\n const { codiceRuolo, descrizioneRuolo, codiceMenu, descrizioneMenu, tipoAbilitazione } = row;\r\n\r\n if (!ruoliMap.has(codiceRuolo)) {\r\n ruoliMap.set(codiceRuolo, {\r\n codiceRuolo,\r\n descrizioneRuolo: descrizioneRuolo?.trim(),\r\n menu: []\r\n });\r\n }\r\n\r\n const abilitationValue = typeof tipoAbilitazione === 'number'\r\n ? tipoAbilitazione\r\n : Number.parseInt(`${tipoAbilitazione ?? ''}`, 10);\r\n\r\n if (!codiceMenu || Number.isNaN(abilitationValue) || abilitationValue <= TipoAbilitazione.NESSUNA) {\r\n continue;\r\n }\r\n\r\n ruoliMap.get(codiceRuolo)!.menu.push({\r\n codiceRuolo: codiceRuolo,\r\n codiceMenu: codiceMenu.trim(),\r\n tipoAbilitazione: abilitationValue as TipoAbilitazione,\r\n });\r\n }\r\n\r\n return Array.from(ruoliMap.values());\r\n }\r\n\r\n\r\n public async assignRolesToUser(codiceUtente: number, roles: number[]): Promise<void> {\r\n\r\n const userExistsQuery = `SELECT COUNT(*) FROM UTENTI WHERE CODUTE = ?`;\r\n let result = await Orm.query(this.accessiOptions.databaseOptions, userExistsQuery, [codiceUtente]);\r\n\r\n if (result[0].COUNT === 0) {\r\n throw new Error(`L'utente con codice ${codiceUtente} non esiste.`);\r\n }\r\n\r\n const deleteQuery = `DELETE FROM UTENTI_RUOLI WHERE CODUTE = ?`;\r\n await Orm.query(this.accessiOptions.databaseOptions, deleteQuery, [codiceUtente]);\r\n\r\n const insertQuery = `INSERT INTO UTENTI_RUOLI (CODUTE, CODRUO) VALUES (?, ?)`;\r\n\r\n for (const codiceRuolo of roles) {\r\n await Orm.query(this.accessiOptions.databaseOptions, insertQuery, [codiceUtente, codiceRuolo]);\r\n }\r\n }\r\n\r\n\r\n public async assignPermissionsToUser(codiceUtente: number, permissions: Permission[]): Promise<void> {\r\n\r\n const userExistsQuery = `SELECT COUNT(*) FROM UTENTI WHERE CODUTE = ?`;\r\n let result = await Orm.query(this.accessiOptions.databaseOptions, userExistsQuery, [codiceUtente]);\r\n\r\n if (result[0].COUNT === 0) {\r\n throw new Error(`L'utente con codice ${codiceUtente} non esiste.`);\r\n }\r\n\r\n const deleteQuery = `DELETE FROM ABILITAZIONI WHERE CODUTE = ?`;\r\n await Orm.execute(this.accessiOptions.databaseOptions, deleteQuery, [codiceUtente]);\r\n\r\n const insertQuery = `INSERT INTO ABILITAZIONI (CODUTE, CODMNU, TIPABI) VALUES (?, ?, ?)`;\r\n\r\n for (const permission of permissions) {\r\n await Orm.execute(this.accessiOptions.databaseOptions, insertQuery, [codiceUtente, permission.codiceMenu, permission.tipoAbilitazione]);\r\n }\r\n }\r\n\r\n\r\n public async deleteRole(codiceRuolo: number): Promise<void> {\r\n\r\n const existsQuery = `SELECT COUNT(*) FROM RUOLI WHERE CODRUO = ?`;\r\n let result = await Orm.query(this.accessiOptions.databaseOptions, existsQuery, [codiceRuolo]);\r\n\r\n if (result[0].COUNT === 0) {\r\n throw new Error(`Il ruolo con codice ${codiceRuolo} non esiste.`);\r\n }\r\n\r\n const deleteRoleMenusQuery = `DELETE FROM RUOLI_MNU WHERE CODRUO = ?`;\r\n await Orm.query(this.accessiOptions.databaseOptions, deleteRoleMenusQuery, [codiceRuolo]);\r\n\r\n const deleteRoleUsersQuery = `DELETE FROM UTENTI_RUOLI WHERE CODRUO = ?`;\r\n await Orm.query(this.accessiOptions.databaseOptions, deleteRoleUsersQuery, [codiceRuolo]);\r\n\r\n const deleteRoleQuery = `DELETE FROM RUOLI WHERE CODRUO = ?`;\r\n await Orm.query(this.accessiOptions.databaseOptions, deleteRoleQuery, [codiceRuolo]);\r\n\r\n }\r\n\r\n\r\n public async getMenus(): Promise<MenuEntity[]> {\r\n const query = `\r\n SELECT \r\n M.CODMNU AS codiceMenu, \r\n M.DESMNU AS descrizioneMenu,\r\n M.CODGRP AS codiceGruppo,\r\n G.DESGRP AS descrizioneGruppo,\r\n M.ICON AS icona,\r\n M.CODTIP AS tipo,\r\n M.PAGINA AS pagina,\r\n M.NOTE AS note\r\n FROM MENU M\r\n LEFT JOIN MENU_GRP G ON M.CODGRP = G.CODGRP\r\n WHERE M.FLGENABLED = 1\r\n ORDER BY G.CODGRP, M.CODMNU\r\n `;\r\n\r\n const result = await Orm.query(this.accessiOptions.databaseOptions, query, []);\r\n return result.map(RestUtilities.convertKeysToCamelCase);\r\n }\r\n\r\n\r\n public async getGroupsWithMenus(includeDisabled = false): Promise<GroupWithMenusEntity[]> {\r\n const filtersClause = includeDisabled\r\n ? ''\r\n : 'WHERE M.FLGENABLED = 1 AND (G.FLGENABLED IS NULL OR G.FLGENABLED = 1)';\r\n\r\n const query = `\r\n SELECT\r\n M.CODMNU AS codice_menu,\r\n M.DESMNU AS descrizione_menu,\r\n M.CODGRP AS codice_gruppo,\r\n G.DESGRP AS descrizione_gruppo,\r\n M.ICON AS icona,\r\n M.CODTIP AS tipo,\r\n M.PAGINA AS pagina,\r\n M.NOTE AS note,\r\n G.ORDINE AS ordine_gruppo,\r\n M.ORDINE as ordine_menu,\r\n M.FLGENABLED AS menu_enabled,\r\n G.FLGENABLED AS group_enabled\r\n FROM MENU M\r\n LEFT JOIN MENU_GRP G ON M.CODGRP = G.CODGRP\r\n ${filtersClause}\r\n ORDER BY G.CODGRP, M.CODMNU\r\n `;\r\n\r\n const result = await Orm.query(this.accessiOptions.databaseOptions, query, []);\r\n\r\n const groupMap = new Map<\r\n string,\r\n GroupWithMenusEntity & { menus: (MenuEntity & { enabled?: boolean })[] }\r\n >();\r\n\r\n result.forEach(row => {\r\n const converted = RestUtilities.convertKeysToCamelCase(row) as MenuEntity & {\r\n menuEnabled?: number | boolean;\r\n groupEnabled?: number | boolean;\r\n };\r\n\r\n const { menuEnabled, groupEnabled, ...menuBase } = converted as any;\r\n const normalizedGroupKey = menuBase.codiceGruppo ?? '__UNGROUPED__';\r\n const groupEnabledFlag =\r\n groupEnabled === undefined ? true : Number(groupEnabled) === 1 || groupEnabled === true;\r\n const menuEnabledFlag =\r\n menuEnabled === undefined ? true : Number(menuEnabled) === 1 || menuEnabled === true;\r\n\r\n if (!groupMap.has(normalizedGroupKey)) {\r\n groupMap.set(normalizedGroupKey, {\r\n codiceGruppo: menuBase.codiceGruppo ?? normalizedGroupKey,\r\n descrizioneGruppo: menuBase.descrizioneGruppo,\r\n ordineGruppo: menuBase.ordineGruppo,\r\n enabled: groupEnabledFlag,\r\n menus: [],\r\n });\r\n }\r\n\r\n if (menuBase.codiceMenu) {\r\n groupMap.get(normalizedGroupKey)!.menus.push({\r\n ...menuBase,\r\n enabled: menuEnabledFlag,\r\n });\r\n }\r\n });\r\n\r\n const groupsArray = Array.from(groupMap.values())\r\n .map(group => ({\r\n ...group,\r\n menus: (group.menus ?? []).sort(\r\n (a, b) =>\r\n (a.ordineMenu ?? Number.MAX_SAFE_INTEGER) - (b.ordineMenu ?? Number.MAX_SAFE_INTEGER),\r\n ),\r\n }))\r\n .sort(\r\n (a, b) =>\r\n (a.ordineGruppo ?? Number.MAX_SAFE_INTEGER) - (b.ordineGruppo ?? Number.MAX_SAFE_INTEGER),\r\n );\r\n\r\n return groupsArray;\r\n }\r\n\r\n\r\n\r\n public async getUserRolesAndGrants(codiceUtente: number): Promise<{\r\n abilitazioni: AbilitazioneMenu[],\r\n ruoli: Role[],\r\n grants: AbilitazioneMenu[]\r\n }> {\r\n const codiceUtenteQuery = \"SELECT FLGSUPER as flag_super FROM UTENTI_CONFIG WHERE CODUTE = ?\";\r\n let result = await Orm.query(this.accessiOptions.databaseOptions, codiceUtenteQuery, [codiceUtente]);\r\n if (!result || result.length == 0) throw new Error(\"Nessun utente trovato con il codice utente \" + codiceUtente);\r\n\r\n result = result.map(RestUtilities.convertKeysToCamelCase) as { flagSuper: boolean }[];\r\n const isSuperAdmin = result[0].flagSuper;\r\n\r\n let abilitazioni: AbilitazioneMenu[] = [];\r\n let ruoli: Role[] = [];\r\n\r\n if (isSuperAdmin) {\r\n const query = `\r\n SELECT\r\n M.CODMNU AS codice_menu,\r\n 30 AS tipo_abilitazione,\r\n M.DESMNU AS descrizione_menu,\r\n G.DESGRP AS descrizione_gruppo,\r\n G.CODGRP AS codice_gruppo,\r\n M.ICON AS icona,\r\n M.CODTIP AS tipo,\r\n M.PAGINA AS pagina,\r\n M.NOTE AS note\r\n FROM MENU M\r\n INNER JOIN MENU_GRP G ON G.CODGRP = M.CODGRP\r\n WHERE M.FLGENABLED = 1 AND G.FLGENABLED = 1\r\n `;\r\n abilitazioni = await Orm.query(this.accessiOptions.databaseOptions, query, [])\r\n .then(results => results.map(RestUtilities.convertKeysToCamelCase)) as AbilitazioneMenu[];\r\n } else {\r\n const queryAbilitazioni = `\r\n SELECT\r\n A.CODMNU AS codice_menu,\r\n A.TIPABI AS tipo_abilitazione,\r\n M.DESMNU AS descrizione_menu,\r\n G.DESGRP AS descrizione_gruppo,\r\n G.CODGRP AS codice_gruppo,\r\n M.ICON AS icona,\r\n M.CODTIP AS tipo,\r\n M.PAGINA AS pagina,\r\n M.NOTE AS note\r\n FROM ABILITAZIONI A\r\n INNER JOIN MENU M ON A.CODMNU = M.CODMNU\r\n INNER JOIN MENU_GRP G ON G.CODGRP = M.CODGRP\r\n WHERE A.CODUTE = ? AND M.FLGENABLED = 1 AND G.FLGENABLED = 1\r\n `;\r\n abilitazioni = await Orm.query(this.accessiOptions.databaseOptions, queryAbilitazioni, [codiceUtente])\r\n .then(results => results.map(RestUtilities.convertKeysToCamelCase)) as AbilitazioneMenu[];\r\n\r\n const queryRuoli = `\r\n SELECT\r\n R.CODRUO AS codice_ruolo,\r\n R.DESRUO AS descrizione_ruolo,\r\n RM.CODMNU AS codice_menu,\r\n RM.TIPABI AS tipo_abilitazione,\r\n M.DESMNU AS descrizione_menu,\r\n M.NOTE AS note\r\n FROM UTENTI_RUOLI RU\r\n INNER JOIN RUOLI R ON RU.CODRUO = R.CODRUO\r\n INNER JOIN RUOLI_MNU RM ON R.CODRUO = RM.CODRUO\r\n INNER JOIN MENU M ON RM.CODMNU = M.CODMNU\r\n INNER JOIN MENU_GRP G ON G.CODGRP = M.CODGRP\r\n WHERE RU.CODUTE = ? AND M.FLGENABLED = 1 AND G.FLGENABLED = 1\r\n `;\r\n let ruoliResult = await Orm.query(this.accessiOptions.databaseOptions, queryRuoli, [codiceUtente]);\r\n ruoliResult = ruoliResult.map(RestUtilities.convertKeysToCamelCase);\r\n\r\n const ruoliMap = new Map<number, Role>();\r\n for (const row of ruoliResult) {\r\n const { codiceRuolo, descrizioneRuolo, codiceMenu, descrizioneMenu, tipoAbilitazione } = row;\r\n\r\n if (!ruoliMap.has(codiceRuolo)) {\r\n ruoliMap.set(codiceRuolo, {\r\n codiceRuolo,\r\n descrizioneRuolo: descrizioneRuolo?.trim(),\r\n menu: []\r\n });\r\n }\r\n\r\n if (codiceMenu) {\r\n ruoliMap.get(codiceRuolo)!.menu.push({\r\n codiceRuolo: codiceRuolo,\r\n codiceMenu: codiceMenu.trim(),\r\n tipoAbilitazione,\r\n });\r\n }\r\n }\r\n\r\n ruoli = Array.from(ruoliMap.values());\r\n }\r\n\r\n // Merge user-specific and role-based permissions\r\n const grantsMap = new Map<string, AbilitazioneMenu>();\r\n\r\n // Add user-specific permissions\r\n for (const abilitazione of abilitazioni) {\r\n grantsMap.set(abilitazione.codiceMenu, abilitazione);\r\n }\r\n\r\n // Add role-based permissions if not already present\r\n for (const ruolo of ruoli) {\r\n for (const menu of ruolo.menu) {\r\n if (!grantsMap.has(menu.codiceMenu)) {\r\n grantsMap.set(menu.codiceMenu, menu);\r\n }\r\n }\r\n }\r\n\r\n const grants = Array.from(grantsMap.values());\r\n\r\n return { abilitazioni, ruoli, grants };\r\n }\r\n\r\n\r\n\r\n}\r\n\r\n\r\n"]}
|