emilsoftware-utilities 1.6.1-dev.3 → 1.6.1-dev.5
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/dist/ContractGenerator.js +1 -0
- package/dist/ContractGenerator.js.map +1 -0
- package/dist/DatabaseUpdater.js +1 -0
- package/dist/DatabaseUpdater.js.map +1 -0
- package/dist/EmilsoftwareModule.js +1 -0
- package/dist/EmilsoftwareModule.js.map +1 -0
- package/dist/ExecutionTimeLogger.js +1 -0
- package/dist/ExecutionTimeLogger.js.map +1 -0
- package/dist/Logger.js +1 -0
- package/dist/Logger.js.map +1 -0
- package/dist/Orm.js +1 -0
- package/dist/Orm.js.map +1 -0
- package/dist/RoutesLoggerMiddleware.js +1 -0
- package/dist/RoutesLoggerMiddleware.js.map +1 -0
- package/dist/Utilities.js +1 -0
- package/dist/Utilities.js.map +1 -0
- package/dist/accessi-module/AccessiModule.js +1 -0
- package/dist/accessi-module/AccessiModule.js.map +1 -0
- package/dist/accessi-module/Controllers/AuthController.js +1 -0
- package/dist/accessi-module/Controllers/AuthController.js.map +1 -0
- package/dist/accessi-module/Controllers/ConfiguratorController.js +1 -0
- package/dist/accessi-module/Controllers/ConfiguratorController.js.map +1 -0
- package/dist/accessi-module/Controllers/EmailController.js +1 -0
- package/dist/accessi-module/Controllers/EmailController.js.map +1 -0
- package/dist/accessi-module/Controllers/FiltriController.js +1 -0
- package/dist/accessi-module/Controllers/FiltriController.js.map +1 -0
- package/dist/accessi-module/Controllers/PermissionController.d.ts +1 -1
- package/dist/accessi-module/Controllers/PermissionController.js +11 -8
- package/dist/accessi-module/Controllers/PermissionController.js.map +1 -0
- package/dist/accessi-module/Controllers/UserController.js +1 -0
- package/dist/accessi-module/Controllers/UserController.js.map +1 -0
- package/dist/accessi-module/Dtos/Abilitazione.js +1 -0
- package/dist/accessi-module/Dtos/Abilitazione.js.map +1 -0
- package/dist/accessi-module/Dtos/AbilitazioneMenu.js +9 -8
- package/dist/accessi-module/Dtos/AbilitazioneMenu.js.map +1 -0
- package/dist/accessi-module/Dtos/AssignPermissionsToUserRequest.js +1 -0
- package/dist/accessi-module/Dtos/AssignPermissionsToUserRequest.js.map +1 -0
- package/dist/accessi-module/Dtos/AssignRolesToUserRequest.d.ts +1 -1
- package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js +2 -1
- package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js.map +1 -0
- package/dist/accessi-module/Dtos/BaseResponse.js +1 -0
- package/dist/accessi-module/Dtos/BaseResponse.js.map +1 -0
- package/dist/accessi-module/Dtos/FiltriUtente.js +1 -0
- package/dist/accessi-module/Dtos/FiltriUtente.js.map +1 -0
- package/dist/accessi-module/Dtos/GetGroupsWithMenusResponse.js +1 -0
- package/dist/accessi-module/Dtos/GetGroupsWithMenusResponse.js.map +1 -0
- package/dist/accessi-module/Dtos/GetMenusResponse.js +1 -0
- package/dist/accessi-module/Dtos/GetMenusResponse.js.map +1 -0
- package/dist/accessi-module/Dtos/GetRolesResponse.js +1 -0
- package/dist/accessi-module/Dtos/GetRolesResponse.js.map +1 -0
- package/dist/accessi-module/Dtos/GetUsersResponse.js +1 -0
- package/dist/accessi-module/Dtos/GetUsersResponse.js.map +1 -0
- package/dist/accessi-module/Dtos/LoginRequest.js +1 -0
- package/dist/accessi-module/Dtos/LoginRequest.js.map +1 -0
- package/dist/accessi-module/Dtos/LoginResponse.js +1 -0
- package/dist/accessi-module/Dtos/LoginResponse.js.map +1 -0
- package/dist/accessi-module/Dtos/MenuItem.js +1 -0
- package/dist/accessi-module/Dtos/MenuItem.js.map +1 -0
- package/dist/accessi-module/Dtos/Permission.js +1 -0
- package/dist/accessi-module/Dtos/Permission.js.map +1 -0
- package/dist/accessi-module/Dtos/RegisterRequest.d.ts +1 -1
- package/dist/accessi-module/Dtos/RegisterRequest.js +2 -1
- package/dist/accessi-module/Dtos/RegisterRequest.js.map +1 -0
- package/dist/accessi-module/Dtos/RegisterResponse.js +1 -0
- package/dist/accessi-module/Dtos/RegisterResponse.js.map +1 -0
- package/dist/accessi-module/Dtos/Role.d.ts +3 -3
- package/dist/accessi-module/Dtos/Role.js +5 -4
- package/dist/accessi-module/Dtos/Role.js.map +1 -0
- package/dist/accessi-module/Dtos/RuoliMenu.d.ts +6 -0
- package/dist/accessi-module/Dtos/RuoliMenu.js +46 -0
- package/dist/accessi-module/Dtos/RuoliMenu.js.map +1 -0
- package/dist/accessi-module/Dtos/SetStatoRegistrazione.js +1 -0
- package/dist/accessi-module/Dtos/SetStatoRegistrazione.js.map +1 -0
- package/dist/accessi-module/Dtos/StatoRegistrazione.js +1 -0
- package/dist/accessi-module/Dtos/StatoRegistrazione.js.map +1 -0
- package/dist/accessi-module/Dtos/TipoAbilitazione.js +1 -0
- package/dist/accessi-module/Dtos/TipoAbilitazione.js.map +1 -0
- package/dist/accessi-module/Dtos/TipoFiltro.js +1 -0
- package/dist/accessi-module/Dtos/TipoFiltro.js.map +1 -0
- package/dist/accessi-module/Dtos/TokenResult.js +1 -0
- package/dist/accessi-module/Dtos/TokenResult.js.map +1 -0
- package/dist/accessi-module/Dtos/UpdateEnabledStatusRequest.js +1 -0
- package/dist/accessi-module/Dtos/UpdateEnabledStatusRequest.js.map +1 -0
- package/dist/accessi-module/Dtos/UserDto.d.ts +1 -1
- package/dist/accessi-module/Dtos/UserDto.js +2 -1
- package/dist/accessi-module/Dtos/UserDto.js.map +1 -0
- package/dist/accessi-module/Dtos/UserGrantsDto.js +1 -0
- package/dist/accessi-module/Dtos/UserGrantsDto.js.map +1 -0
- package/dist/accessi-module/Dtos/index.d.ts +1 -0
- package/dist/accessi-module/Dtos/index.js +2 -0
- package/dist/accessi-module/Dtos/index.js.map +1 -0
- package/dist/accessi-module/Services/AuthService/AuthService.js +1 -0
- package/dist/accessi-module/Services/AuthService/AuthService.js.map +1 -0
- package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js +1 -0
- package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js.map +1 -0
- package/dist/accessi-module/Services/EmailService/EmailService.js +1 -0
- package/dist/accessi-module/Services/EmailService/EmailService.js.map +1 -0
- package/dist/accessi-module/Services/FiltriService/FiltriService.js +1 -0
- package/dist/accessi-module/Services/FiltriService/FiltriService.js.map +1 -0
- package/dist/accessi-module/Services/PermissionService/PermissionService.d.ts +2 -2
- package/dist/accessi-module/Services/PermissionService/PermissionService.js +14 -6
- package/dist/accessi-module/Services/PermissionService/PermissionService.js.map +1 -0
- package/dist/accessi-module/Services/UserService/UserService.js +49 -11
- package/dist/accessi-module/Services/UserService/UserService.js.map +1 -0
- package/dist/accessi-module/index.js +1 -0
- package/dist/accessi-module/index.js.map +1 -0
- package/dist/accessi-module/jwt/jwt.strategy.js +1 -0
- package/dist/accessi-module/jwt/jwt.strategy.js.map +1 -0
- package/dist/allegati-module/AllegatiModule.js +1 -0
- package/dist/allegati-module/AllegatiModule.js.map +1 -0
- package/dist/allegati-module/Controllers/AllegatiController.js +1 -0
- package/dist/allegati-module/Controllers/AllegatiController.js.map +1 -0
- package/dist/allegati-module/Dtos/AllegatoDto.js +1 -0
- package/dist/allegati-module/Dtos/AllegatoDto.js.map +1 -0
- package/dist/allegati-module/Dtos/BaseResponse.js +1 -0
- package/dist/allegati-module/Dtos/BaseResponse.js.map +1 -0
- package/dist/allegati-module/Dtos/UploadSingleFileRequest.js +1 -0
- package/dist/allegati-module/Dtos/UploadSingleFileRequest.js.map +1 -0
- package/dist/allegati-module/Dtos/index.js +1 -0
- package/dist/allegati-module/Dtos/index.js.map +1 -0
- package/dist/allegati-module/Dtos/responses/DownloadAllegatoResponseDto.js +1 -0
- package/dist/allegati-module/Dtos/responses/DownloadAllegatoResponseDto.js.map +1 -0
- package/dist/allegati-module/Dtos/responses/GetListResponse.js +1 -0
- package/dist/allegati-module/Dtos/responses/GetListResponse.js.map +1 -0
- package/dist/allegati-module/Dtos/responses/UploadAllegatoResponseDto.js +1 -0
- package/dist/allegati-module/Dtos/responses/UploadAllegatoResponseDto.js.map +1 -0
- package/dist/allegati-module/Services/AllegatiService/AllegatiService.js +1 -0
- package/dist/allegati-module/Services/AllegatiService/AllegatiService.js.map +1 -0
- package/dist/allegati-module/index.js +1 -0
- package/dist/allegati-module/index.js.map +1 -0
- package/dist/autobind.js +1 -0
- package/dist/autobind.js.map +1 -0
- package/dist/emilsoftware-utilities-1.6.1-dev.5.tgz +0 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -0
- package/dist/initEmilsoftwareModule.js +1 -0
- package/dist/initEmilsoftwareModule.js.map +1 -0
- package/dist/swagger/SwaggerConfig.js +1 -0
- package/dist/swagger/SwaggerConfig.js.map +1 -0
- package/package.json +1 -1
- package/dist/emilsoftware-utilities-1.6.1-dev.3.tgz +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContractGenerator.js","sourceRoot":"","sources":["../src/ContractGenerator.ts"],"names":[],"mappings":"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","sourcesContent":["import { jsPDF } from \"jspdf\";\nimport autotable from \"jspdf-autotable\";\nimport { promises as fs } from 'fs';\nimport path from 'path';\n\nexport interface IPartiContratto {\n fornitore: { denominazione: string; codiceFiscale: string; indirizzoCompleto: string; };\n cliente: { denominazione: string; codiceFiscale: string; indirizzoCompleto: string; };\n}\n\nexport interface DocumentParams {\n parti: IPartiContratto;\n tipOutput?: 'f' | 'd' | 'u';\n dynamicFields?: { [key: string]: string };\n dynamicElements?: { [placeholder: string]: DynamicElement };\n}\n\nexport type DynamicElement = {\n type: 'table';\n config: {\n head: string[];\n body: string[][];\n options?: any;\n styles?: any;\n };\n};\n\ninterface DocumentConfig {\n fontTitolo: { nome: string; dimensione: number; colore: string; installPath?: string; };\n fontSottotitolo: { nome: string; dimensione: number; colore: string; installPath?: string; };\n fontTesto: { nome: string; dimensione: number; colore: string; installPath?: string; };\n fontBold: { nome: string; dimensione: number; colore: string; installPath?: string; };\n margini: { sx: number; dx: number; alto: number; basso: number; };\n staccoriga: number;\n rientro: number;\n testi: {\n titolo: string;\n premessa: string;\n Punti: Array<{ titolo: string; Sottopunti: Array<{ titolo: string; contenuto: string; }>; }>;\n versione: string;\n };\n immagini: Array<{ path: string; posizione: [number, number]; dimensioni: [number, number]; coeffDim?: number; }>;\n box: { backgrund: string; raggio: number; };\n tableStyle?: { lineColor?: string; lineWidth?: number; font?: string; fontSize?: number; cellPadding?: number; fillColor?: string; };\n}\n\nasync function loadImageAsBase64(imagePath: string): Promise<string> {\n const absolutePath = path.resolve(imagePath);\n const buffer = await fs.readFile(absolutePath);\n const ext = path.extname(imagePath).slice(1).toLowerCase();\n const base64 = buffer.toString('base64');\n return `data:image/${ext};base64,${base64}`;\n}\n\nexport class DocumentGenerator {\n private config!: DocumentConfig;\n private doc!: jsPDF;\n private curX: number = 0;\n private curY: number = 0;\n private configLoaded: boolean = false;\n\n constructor(private configPath?: string) { }\n\n public setConfig(config: DocumentConfig) {\n this.config = config;\n this.configLoaded = true;\n }\n\n private applyTemplate(template: string, dynamicFields?: { [key: string]: string }): string {\n if (!dynamicFields) return template;\n return template.replace(/\\$(\\w+)\\$/g, (match, key) =>\n dynamicFields[key] !== undefined ? dynamicFields[key] : match\n );\n }\n\n private applyPartiPlaceholders(text: string, parti: IPartiContratto): string {\n return text.replace(/\\$(fornitore|cliente):(\\w+)\\$/g, (match, party, field) =>\n (parti[party] && (parti[party] as any)[field]) ? (parti[party] as any)[field] : match\n );\n }\n\n private async loadConfig(): Promise<void> {\n if (this.configLoaded) return;\n if (!this.configPath) throw new Error(\"No configuration provided.\");\n try {\n const data = await fs.readFile(this.configPath, 'utf8');\n this.config = JSON.parse(data) as DocumentConfig;\n this.configLoaded = true;\n } catch (error) {\n throw new Error(`Error reading configuration file: ${error}`);\n }\n }\n\n private initDoc(): void {\n this.doc = new jsPDF();\n const margins = this.config.margini;\n this.curX = margins.sx;\n this.curY = margins.alto;\n }\n\n private extractPlaceholder(text: string): string | null {\n const match = text.match(/^\\$(\\w+)\\$$/);\n return match ? match[1] : null;\n }\n\n private async installFont(fontPath: string, fontName: string): Promise<void> {\n const absolutePath = path.resolve(fontPath);\n const buffer = await fs.readFile(absolutePath);\n const base64Font = buffer.toString('base64');\n //console.log(`Installing font ${fontName} from ${absolutePath}`);\n this.doc.addFileToVFS(`${fontName}.ttf`, base64Font);\n this.doc.addFont(`${fontName}.ttf`, fontName, 'normal');\n this.doc.setFont(fontName);\n }\n\n // Writes wrapped text, handling inline bold segments.\n private async writeWrappedTextCore(\n fontName: string,\n fontSize: number,\n color: string,\n text: string,\n x: number,\n y: number,\n maxWidth: number,\n lineSpacingFactor: number = 1.15\n ): Promise<number> {\n this.doc.setFont(fontName);\n this.doc.setFontSize(fontSize);\n this.doc.setTextColor(color);\n const lines = this.doc.splitTextToSize(text, maxWidth);\n const lineHeight = (fontSize * lineSpacingFactor / 72) * 25.4;\n for (const line of lines) {\n if (y + lineHeight > (this.doc.internal.pageSize.getHeight() - this.config.margini.basso)) {\n this.doc.addPage();\n y = this.config.margini.alto;\n }\n // If the line contains inline bold markers, process them.\n if (line.includes(\"**\")) {\n y = await this.writeLineWithInlineBold(line, x, y, fontName, fontSize, color, maxWidth, lineSpacingFactor);\n } else {\n this.doc.text(line, x, y);\n y += lineHeight;\n }\n }\n return y;\n }\n\n // Writes a single line with inline bold processing.\n private async writeLineWithInlineBold(\n line: string,\n x: number,\n y: number,\n normalFont: string,\n fontSize: number,\n color: string,\n maxWidth: number,\n lineSpacingFactor: number = 1.15\n ): Promise<number> {\n let currentX = x;\n // Split the line by bold segments. The regex keeps the markers.\n const segments = line.split(/(\\*\\*.*?\\*\\*)/);\n const lineHeight = (fontSize * lineSpacingFactor / 72) * 25.4;\n for (const seg of segments) {\n let segText = seg;\n let useBold = false;\n if (seg.startsWith(\"**\") && seg.endsWith(\"**\")) {\n useBold = true;\n segText = seg.substring(2, seg.length - 2);\n }\n if (useBold) {\n this.doc.setFont(this.config.fontBold.nome);\n } else {\n this.doc.setFont(normalFont);\n }\n this.doc.setFontSize(fontSize);\n this.doc.setTextColor(color);\n const segWidth = this.doc.getTextWidth(segText);\n // Write segment\n this.doc.text(segText, currentX, y);\n currentX += segWidth;\n }\n return y + lineHeight;\n }\n\n private async writeWrappedTextWithFont(\n fontConf: { nome: string; dimensione: number; colore: string; installPath?: string },\n text: string,\n x: number,\n y: number,\n maxWidth: number,\n lineSpacingFactor: number = 1.15\n ): Promise<void> {\n const fontList = this.doc.getFontList();\n if (!fontList[fontConf.nome]) {\n if (fontConf.installPath) await this.installFont(fontConf.installPath, fontConf.nome);\n else throw new Error(\"Font not present and no installPath provided\");\n } else {\n this.doc.setFont(fontConf.nome);\n }\n this.curY = await this.writeWrappedTextCore(fontConf.nome, fontConf.dimensione, fontConf.colore, text, x, y, maxWidth, lineSpacingFactor);\n }\n\n public async writeBoxedText(\n text: string,\n fontConf: { nome: string; dimensione: number; colore: string; installPath?: string },\n padding: number = 5,\n borderRadius: number = 5,\n borderWidth: number = 1,\n boxColor?: string\n ): Promise<void> {\n const fontList = this.doc.getFontList();\n if (!fontList[fontConf.nome]) {\n if (fontConf.installPath) await this.installFont(fontConf.installPath, fontConf.nome);\n else throw new Error(\"Font not present and no installPath provided\");\n } else {\n this.doc.setFont(fontConf.nome);\n }\n this.doc.setFontSize(fontConf.dimensione);\n this.doc.setTextColor(fontConf.colore);\n const pageWidth = this.doc.internal.pageSize.getWidth();\n const maxTextWidth = pageWidth - this.config.margini.sx - this.config.margini.dx - 2 * padding;\n const lines = this.doc.splitTextToSize(text, maxTextWidth);\n const lineHeight = (fontConf.dimensione * 1.15 / 72) * 25.4;\n const textHeight = lines.length * lineHeight;\n const boxX = this.curX;\n const boxY = this.curY;\n const boxWidth = maxTextWidth + 2 * padding;\n const boxHeight = textHeight + 2 * padding;\n if (boxColor) {\n this.doc.setFillColor(boxColor);\n this.doc.roundedRect(boxX, boxY, boxWidth, boxHeight, borderRadius, borderRadius, \"F\");\n }\n this.doc.setLineWidth(borderWidth);\n this.doc.roundedRect(boxX, boxY, boxWidth, boxHeight, borderRadius, borderRadius);\n const textX = boxX + padding;\n let textY = boxY + padding + lineHeight;\n for (const line of lines) {\n if (line.includes(\"**\")) {\n textY = await this.writeLineWithInlineBold(line, textX, textY, fontConf.nome, fontConf.dimensione, fontConf.colore, maxTextWidth, 1.15);\n } else {\n this.doc.text(line, textX, textY);\n textY += lineHeight;\n }\n }\n this.curY = boxY + boxHeight + this.config.staccoriga;\n }\n\n\n // Checks if text is wrapped in '^' markers for boxed text.\n private isBoxedText(text: string): boolean {\n return text.startsWith('^') && text.endsWith('^');\n }\n\n // Removes '^' markers.\n private stripBoxMarkers(text: string): string {\n return text.substring(1, text.length - 1);\n }\n\n // Checks if text is entirely wrapped in '**' markers (not inline).\n // (This function is kept for backward compatibility.)\n private isBoldText(text: string): boolean {\n return text.startsWith('**') && text.endsWith('**');\n }\n\n // Removes '**' markers.\n private stripBoldMarkers(text: string): string {\n return text.substring(2, text.length - 2);\n }\n\n // Inserts images using the current cursor position.\n private async insertLogo(): Promise<void> {\n if (this.config.immagini && this.config.immagini.length > 0) {\n const startX = this.curX;\n for (const imgConf of this.config.immagini) {\n const format = imgConf.path.split('.').pop()?.toUpperCase() || 'PNG';\n const base64Image = await loadImageAsBase64(imgConf.path);\n const startY = this.curY;\n if (startY + imgConf.dimensioni[1] > (this.doc.internal.pageSize.getHeight() - this.config.margini.basso)) {\n this.doc.addPage();\n this.curY = this.config.margini.alto;\n }\n this.doc.addImage(base64Image, format, startX, this.curY, imgConf.dimensioni[0], imgConf.dimensioni[1]);\n //console.log(`Image inserted at X: ${startX}, Y: ${this.curY}`);\n this.curY = this.curY + imgConf.dimensioni[1] + this.config.staccoriga;\n }\n }\n }\n\n // Generates the PDF document by processing images, dynamic fields, tables, and text.\n // Supports inline bold formatting and boxed text.\n public async generateDocument(params: DocumentParams): Promise<string | ArrayBuffer> {\n await this.loadConfig();\n this.initDoc();\n await this.insertLogo();\n const dynamicFields = params.dynamicFields || {};\n const dynamicElements = params.dynamicElements || {};\n const pageWidth = this.doc.internal.pageSize.getWidth();\n const maxWidth = pageWidth - (this.config.margini.sx + this.config.margini.dx);\n let titolo = this.applyTemplate(this.config.testi.titolo, dynamicFields);\n titolo = this.applyPartiPlaceholders(titolo, params.parti);\n await this.writeWrappedTextWithFont(this.config.fontTitolo, titolo, this.curX, this.curY, maxWidth);\n this.curY += this.config.staccoriga;\n let premessa = this.applyTemplate(this.config.testi.premessa, dynamicFields);\n premessa = this.applyPartiPlaceholders(premessa, params.parti);\n await this.writeWrappedTextWithFont(this.config.fontTesto, premessa, this.curX, this.curY, maxWidth);\n this.curY += this.config.staccoriga;\n for (const punto of this.config.testi.Punti) {\n let puntoTitolo = this.applyTemplate(punto.titolo, dynamicFields);\n puntoTitolo = this.applyPartiPlaceholders(puntoTitolo, params.parti);\n await this.writeWrappedTextWithFont(this.config.fontTitolo, puntoTitolo, this.curX, this.curY, maxWidth);\n this.curY += this.config.staccoriga;\n for (const sub of punto.Sottopunti) {\n const placeholder = this.extractPlaceholder(sub.titolo);\n if (placeholder && dynamicElements[placeholder] && dynamicElements[placeholder].type === 'table' && dynamicElements[placeholder].config) {\n const tableConfig = dynamicElements[placeholder].config!;\n const defaultTableOptions = this.config.tableStyle || {};\n autotable(this.doc, {\n startY: this.curY,\n head: [tableConfig.head],\n body: tableConfig.body,\n ...defaultTableOptions,\n ...tableConfig.options,\n ...tableConfig.styles\n });\n this.curY = (this.doc as any).lastAutoTable.finalY + this.config.staccoriga;\n } else {\n if (sub.titolo) {\n let titleText = this.applyTemplate(sub.titolo, dynamicFields);\n titleText = this.applyPartiPlaceholders(titleText, params.parti);\n if (this.isBoxedText(titleText)) {\n const boxText = this.stripBoxMarkers(titleText);\n await this.writeBoxedText(boxText, this.config.fontSottotitolo);\n } else if (this.isBoldText(titleText)) {\n const boldText = this.stripBoldMarkers(titleText);\n\n await this.writeWrappedTextWithFont({ ...this.config.fontSottotitolo, nome: this.config.fontSottotitolo.nome },\n boldText, this.curX + this.config.rientro, this.curY, maxWidth - this.config.rientro);\n } else {\n await this.writeWrappedTextWithFont(this.config.fontSottotitolo, titleText, this.curX + this.config.rientro, this.curY, maxWidth - this.config.rientro);\n }\n this.curY += this.config.staccoriga;\n }\n }\n const contentPlaceholder = this.extractPlaceholder(sub.contenuto);\n if (contentPlaceholder && dynamicElements[contentPlaceholder] && dynamicElements[contentPlaceholder].type === 'table' && dynamicElements[contentPlaceholder].config) {\n const tableConfig = dynamicElements[contentPlaceholder].config!;\n const defaultTableOptions = this.config.tableStyle || {};\n autotable(this.doc, {\n startY: this.curY,\n head: [tableConfig.head],\n body: tableConfig.body,\n ...defaultTableOptions,\n ...tableConfig.options,\n ...tableConfig.styles\n });\n this.curY = (this.doc as any).lastAutoTable.finalY + this.config.staccoriga;\n } else if (sub.contenuto) {\n let contenuto = this.applyTemplate(sub.contenuto, dynamicFields);\n contenuto = this.applyPartiPlaceholders(contenuto, params.parti);\n if (this.isBoxedText(contenuto)) {\n const boxText = this.stripBoxMarkers(contenuto);\n await this.writeBoxedText(boxText, this.config.fontTesto);\n } else if (this.isBoldText(contenuto)) {\n const boldText = this.stripBoldMarkers(contenuto);\n await this.writeWrappedTextWithFont({ ...this.config.fontTesto, nome: this.config.fontTesto.nome },\n boldText, this.curX + this.config.rientro, this.curY, maxWidth - this.config.rientro);\n } else {\n await this.writeWrappedTextWithFont(this.config.fontTesto, contenuto, this.curX + this.config.rientro, this.curY, maxWidth - this.config.rientro);\n }\n this.curY += this.config.staccoriga;\n }\n }\n this.curY += this.config.staccoriga;\n }\n const tipOutput = params.tipOutput || 'd';\n const fileName = `Documento_${params.parti.cliente.denominazione}.pdf`;\n if (tipOutput === 'd') {\n const pdfBuffer = this.doc.output('arraybuffer');\n await fs.writeFile(fileName, Buffer.from(pdfBuffer));\n return fileName;\n } else if (tipOutput === 'u') {\n return this.doc.output('arraybuffer');\n } else {\n return this.doc.output('arraybuffer');\n }\n }\n}"]}
|
package/dist/DatabaseUpdater.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatabaseUpdater.js","sourceRoot":"","sources":["../src/DatabaseUpdater.ts"],"names":[],"mappings":"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","sourcesContent":["import { Orm } from \"./Orm\";\nimport { Logger } from \"./Logger\";\nimport { Options } from \"es-node-firebird\";\n\nexport abstract class DatabaseUpdater {\n //#region Fields and Options\n protected static options: Options;\n protected static logger: Logger = new Logger(DatabaseUpdater.name);\n //#endregion\n\n //#region Utility Methods\n /**\n * Checks if a column exists in a specific table.\n * @param options Database connection options.\n * @param table Table name.\n * @param column Column name.\n * @returns True if the column exists, false otherwise.\n */\n protected static async columnExists(\n options: Options,\n table: string,\n column: string\n ): Promise<boolean> {\n\n try {\n const query = `\n SELECT 1 \n FROM RDB$RELATION_FIELDS \n WHERE RDB$RELATION_NAME = ? \n AND RDB$FIELD_NAME = ?`;\n const result = await Orm.query(options, query, [\n table.toUpperCase(),\n column.toUpperCase(),\n ]);\n return result.length > 0;\n } catch (error: any) {\n this.logger.error(`Error checking column ${column} on table ${table}:`, error);\n throw error;\n }\n }\n\n /**\n * Retrieves the current database version from the PARAMETRI table.\n * @param options Database connection options.\n * @returns The current database version or null if not found.\n */\n protected static async getDatabaseVersion(options: Options): Promise<string | null> {\n\n try {\n const parameters = (await Orm.query(\n options,\n \"SELECT CODPAR, DESPAR FROM PARAMETRI WHERE CODPAR = ?\",\n [\"VersioneDB\"]\n )) as any[];\n\n return parameters.length > 0 ? parameters[0].DESPAR : null;\n } catch (error: any) {\n this.logger.error(`Error getting database version:`, error);\n throw error;\n }\n }\n\n /**\n * Updates the database version in the PARAMETRI table.\n * @param options Database connection options.\n * @param version The new database version.\n */\n protected static async setDatabaseVersion(\n options: Options,\n version: string\n ): Promise<void> {\n\n try {\n\n await Orm.query(options, \"UPDATE PARAMETRI SET DESPAR = ? WHERE CODPAR = ?\", [\n version,\n \"VersioneDB\",\n ]);\n } catch (error: any) {\n this.logger.error(`Error setting database version:`, error);\n throw error;\n }\n }\n //#endregion\n\n //#region Initialization Methods\n /**\n * Ensures the PARAMETRI table exists and initializes it if necessary.\n * @param options Database connection options.\n */\n protected static async createParametersTable(options: Options): Promise<void> {\n try {\n const columnAlreadyExists = await this.columnExists(options, \"PARAMETRI\", \"CODPAR\");\n if (columnAlreadyExists) return;\n\n const createTableQuery = `\n CREATE TABLE PARAMETRI (\n CODPAR VARCHAR(15) NOT NULL,\n DESPAR VARCHAR(255),\n NOTE BLOB SUB_TYPE 1 SEGMENT SIZE 80,\n GRUPPO VARCHAR(20)\n );`;\n\n await Orm.query(options, createTableQuery);\n\n await Orm.query(\n options,\n \"ALTER TABLE PARAMETRI ADD CONSTRAINT PK_PARAMETRI PRIMARY KEY (CODPAR);\"\n );\n\n await Orm.query(options, \"GRANT ALL ON PARAMETRI TO PUBLIC;\");\n await Orm.query(options, \"GRANT SELECT ON PARAMETRI TO TABX;\");\n\n const versioneDb = await this.getDatabaseVersion(options);\n if (versioneDb !== null && versioneDb !== undefined) return;\n\n await Orm.query(\n options,\n \"INSERT INTO PARAMETRI (CODPAR, DESPAR, NOTE, GRUPPO) VALUES (?,?,?,?)\",\n [\"VersioneDB\", \"0.0a\", \"versione\", null]\n );\n } catch (error: any) {\n this.logger.error(\"Error creating table PARAMETRI:\", error);\n throw error;\n }\n\n\n }\n //#endregion\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmilsoftwareModule.js","sourceRoot":"","sources":["../src/EmilsoftwareModule.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAuD;AACvD,kEAA+E;AAC/E,qEAAmF;AACnF,qCAAkC;AAUlC;;;GAGG;AAEI,IAAM,kBAAkB,0BAAxB,MAAM,kBAAkB;IAC3B,MAAM,CAAC,OAAO,CAAC,OAA4B;QAEvC,MAAM,MAAM,GAAW,IAAI,eAAM,CAAC,oBAAkB,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;QAC5F,CAAC;QAGD,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;YACjE,OAAO,CAAC,IAAI,CAAC,6BAAa,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,6BAAa,CAAC,CAAC;QAChC,CAAC;aACI,CAAC;YACF,MAAM,CAAC,OAAO,CAAC,0EAA0E,CAAC,CAAC;QAC/F,CAAC;QAED,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;YAClE,OAAO,CAAC,IAAI,CAAC,+BAAc,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,+BAAc,CAAC,CAAC;QACjC,CAAC;aACI,CAAC;YACF,MAAM,CAAC,OAAO,CAAC,4EAA4E,CAAC,CAAC;QACjG,CAAC;QAED,OAAO;YACH,MAAM,EAAE,oBAAkB;YAC1B,OAAO;YACP,OAAO;SACV,CAAC;IACN,CAAC;CACJ,CAAA;AApCY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,kBAAkB,CAoC9B","sourcesContent":["import { DynamicModule, Module } from \"@nestjs/common\";\nimport { AccessiModule, AccessiOptions } from \"./accessi-module/AccessiModule\";\nimport { AllegatiModule, AllegatiOptions } from \"./allegati-module/AllegatiModule\";\nimport { Logger } from \"./Logger\";\n\n/**\n * Configuration options for the unified module that combines Accessi and Allegati functionality\n */\nexport interface EmilsoftwareOptions {\n accessiOptions: AccessiOptions;\n allegatiOptions: AllegatiOptions;\n}\n\n/**\n * Unified module that combines user access management (Accessi) and file attachment management (Allegati)\n * into a single NestJS module with shared Swagger documentation\n */\n@Module({})\nexport class EmilsoftwareModule {\n static forRoot(options: EmilsoftwareOptions): DynamicModule {\n\n const logger: Logger = new Logger(EmilsoftwareModule.name);\n let imports = [];\n let exports = [];\n\n if (!options) {\n throw new Error(\"EmilsoftwareModule requires valid accessiOptions and allegatiOptions\");\n }\n\n\n if (options.accessiOptions) {\n logger.info(\"Initializing AccessiModule with provided options.\");\n imports.push(AccessiModule.forRoot(options.accessiOptions));\n exports.push(AccessiModule);\n }\n else {\n logger.warning(\"Accessi options are not provided. AccessiModule will not be initialized.\");\n }\n\n if (options.allegatiOptions) {\n logger.info(\"Initializing AllegatiModule with provided options.\");\n imports.push(AllegatiModule.forRoot(options.allegatiOptions));\n exports.push(AllegatiModule);\n }\n else {\n logger.warning(\"Allegati options are not provided. AllegatiModule will not be initialized.\");\n }\n\n return {\n module: EmilsoftwareModule,\n imports,\n exports\n };\n }\n} "]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExecutionTimeLogger.js","sourceRoot":"","sources":["../src/ExecutionTimeLogger.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yBAA4B;AAE5B,MAAa,mBAAmB;IAC5B;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,MAAW,EAAE,WAAmB,EAAE,UAA8B;QACzE,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC;QAExC,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE,CAAC;YACvC,MAAM,IAAI,SAAS,CAAC,4DAA4D,OAAO,cAAc,EAAE,CAAC,CAAC;QAC7G,CAAC;QAED,UAAU,CAAC,KAAK,GAAG,UAAgB,GAAG,IAAW;;gBAC7C,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,iCAAiC;gBAC5E,MAAM,MAAM,GAAG,IAAI,SAAM,CAAC,SAAS,CAAC,CAAC,CAAC,gCAAgC;gBACtE,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,KAAK,WAAW,iCAAiC,CAAC,CAAC;gBAE5E,IAAI,CAAC;oBACD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBACtD,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAClC,MAAM,sBAAsB,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;oBAC5D,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,KAAK,WAAW,gBAAgB,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;oBAC5G,OAAO,MAAM,CAAC;gBAClB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,MAAM,CAAC,KAAK,CAAC,IAAI,SAAS,KAAK,WAAW,2BAA2B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;oBACtF,MAAM,KAAK,CAAC;gBAChB,CAAC;YACL,CAAC;SAAA,CAAC;QAEF,OAAO,UAAU,CAAC;IACtB,CAAC;CACJ;AAnCD,kDAmCC","sourcesContent":["import { Logger } from \"./\";\n\nexport class ExecutionTimeLogger {\n /**\n * Wraps a method to log its execution time and errors.\n * @param target The target object.\n * @param propertyKey The name of the method.\n * @param descriptor The property descriptor of the method.\n * @description use ExecutionTimeLogger.apply on any method\n */\n static apply(target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n const originalMethod = descriptor.value;\n\n if (typeof originalMethod !== \"function\") {\n throw new TypeError(`ExecutionTimeLogger can only be applied to methods, not: ${typeof originalMethod}`);\n }\n\n descriptor.value = async function (...args: any[]) {\n const className = target.constructor.name; // Get the class name dynamically\n const logger = new Logger(className); // Use the class name for logger\n const start = process.hrtime();\n logger.info(`[${className}] ${propertyKey} method execution started . . .`);\n \n try {\n const result = await originalMethod.apply(this, args);\n const end = process.hrtime(start);\n const durationInMilliseconds = end[0] * 1000 + end[1] / 1e6;\n logger.info(`[${className}] ${propertyKey} method took ${durationInMilliseconds.toFixed(2)} ms to execute`);\n return result;\n } catch (error) {\n logger.error(`[${className}] ${propertyKey} method threw an error: ${error.message}`);\n throw error;\n }\n };\n\n return descriptor;\n }\n}\n"]}
|
package/dist/Logger.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../src/Logger.ts"],"names":[],"mappings":"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","sourcesContent":["import winston from \"winston\";\nimport * as path from \"path\";\nimport { promises as fs } from \"fs\";\nimport { blue, red, magenta, green, cyan, yellow } from 'colorette';\n\nexport enum LogLevels {\n INFO = \"INFO\",\n ERROR = \"ERROR\",\n WARNING = \"WARNING\",\n DEBUG = \"DEBUG\",\n LOG = \"LOG\",\n DATABASE = \"DATABASE\",\n}\n\nexport class Logger {\n private readonly winstonLogger: winston.Logger;\n private readonly tag: string;\n private readonly logDirectory: string;\n private logFormat: winston.Logform.Format;\n\n constructor(\n tag: string,\n config?: {\n logDirectory?: string;\n customFormat?: winston.Logform.Format;\n transports?: winston.transport[];\n }\n ) {\n this.tag = tag || \"[UNTAGGED]\";\n this.logDirectory = config?.logDirectory || \"logs\";\n\n // Default log format\n this.logFormat =\n config?.customFormat ||\n winston.format.printf(({ timestamp, file, level, message, ...meta }) => {\n return JSON.stringify({\n timestamp: timestamp || new Date().toISOString(),\n tag: this.tag,\n file: this.replaceAll(file + \"\", \"\\\\\", \"/\"),\n level,\n message,\n ...meta,\n });\n });\n\n this.initializeDirectory();\n\n // Configure logger\n this.winstonLogger = winston.createLogger({\n format: winston.format.combine(winston.format.timestamp(), this.logFormat),\n transports: config?.transports || [\n new winston.transports.File({\n filename: path.join(this.logDirectory, this.getFileName() + \".json\"),\n }),\n ],\n levels: {\n error: 1,\n warning: 2,\n info: 3,\n http: 4,\n verbose: 5,\n debug: 6,\n silly: 7,\n database: 8,\n },\n });\n\n // Add colors for console logging\n winston.addColors({\n database: \"green\",\n error: \"red\",\n warning: \"yellow\",\n info: \"blue\",\n debug: \"magenta\",\n log: \"cyan\",\n });\n }\n\n private async initializeDirectory() {\n try {\n const exists = await fs.access(this.logDirectory).then(() => true).catch(() => false);\n if (!exists) {\n await fs.mkdir(this.logDirectory);\n }\n } catch (err) {\n console.error(\"Error initializing log directory:\", err);\n }\n }\n\n private getFileName(): string {\n const now = new Date();\n const dateString = now.toISOString().split(\"T\")[0]; // YYYY-MM-DD\n return dateString;\n }\n\n private replaceAll(string: string, match: string, replacer: string) {\n return string.split(match).join(replacer);\n }\n\n public execStart(prefix: string = \"\"): number {\n this.print(LogLevels.INFO, `${prefix} - Execution started`);\n return performance.now();\n }\n\n public execStop(prefix: string = \"\", startTime: number, error: boolean = false): void {\n const executionTime = performance.now() - startTime;\n const message = `${prefix} - Execution ended ${error ? \"due to an error\" : \"successfully\"\n }. Execution time: ${executionTime.toFixed(2)} ms`;\n this.print(error ? LogLevels.ERROR : LogLevels.INFO, message);\n }\n\n public info(...data: Object[]): void {\n this.print(LogLevels.INFO, ...data);\n }\n\n public dbLog(...data: Object[]): void {\n this.print(LogLevels.DATABASE, ...data);\n }\n\n public debug(...data: Object[]): void {\n this.print(LogLevels.DEBUG, ...data);\n }\n\n public warning(...data: Object[]): void {\n this.print(LogLevels.WARNING, ...data);\n }\n\n public log(...data: Object[]): void {\n this.print(LogLevels.LOG, ...data);\n }\n\n public error(...data: Object[]): void {\n this.print(LogLevels.ERROR, ...data);\n }\n\n private print(level: LogLevels, ...data: Object[]): void {\n const now: Date = new Date();\n const fileName = this.tag.split(\"\\\\\").pop() || this.tag;\n\n // Attach metadata to Winston logger\n this.winstonLogger.defaultMeta = {\n file: fileName,\n time: now,\n level,\n };\n\n const logEntry: winston.LogEntry = {\n level: level.toLowerCase(),\n message: [...data].join(\",\"),\n };\n\n // Log to console with colors\n switch (level) {\n case LogLevels.INFO:\n console.info(blue(`[INFO][${now}][${fileName}]`), logEntry.message);\n break;\n case LogLevels.ERROR:\n console.error(red(`[ERROR][${now}][${fileName}]`), logEntry.message);\n break;\n case LogLevels.DEBUG:\n console.debug(magenta(`[DEBUG][${now}][${fileName}]`), logEntry.message);\n break;\n case LogLevels.WARNING:\n console.debug(yellow(`[WARNING][${now}][${fileName}]`), logEntry.message);\n break;\n case LogLevels.LOG:\n console.log(cyan(`[LOG][${now}][${fileName}]`), logEntry.message);\n break;\n case LogLevels.DATABASE:\n console.log(green(`[DATABASE][${now}][${fileName}]`), logEntry.message);\n break;\n }\n\n // Log to file\n this.winstonLogger.log(logEntry);\n }\n\n public static createLogger(tag: string, config?: { logDirectory?: string }): Logger {\n return new Logger(tag, config);\n }\n}\n"]}
|
package/dist/Orm.js
CHANGED
package/dist/Orm.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Orm.js","sourceRoot":"","sources":["../src/Orm.ts"],"names":[],"mappings":"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","sourcesContent":["import * as Firebird from \"es-node-firebird\";\nimport { Logger } from \"./Logger\";\nimport { Database, Options, Transaction } from \"es-node-firebird\";\nimport { RestUtilities } from \"./Utilities\";\n\nexport class Orm {\n private static logger: Logger = new Logger(Orm.name);\n\n public static quote(value: string): string {\n return \"\\\"\" + value + \"\\\"\";\n }\n\n public static async testConnection(options: Options): Promise<boolean> {\n return new Promise((resolve): void => {\n Firebird.attach(options, (err: Error, db: Database): void => {\n if (err) {\n this.logger.error('La connessione con il DATABASE non è andata a buon fine.');\n return resolve(false);\n }\n this.logger.info(\"DATABASE connesso.\");\n if (db) db.detach();\n return resolve(true);\n });\n });\n }\n\n public static async query(options: Options, query: string, parameters: any[] = [], logQuery = true): Promise<any> {\n try {\n return new Promise((resolve, reject): void => {\n Firebird.attach(options, (err: any, db: Database) => {\n if (err) {\n this.logger.error(err);\n return reject(err);\n }\n\n if(logQuery) this.logger.info(RestUtilities.printQueryWithParams(query, parameters));\n db.query(query, parameters, (error: any, result: any) => {\n if (error) {\n this.logger.error(error);\n db.detach();\n return reject(error);\n }\n db.detach();\n return resolve(result);\n });\n });\n });\n } catch (error) {\n this.logger.error(error);\n throw error;\n }\n }\n\n public static async execute(options: Options, query: string, parameters: any = [], logQuery = true): Promise<any> {\n try {\n return new Promise((resolve, reject): void => {\n Firebird.attach(options, (err: any, db: Database) => {\n if (err) {\n this.logger.error(err);\n return reject(err);\n }\n\n if(logQuery) this.logger.info(RestUtilities.printQueryWithParams(query, parameters));\n db.execute(query, parameters, (error: any, result: any) => {\n if (error) {\n this.logger.error(error);\n db.detach();\n return reject(error);\n }\n db.detach();\n return resolve(result);\n });\n });\n });\n } catch (error) {\n this.logger.error(error);\n throw error;\n }\n }\n\n public static trimParam(param: any): string {\n if (typeof param === \"string\" || param instanceof String) {\n return param.trim();\n }\n return param;\n }\n\n public static async connect(options: Options): Promise<Database> {\n return new Promise((resolve, reject): void => {\n Firebird.attach(options, function (err: any, db: Database): void {\n if (err) return reject(err); else return resolve(db);\n });\n });\n }\n\n public static async startTransaction(db: Database): Promise<Transaction> {\n return new Promise((resolve, reject): void => {\n db.transaction(Firebird.ISOLATION_READ_COMMITTED, function (err: any, transaction: Transaction): void {\n if (err) return reject(err); else return resolve(transaction);\n });\n });\n }\n\n public static async commitTransaction(transaction: Transaction): Promise<string> {\n return new Promise((resolve, reject): void => {\n transaction.commit((err: any): void => {\n if (err) return reject(err); else return resolve('Transaction committed successfully.');\n });\n });\n }\n\n public static async rollbackTransaction(transaction: Transaction): Promise<string> {\n return new Promise((resolve, reject): void => {\n transaction.rollback((err: any): void => {\n if (err) return reject(err); else return resolve('Transaction rolled back successfully.');\n });\n });\n }\n\n public static async executeMultiple(options: Options, queriesWithParams: { query: string, params: any[] }[]): Promise<string> {\n let db: Database | undefined;\n let transaction: Transaction | undefined;\n\n try {\n db = await Orm.connect(options);\n transaction = await Orm.startTransaction(db);\n\n for (const qwp of queriesWithParams) {\n await new Promise((resolve, reject) => {\n transaction.query(qwp.query, qwp.params, (err: any, result: any): void => {\n if (err) return reject(err);\n else return resolve(result);\n });\n });\n }\n\n await Orm.commitTransaction(transaction);\n db.detach();\n return 'OK';\n\n } catch (error) {\n if (transaction) {\n await Orm.rollbackTransaction(transaction);\n }\n if (db) {\n db.detach();\n }\n throw error;\n }\n }\n\n public static async executeQueries(transaction: Transaction, queries: string[], params: any[]): Promise<any> {\n try {\n return await queries.reduce((promiseChain: Promise<any>, currentQuery: string, index: number) => {\n return promiseChain.then(() => new Promise((resolve, reject) => {\n transaction.query(currentQuery, params[index], (err: any, result: any): void => {\n if (err) return reject(err);\n else return resolve(result);\n });\n }));\n }, Promise.resolve());\n } catch (error) {\n return await new Promise((resolve, reject) => {\n transaction.rollback((rollbackErr: any): void => {\n if (rollbackErr) {\n return reject(rollbackErr);\n } else {\n return reject(error);\n }\n });\n });\n }\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RoutesLoggerMiddleware.js","sourceRoot":"","sources":["../src/RoutesLoggerMiddleware.ts"],"names":[],"mappings":";;;AAGA;;GAEG;AACH,MAAa,sBAAsB;IAG/B;;;OAGG;IACH,YAAY,MAAc;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB;QAC5D,MAAM,KAAK,GAAS,IAAI,IAAI,EAAE,CAAC,CAAC,wCAAwC;QAExE,0EAA0E;QAC1E,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAS,EAAE;YACxB,MAAM,GAAG,GAAS,IAAI,IAAI,EAAE,CAAC,CAAC,sCAAsC;YACpE,MAAM,OAAO,GAAW,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,8CAA8C;YAEvG,gDAAgD;YAChD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,WAAW,KAAK,OAAO,KAAK,CAAC,CAAC;QAC3F,CAAC,CAAC,CAAC;QAEH,yDAAyD;QACzD,IAAI,EAAE,CAAC;IACX,CAAC;CACJ;AAhCD,wDAgCC","sourcesContent":["import { NextFunction, Request, Response } from \"express\";\nimport { Logger } from \".\";\n\n/**\n * Middleware class for logging the execution time of routes.\n */\nexport class RoutesLoggerMiddleware {\n private logger: Logger;\n\n /**\n * Initializes the logger instance to be used.\n * @param logger - The logger instance.\n */\n constructor(logger: Logger) {\n this.logger = logger;\n }\n\n /**\n * Middleware function to log the execution time of each route.\n * @param req - The incoming HTTP request.\n * @param res - The HTTP response.\n * @param next - The next middleware function in the chain.\n */\n logExecutionTime(req: Request, res: Response, next: NextFunction): void {\n const start: Date = new Date(); // Record the start time of the request.\n\n // Attach a listener to the response object to calculate the elapsed time.\n res.on(\"finish\", (): void => {\n const end: Date = new Date(); // Record the end time of the request.\n const elapsed: number = end.getTime() - start.getTime(); // Calculate the elapsed time in milliseconds.\n\n // Log the HTTP method, URL, and execution time.\n this.logger.info(`Execution time for ${req.method} ${req.originalUrl}: ${elapsed} ms`);\n });\n\n // Continue to the next middleware function in the chain.\n next();\n }\n}\n"]}
|
package/dist/Utilities.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Utilities.js","sourceRoot":"","sources":["../src/Utilities.ts"],"names":[],"mappings":"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","sourcesContent":["import { Response } from 'express';\nimport { Options } from \"es-node-firebird\";\nimport crypto from \"crypto\";\n\n\nexport enum StatusCode {\n Ok = 0,\n Warning = 1,\n Error = 2,\n}\n\nexport class DateUtilities {\n /**\n * Pads a number with leading zeros to reach a specified length.\n * @param num - The number to pad.\n * @param totalLength - The total length of the resulting string.\n * @returns The padded string.\n */\n static addStartingZeros(num: number, totalLength: number): string {\n return String(num).padStart(totalLength, '0');\n }\n\n /**\n * Formats a Date object as a Moncler-style string.\n * @param dData - The date to format.\n * @param bAddMs - Whether to include milliseconds.\n * @returns The formatted date string.\n */\n static dateToMoncler(dData: Date, bAddMs: boolean = false): string {\n const yy = dData.getFullYear();\n const mm = this.addStartingZeros(dData.getMonth() + 1, 2);\n const dd = this.addStartingZeros(dData.getDate(), 2);\n const hh = this.addStartingZeros(dData.getHours(), 2);\n const nn = this.addStartingZeros(dData.getMinutes(), 2);\n const ss = this.addStartingZeros(dData.getSeconds(), 2);\n const ms = this.addStartingZeros(dData.getMilliseconds(), 3);\n return bAddMs ? `${yy}${mm}${dd}${hh}${nn}${ss}${ms}` : `${yy}${mm}${dd}${hh}${nn}${ss}`;\n }\n\n /**\n * Formats a Date object as a SQL-style string.\n * @param dData - The date to format.\n * @param bAddMs - Whether to include milliseconds.\n * @returns The formatted date string.\n */\n static dateToSql(dData: Date, bAddMs: boolean = false): string {\n const yy = dData.getFullYear();\n const mm = this.addStartingZeros(dData.getMonth() + 1, 2);\n const dd = this.addStartingZeros(dData.getDate(), 2);\n const hh = this.addStartingZeros(dData.getHours(), 2);\n const nn = this.addStartingZeros(dData.getMinutes(), 2);\n const ss = this.addStartingZeros(dData.getSeconds(), 2);\n const ms = this.addStartingZeros(dData.getMilliseconds(), 3);\n return bAddMs\n ? `${yy}-${mm}-${dd} ${hh}:${nn}:${ss}.${ms}`\n : `${yy}-${mm}-${dd} ${hh}:${nn}:${ss}`;\n }\n\n /**\n * Formats a Date object as a simple string (dd-MM-yyyy).\n * @param dData - The date to format.\n * @returns The formatted date string.\n */\n static dateToSimple(dData: Date): string {\n const yy = dData.getFullYear();\n const mm = this.addStartingZeros(dData.getMonth() + 1, 2);\n const dd = this.addStartingZeros(dData.getDate(), 2);\n return `${dd}-${mm}-${yy}`;\n }\n\n /**\n * Gets the current date and time as a formatted string.\n * @returns The current date and time in the format dd.MM.yyyy HH:mm:ss.\n */\n static getNowDateString(): string {\n const now: Date = new Date();\n const day = now.getDate().toString().padStart(2, \"0\");\n const month = (now.getMonth() + 1).toString().padStart(2, \"0\");\n const year = now.getFullYear();\n const hours = now.getHours().toString().padStart(2, \"0\");\n const minutes = now.getMinutes().toString().padStart(2, \"0\");\n const seconds = now.getSeconds().toString().padStart(2, \"0\");\n return `${day}.${month}.${year} ${hours}:${minutes}:${seconds}`;\n }\n\n /**\n * Parses a date string in the format dd/MM/yyyy into a Date object.\n * @param date - The date string to parse.\n * @returns A Date object.\n */\n static parseDate(date: string): Date {\n const parts: string[] = date.split(\"/\");\n return new Date(Number(parts[2]), Number(parts[1]) - 1, Number(parts[0]));\n }\n}\n\n\nexport class RestUtilities {\n /**\n * Sends an OK message as a response.\n * @param res - Express Response object.\n * @param message - The success message.\n * @returns The Response object.\n */\n static sendOKMessage(res: Response, message: string): Response {\n return res.send({\n severity: \"success\",\n status: 200,\n statusCode: StatusCode.Ok,\n message,\n });\n }\n\n /**\n * Sends an error message as a response.\n * @param res - Express Response object.\n * @param error - The error to send.\n * @param tag - Optional tag for additional context.\n * @param status - HTTP status code (default: 500).\n * @returns The Response object.\n */\n static sendErrorMessage(res: Response, error: any, tag: string = \"[BASE ERROR]\", status: number = 500): Response {\n return res.status(status).send({\n severity: \"error\",\n status,\n statusCode: StatusCode.Error,\n message: \"An error occurred\",\n error: `${tag}: ${error}`,\n });\n }\n\n\n static sendUnauthorized(res: Response): Response {\n return res.status(401).send({\n severity: \"error\",\n statusCode: StatusCode.Error,\n message: \"Non sei autorizzato\",\n });\n }\n\n static sendInvalidCredentials(res: Response): Response {\n return res.status(401).send({\n severity: \"error\",\n statusCode: StatusCode.Error,\n message: \"Credenziali non valide\"\n });\n }\n\n static sendPasswordExpired(res: Response): Response {\n return res.status(403).send({\n severity: \"warning\",\n statusCode: StatusCode.Warning,\n code: \"PASSWORD_EXPIRED\",\n message: \"Password scaduta. E' necessario aggiornarla\"\n })\n }\n\n /**\n * Sends a base response with a payload.\n * @param res - Express Response object.\n * @param payload - The payload to include in the response.\n * @returns The Response object.\n */\n static sendBaseResponse(res: Response, payload: any): Response {\n try {\n payload = JSON.parse(JSON.stringify(payload));\n const response = {\n Status: {\n errorCode: \"0\",\n errorDescription: \"\",\n },\n Result: payload,\n Message: \"Dati recuperati con successo.\",\n };\n return res.send(response);\n } catch (error) {\n return this.sendErrorMessage(res, `Error sending response: ${error}`, \"[UTILITIES]\", 500);\n }\n }\n\n /**\n * Sends an execution message as a response.\n * @param res - Express Response object.\n * @param executionObject - The execution data.\n * @param title - The title of the response.\n * @returns The Response object.\n */\n static sendExecMessage(res: Response, executionObject: any, title: string): Response {\n try {\n const response = {\n Status: {\n errorCode: \"0\",\n errorDescription: \"\",\n },\n Sql: \"\",\n ID: executionObject?.id,\n data: executionObject,\n Title: title,\n };\n return res.send(response);\n } catch (error) {\n return this.sendErrorMessage(res, `Error sending execution message: ${error}`, title, 500);\n }\n }\n\n /**\n * Prints a SQL query with parameters replaced.\n * @param query - The SQL query.\n * @param params - The parameters to replace.\n * @returns The formatted query.\n */\n static printQueryWithParams(query: string = \"\", params: any[]): string {\n try {\n params.forEach(param => {\n query = query.replace(\"?\", param);\n });\n return query;\n } catch (error) {\n throw error;\n }\n }\n\n\n public static convertKeysToCamelCase(obj: any): any {\n if (obj !== null && obj.constructor === Object) {\n return Object.keys(obj).reduce((acc: any, key: string) => {\n const camelCaseKey = key.toLowerCase().replace(/_([a-z])/g, g => g[1].toUpperCase());\n acc[camelCaseKey] = obj[key];\n return acc;\n }, {});\n }\n return obj;\n }\n}\n\n\nexport class CryptUtilities {\n\n /**\n * Cifra un testo in chiaro usando l'algoritmo AES-128 in modalità ECB.\n * \n * @param plainText - Il testo in chiaro da cifrare.\n * @param key - La chiave di cifratura (16 byte per AES-128).\n * @param outputEncoding - Codifica del risultato cifrato (predefinito: \"base64\").\n * @returns Il testo cifrato codificato.\n * @throws Errore in caso di problemi durante la cifratura.\n */\n public static encrypt(plainData: string, key: string, outputEncoding: BufferEncoding = \"base64\"): string {\n try {\n // Crea un oggetto Cipher usando AES-128 in modalità ECB\n const cipher = crypto.createCipheriv(\"aes-128-ecb\", Buffer.from(key, \"utf8\"), null);\n\n // Cifra il testo in chiaro e finalizza il processo\n const encryptedBuffer = Buffer.concat([\n cipher.update(plainData, \"utf8\"),\n cipher.final(),\n ]);\n\n // Restituisce il risultato cifrato codificato\n return encryptedBuffer.toString(outputEncoding);\n } catch (error) {\n // Gestisce eventuali errori di cifratura\n throw new Error(`Errore durante la cifratura: ${error.message}`);\n }\n }\n\n /**\n * Decifra un testo cifrato usando l'algoritmo AES-128 in modalità ECB.\n * \n * @param encryptedData - Il testo cifrato da decifrare.\n * @param key - La chiave di decifratura (16 byte per AES-128).\n * @returns Il testo decifrato o null in caso di errore.\n */\n public static decrypt(encryptedData: string, key: string): string | null {\n try {\n // Crea un oggetto Decipher usando AES-128 in modalità ECB\n const decipher = crypto.createDecipheriv(\"aes-128-ecb\", Buffer.from(key, \"utf8\"), null);\n decipher.setAutoPadding(false);\n\n // Decifra il testo cifrato\n let decoded = decipher.update(encryptedData, \"base64\", \"utf8\");\n decoded += decipher.final(\"utf8\");\n\n // Rimuove il padding manuale\n const lastChar = decoded.charCodeAt(decoded.length - 1);\n decoded = decoded.slice(0, decoded.length - lastChar);\n\n return decoded;\n } catch (error) {\n console.error(\"Errore durante la decifratura:\", error);\n return null;\n }\n }\n}\n\n\n\n\n\n/**\n * Utility class for managing database-related configurations and operations.\n */\nexport class DatabaseUtilities {\n /**\n * Creates a configuration object for connecting to a Firebird database.\n *\n * @param {string} host - The hostname or IP address of the database server.\n * @param {number} port - The port number on which the database server is running.\n * @param {string} database - The path or alias of the database to connect to.\n * @param {string} [username='SYSDBA'] - The username for authentication. Defaults to 'SYSDBA'.\n * @param {string} [password='masterkey'] - The password for authentication. Defaults to 'masterkey'.\n * @returns {Options} - The configuration object to use for establishing a Firebird database connection.\n *\n * @example\n * ```typescript\n * const options = DatabaseUtilities.createOption(\n * 'localhost',\n * 3050,\n * '/path/to/database.fdb',\n * 'myUsername',\n * 'myPassword'\n * );\n * ```\n */\n public static createOption(\n host: string,\n port: number,\n database: string,\n username = 'SYSDBA',\n password = 'masterkey'\n ): Options {\n return {\n host, // The hostname or IP address of the database server.\n port, // The port number used by the database server.\n user: username, // The username for database authentication.\n password, // The password for database authentication.\n database, // The path or alias of the target database.\n lowercase_keys: false, // Determines if the keys in query results should be in lowercase. Default: false.\n role: undefined, // The role for the database connection. Default: undefined.\n pageSize: 100000, // The page size for database transactions. Default: 100,000.\n retryConnectionInterval: 1000, // The interval (in ms) to retry a failed connection. Default: 1,000 ms.\n blobAsText: true, // Determines if BLOB fields should be treated as text. Default: true.\n };\n }\n}\n\nexport function Deprecated(message: string) {\n return function (target: any, key?: string, descriptor?: PropertyDescriptor) {\n console.warn(`[DEPRECATED] ${message}`);\n };\n }"]}
|
|
@@ -68,3 +68,4 @@ exports.AccessiModule = AccessiModule = AccessiModule_1 = __decorate([
|
|
|
68
68
|
exports: [AuthService_1.AuthService, UserService_1.UserService, EmailService_1.EmailService, PermissionService_1.PermissionService, FiltriService_1.FiltriService, ConfiguratorService_1.ConfiguratorService, jwt_strategy_1.JwtSimpleGuard],
|
|
69
69
|
})
|
|
70
70
|
], AccessiModule);
|
|
71
|
+
//# sourceMappingURL=AccessiModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccessiModule.js","sourceRoot":"","sources":["../../src/accessi-module/AccessiModule.ts"],"names":[],"mappings":";;;;;;;;;;AAOA,2CAA+D;AAC/D,oEAAiE;AACjE,uEAAoE;AACpE,sFAAmF;AACnF,oEAAiE;AACjE,mEAAgE;AAChE,iEAA8D;AAC9D,6EAA0E;AAC1E,iEAA8D;AAC9D,0EAAuE;AACvE,qEAAkE;AAClE,iFAA8E;AAC9E,4FAAyF;AACzF,qDAAoD;AA4D7C,IAAM,aAAa,qBAAnB,MAAM,aAAa;IACxB,MAAM,CAAC,OAAO,CAAC,OAAuB;QACpC,OAAO;YACL,MAAM,EAAE,eAAa;YACrB,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,iBAAiB;oBAC1B,QAAQ,EAAE,OAAO;iBAClB;gBACD,yBAAW;gBACX,yBAAW;gBACX,2BAAY;gBACZ,qCAAiB;gBACjB,6BAAa;gBACb,yCAAmB;gBACnB,6BAAc;aACf;YACD,OAAO,EAAE;gBACP,iBAAiB;gBACjB,yBAAW;gBACX,yBAAW;gBACX,2BAAY;gBACZ,qCAAiB;gBACjB,6BAAa;gBACb,yCAAmB;gBACnB,6BAAc;aACf;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AA7BY,sCAAa;wBAAb,aAAa;IAbzB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,WAAW,EAAE;YACX,iCAAe;YACf,+BAAc;YACd,2CAAoB;YACpB,+BAAc;YACd,mCAAgB;YAChB,+CAAsB;SACvB;QACD,SAAS,EAAE,CAAC,yBAAW,EAAE,yBAAW,EAAE,2BAAY,EAAE,qCAAiB,EAAE,6BAAa,EAAE,yCAAmB,EAAE,6BAAc,CAAC;QAC1H,OAAO,EAAE,CAAC,yBAAW,EAAE,yBAAW,EAAE,2BAAY,EAAE,qCAAiB,EAAE,6BAAa,EAAE,yCAAmB,EAAE,6BAAc,CAAC;KACzH,CAAC;GACW,aAAa,CA6BzB","sourcesContent":["/**\n * Modulo che gestisce le operazioni di accesso degli utenti, incluse le rotte, il controller e il modello.\n *\n * @module AccessiModule\n * @author mttdev382\n */\nimport { Options } from 'es-node-firebird';\nimport { DynamicModule, Global, Module } from '@nestjs/common';\nimport { AuthService } from './Services/AuthService/AuthService';\nimport { EmailService } from './Services/EmailService/EmailService';\nimport { PermissionService } from './Services/PermissionService/PermissionService';\nimport { UserService } from './Services/UserService/UserService';\nimport { EmailController } from './Controllers/EmailController';\nimport { AuthController } from './Controllers/AuthController';\nimport { PermissionController } from './Controllers/PermissionController';\nimport { UserController } from './Controllers/UserController';\nimport { FiltriService } from './Services/FiltriService/FiltriService';\nimport { FiltriController } from './Controllers/FiltriController';\nimport { ConfiguratorController } from './Controllers/ConfiguratorController';\nimport { ConfiguratorService } from './Services/ConfiguratorService/ConfiguratorService';\nimport { JwtSimpleGuard } from './jwt/jwt.strategy';\n\nexport interface JwtOptions {\n secret: string;\n expiresIn: string;\n}\n\nexport interface EmailOptions {\n host: string;\n port: number;\n secure: boolean;\n from: string;\n auth: {\n user: string;\n pass: string;\n };\n}\n\nexport interface ExtensionFieldsOptions {\n databaseOptions: Options;\n objectKey: string;\n tableName: string;\n tableFields: string[];\n tableJoinFieldName: string;\n}\n\nexport interface AccessiOptions {\n databaseOptions: Options;\n /**\n * Basepath del sito es: 'http://www.il-mio-sito.it/nome-progetto(se c'è)'\n */\n confirmationEmailUrl: string;\n /**\n * Percorso della pagina di reset personalizzata es. http://localhost:4200/#/admin/reset-password\n * N.B si sostituisce al confirmationMailURl\n */\n customResetPage?: string;\n confirmationEmailReturnUrl: string;\n confirmationEmailPrefix?: string;\n encryptionKey: string;\n mockDemoUser: boolean;\n passwordExpiration?: boolean;\n jwtOptions: JwtOptions;\n emailOptions: EmailOptions;\n extensionFieldsOptions?: ExtensionFieldsOptions[];\n}\n\n@Global()\n@Module({\n controllers: [\n EmailController,\n AuthController,\n PermissionController,\n UserController,\n FiltriController,\n ConfiguratorController\n ],\n providers: [AuthService, UserService, EmailService, PermissionService, FiltriService, ConfiguratorService, JwtSimpleGuard],\n exports: [AuthService, UserService, EmailService, PermissionService, FiltriService, ConfiguratorService, JwtSimpleGuard],\n})\nexport class AccessiModule {\n static forRoot(options: AccessiOptions): DynamicModule {\n return {\n module: AccessiModule,\n providers: [\n {\n provide: 'ACCESSI_OPTIONS',\n useValue: options,\n },\n AuthService,\n UserService,\n EmailService,\n PermissionService,\n FiltriService,\n ConfiguratorService,\n JwtSimpleGuard\n ],\n exports: [\n 'ACCESSI_OPTIONS',\n AuthService,\n UserService,\n EmailService,\n PermissionService,\n FiltriService,\n ConfiguratorService,\n JwtSimpleGuard\n ],\n };\n }\n}\n"]}
|
|
@@ -195,3 +195,4 @@ exports.AuthController = AuthController = AuthController_1 = __decorate([
|
|
|
195
195
|
__param(1, (0, common_1.Inject)('ACCESSI_OPTIONS')),
|
|
196
196
|
__metadata("design:paramtypes", [AuthService_1.AuthService, Object])
|
|
197
197
|
], AuthController);
|
|
198
|
+
//# sourceMappingURL=AuthController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthController.js","sourceRoot":"","sources":["../../../src/accessi-module/Controllers/AuthController.ts"],"names":[],"mappings":"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","sourcesContent":["import { Body, Controller, Inject, Param, Post, Res } from '@nestjs/common';\nimport { ApiOperation, ApiTags, ApiResponse, ApiParam, ApiBody } from '@nestjs/swagger';\nimport { Response } from 'express';\nimport * as jwt from 'jsonwebtoken';\nimport { RestUtilities } from '../../Utilities';\nimport { AccessiOptions } from '../AccessiModule';\nimport { AuthService } from '../Services/AuthService/AuthService';\nimport { LoginRequest, LoginResponse } from '../Dtos';\nimport { Logger } from '../../Logger';\n\n@ApiTags('Auth')\n@Controller('accessi/auth')\nexport class AuthController {\n\n logger: Logger = new Logger(AuthController.name);\n constructor(\n private readonly authService: AuthService,\n @Inject('ACCESSI_OPTIONS') private readonly options: AccessiOptions\n ) { }\n\n @ApiOperation({ summary: 'Conferma il reset della password', operationId: \"resetPassword\" })\n @ApiParam({ name: 'token', description: 'Token per il reset della password', required: true })\n @ApiBody({ schema: { properties: { newPassword: { type: 'string', description: 'Nuova password da impostare' } } } })\n @ApiResponse({ status: 200, description: 'Password aggiornata con successo' })\n @ApiResponse({ status: 400, description: 'Errore nella richiesta o token non valido' })\n @Post('confirm-reset-password/:token')\n async resetPassword(@Res() res: Response, @Param('token') token: string, @Body(\"newPassword\") newPassword: string) {\n try {\n await this.authService.confirmResetPassword(token, newPassword);\n return RestUtilities.sendOKMessage(res, 'Password aggiornata con successo!');\n } catch (error) {\n return RestUtilities.sendErrorMessage(res, error, AuthController.name);\n }\n }\n\n @ApiOperation({ summary: 'Recupera le informazioni utente dal token JWT', operationId: \"getUserByToken\" })\n @ApiBody({ schema: { properties: { token: { type: 'string', description: 'JWT dell\\'utente' } } } })\n @ApiResponse({ status: 200, description: 'Informazioni utente recuperate con successo' })\n @ApiResponse({ status: 401, description: 'Token non valido o scaduto' })\n @Post('get-user-by-token')\n async getUserByToken(@Body('token') token: string, @Res() res: Response) {\n try {\n if (!token) return RestUtilities.sendErrorMessage(res, 'Token non fornito', AuthController.name);\n const decoded = jwt.verify(token, this.options.jwtOptions.secret);\n if (!decoded) return RestUtilities.sendUnauthorized(res);\n return RestUtilities.sendBaseResponse(res, { userData: decoded });\n } catch (error) {\n return RestUtilities.sendErrorMessage(res, error, AuthController.name);\n }\n }\n\n @ApiOperation({\n summary: 'Effettua il login utente',\n description: 'Autentica l\\'utente con email e password. Restituisce un token JWT e i dati dell\\'utente se le credenziali sono corrette.',\n operationId: 'login',\n })\n @ApiBody({ type: LoginRequest })\n @ApiResponse({\n status: 200,\n description: 'Login effettuato con successo',\n type: LoginResponse,\n })\n @ApiResponse({\n status: 401,\n description: 'Credenziali non valide',\n })\n @ApiResponse({\n status: 403,\n description: \"Password scaduta, è necessatio aggiornarla. \",\n schema: {\n example: {\n message: {\n severity: 'warning',\n statusCode: 2, // o il valore di StatusCode.Warning\n code: 'PASSWORD_EXPIRED',\n message: 'Password scaduta. È necessario aggiornarla.',\n }\n }\n }\n })\n @Post('login')\n async login(@Body() loginRequest: LoginRequest, @Res() res: Response) {\n try {\n\n const userData = await this.authService.login(loginRequest);\n if (!userData) {\n return RestUtilities.sendInvalidCredentials(res);\n }\n\n const tokenData = {\n utente: userData.utente\n }\n\n userData.token = {\n expiresIn: this.options.jwtOptions.expiresIn,\n value: jwt.sign(tokenData, this.options.jwtOptions.secret, {\n expiresIn: this.options.jwtOptions.expiresIn as any,\n }),\n type: 'Bearer',\n };\n\n return RestUtilities.sendBaseResponse(res, userData);\n } catch (error) {\n\n if (error.message === 'PASSWORD_EXPIRED') {\n this.logger.warning('Password scaduta, cambiare password ', error)\n return RestUtilities.sendPasswordExpired(res)\n }\n\n this.logger.error('Errore durante il login', error);\n return RestUtilities.sendInvalidCredentials(res);\n }\n }\n}\n"]}
|
|
@@ -151,3 +151,4 @@ exports.ConfiguratorController = ConfiguratorController = ConfiguratorController
|
|
|
151
151
|
__metadata("design:paramtypes", [Object, UserService_1.UserService,
|
|
152
152
|
ConfiguratorService_1.ConfiguratorService])
|
|
153
153
|
], ConfiguratorController);
|
|
154
|
+
//# sourceMappingURL=ConfiguratorController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfiguratorController.js","sourceRoot":"","sources":["../../../src/accessi-module/Controllers/ConfiguratorController.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Body,\n Controller,\n Inject,\n Param,\n Patch,\n Res,\n UseGuards,\n Req\n} from '@nestjs/common';\nimport {\n ApiBearerAuth,\n ApiBody,\n ApiOperation,\n ApiParam,\n ApiResponse,\n ApiTags\n} from '@nestjs/swagger';\nimport { Request, Response } from 'express';\nimport { RestUtilities } from '../../Utilities';\nimport { AccessiOptions } from '../AccessiModule';\nimport { UpdateEnabledStatusRequest } from '../Dtos';\nimport { ConfiguratorService } from '../Services/ConfiguratorService/ConfiguratorService';\nimport { UserService } from '../Services/UserService/UserService';\nimport { JwtSimpleGuard } from '../jwt/jwt.strategy';\n\n@ApiBearerAuth()\n@ApiTags('Configurator')\n@Controller('accessi/configurator')\n@UseGuards(JwtSimpleGuard)\nexport class ConfiguratorController {\n constructor(\n @Inject('ACCESSI_OPTIONS') private readonly options: AccessiOptions,\n private userService: UserService,\n private configuratorService: ConfiguratorService\n ) {}\n\n @ApiOperation({\n summary: 'Aggiorna lo stato di abilitazione di un menu',\n operationId: 'setMenuEnabled',\n })\n @ApiParam({\n name: 'codiceMenu',\n description: 'Codice identificativo del menu da aggiornare',\n required: true,\n example: 'MNU001',\n })\n @ApiBody({ type: UpdateEnabledStatusRequest })\n @ApiResponse({ status: 200, description: 'Stato del menu aggiornato con successo' })\n @ApiResponse({ status: 400, description: 'Errore di validazione nei dati inviati' })\n @ApiResponse({ status: 403, description: \"Utente non autorizzato ad eseguire l'operazione\" })\n @ApiResponse({ status: 500, description: 'Errore interno del server' })\n @Patch('menus/:codiceMenu/enabled')\n async setMenuEnabled(\n @Param('codiceMenu') codiceMenu: string,\n @Body() body: UpdateEnabledStatusRequest,\n @Req() req: Request,\n @Res() res: Response,\n ) {\n try {\n if (!codiceMenu) throw new Error('Il codice del menu � obbligatorio.');\n if (body?.enabled === undefined) throw new Error('Lo stato di abilitazione � obbligatorio.');\n\n const user = (req as any)?.user;\n const codiceUtente = user?.utente?.codiceUtente;\n if (!codiceUtente) {\n return RestUtilities.sendErrorMessage(\n res,\n 'Utente non riconosciuto dal token.',\n ConfiguratorController.name,\n 401,\n );\n }\n\n const canConfigure =\n user?.utente?.flagAdminConfigurator ||\n (await this.userService.isAdminConfigurator(codiceUtente));\n if (!canConfigure) {\n return RestUtilities.sendErrorMessage(\n res,\n 'Utente non autorizzato ad aggiornare i menu.',\n ConfiguratorController.name,\n 403,\n );\n }\n\n await this.configuratorService.setMenuEnabled(codiceMenu, body.enabled);\n\n const action = body.enabled ? 'abilitato' : 'disabilitato';\n return RestUtilities.sendOKMessage(\n res,\n `Il menu ${codiceMenu} � stato ${action} con successo.`,\n );\n } catch (error) {\n return RestUtilities.sendErrorMessage(res, error, ConfiguratorController.name);\n }\n }\n\n @ApiOperation({\n summary: 'Aggiorna lo stato di abilitazione di un gruppo menu',\n operationId: 'setGroupEnabled',\n })\n @ApiParam({\n name: 'codiceGruppo',\n description: 'Codice identificativo del gruppo da aggiornare',\n required: true,\n example: 'GRP01',\n })\n @ApiBody({ type: UpdateEnabledStatusRequest })\n @ApiResponse({ status: 200, description: 'Stato del gruppo aggiornato con successo' })\n @ApiResponse({ status: 400, description: 'Errore di validazione nei dati inviati' })\n @ApiResponse({ status: 403, description: \"Utente non autorizzato ad eseguire l'operazione\" })\n @ApiResponse({ status: 500, description: 'Errore interno del server' })\n @Patch('groups/:codiceGruppo/enabled')\n async setGroupEnabled(\n @Param('codiceGruppo') codiceGruppo: string,\n @Body() body: UpdateEnabledStatusRequest,\n @Req() req: Request,\n @Res() res: Response,\n ) {\n try {\n if (!codiceGruppo) throw new Error('Il codice del gruppo � obbligatorio.');\n if (body?.enabled === undefined) throw new Error('Lo stato di abilitazione � obbligatorio.');\n\n const user = (req as any)?.user;\n const codiceUtente = user?.utente?.codiceUtente;\n if (!codiceUtente) {\n return RestUtilities.sendErrorMessage(\n res,\n 'Utente non riconosciuto dal token.',\n ConfiguratorController.name,\n 401,\n );\n }\n\n const canConfigure =\n user?.utente?.flagAdminConfigurator ||\n (await this.userService.isAdminConfigurator(codiceUtente));\n if (!canConfigure) {\n return RestUtilities.sendErrorMessage(\n res,\n 'Utente non autorizzato ad aggiornare i gruppi menu.',\n ConfiguratorController.name,\n 403,\n );\n }\n\n await this.configuratorService.setGroupEnabled(codiceGruppo, body.enabled);\n\n const action = body.enabled ? 'abilitato' : 'disabilitato';\n return RestUtilities.sendOKMessage(\n res,\n `Il gruppo ${codiceGruppo} � stato ${action} con successo.`,\n );\n } catch (error) {\n return RestUtilities.sendErrorMessage(res, error, ConfiguratorController.name);\n }\n }\n}\n"]}
|
|
@@ -111,3 +111,4 @@ exports.EmailController = EmailController = EmailController_1 = __decorate([
|
|
|
111
111
|
__param(1, (0, common_1.Inject)('ACCESSI_OPTIONS')),
|
|
112
112
|
__metadata("design:paramtypes", [EmailService_1.EmailService, Object])
|
|
113
113
|
], EmailController);
|
|
114
|
+
//# sourceMappingURL=EmailController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmailController.js","sourceRoot":"","sources":["../../../src/accessi-module/Controllers/EmailController.ts"],"names":[],"mappings":"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","sourcesContent":["import { Body, Controller, Get, Inject, Param, Post, Query, Req, Res } from '@nestjs/common';\nimport { ApiOperation, ApiTags, ApiResponse, ApiParam, ApiBody, ApiQuery } from '@nestjs/swagger';\nimport { Response, Request } from 'express';\nimport { join } from 'path';\nimport { RestUtilities } from '../../Utilities';\nimport { AccessiOptions } from '../AccessiModule';\nimport { EmailService } from '../Services/EmailService/EmailService';\nimport { IsOptional } from 'class-validator';\n@ApiTags('Email')\n@Controller('accessi/email')\nexport class EmailController {\n constructor(\n private readonly emailService: EmailService,\n @Inject('ACCESSI_OPTIONS') private readonly options: AccessiOptions,\n ) {}\n\n @ApiOperation({\n summary: 'Serve una pagina per il reset della password',\n operationId: 'serveResetPasswordPage',\n })\n @ApiParam({ name: 'token', description: 'Token per il reset della password', required: true })\n @ApiQuery({\n name: 'returnUrl',\n description: 'Url di ritorno della pagina. Default: https://google.com',\n required: false,\n })\n @ApiResponse({ status: 200, description: 'Pagina di reset password servita con successo' })\n @Get('reset-password-page/:token')\n async serveResetPasswordPage(\n @Res() res: Response,\n @Param('token') token: string,\n @Query('returnUrl') returnUrl?: string,\n ) {\n return res.sendFile(join(__dirname, '..', 'Views', 'reset-password.html'));\n }\n\n @ApiOperation({\n summary: 'Invia una e-mail per il reset della password',\n operationId: 'sendPasswordResetEmail',\n })\n @ApiBody({\n schema: {\n properties: {\n email: {\n type: 'string',\n description: \"L'email dell'utente che richiede il reset\",\n },\n htmlMail: {\n type: 'string',\n description: 'Corpo della mail in HTML',\n },\n },\n required: ['email'],\n },\n })\n @ApiResponse({ status: 200, description: \"L'email di reset è stata inviata con successo\" })\n @ApiResponse({\n status: 400,\n description: 'Errore nella richiesta: protocollo o host non impostati',\n })\n @ApiResponse({ status: 500, description: \"Errore interno durante l'invio dell'email\" })\n @Post('send-reset-password-email')\n async sendPasswordResetEmail(\n @Req() request: Request,\n @Body()\n sendResetPasswordData: {\n email: string;\n htmlMail?: string;\n },\n @Res() res: Response,\n ) {\n try {\n await this.emailService.sendPasswordResetEmail(\n sendResetPasswordData.email,\n sendResetPasswordData.htmlMail,\n );\n return RestUtilities.sendOKMessage(\n res,\n \"L'email di reset è stata inoltrata al destinatario.\",\n );\n } catch (error) {\n return RestUtilities.sendErrorMessage(res, error, EmailController.name);\n }\n }\n}\n"]}
|
|
@@ -136,3 +136,4 @@ exports.FiltriController = FiltriController = FiltriController_1 = __decorate([
|
|
|
136
136
|
__param(1, (0, common_1.Inject)('ACCESSI_OPTIONS')),
|
|
137
137
|
__metadata("design:paramtypes", [FiltriService_1.FiltriService, Object])
|
|
138
138
|
], FiltriController);
|
|
139
|
+
//# sourceMappingURL=FiltriController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FiltriController.js","sourceRoot":"","sources":["../../../src/accessi-module/Controllers/FiltriController.ts"],"names":[],"mappings":"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","sourcesContent":["import { Body, Controller, Get, Inject, Post, Query, Res } from '@nestjs/common';\nimport { ApiOperation, ApiQuery, ApiResponse, ApiTags } from '@nestjs/swagger';\nimport { Response } from 'express';\nimport { RestUtilities } from '../../Utilities';\nimport { AccessiOptions } from '../AccessiModule';\nimport { BaseResponse, FiltriUtente, GetFiltriUtenteRequest, GetFiltriUtenteResponse } from '../Dtos';\nimport { GetFiltriRequest, GetFiltriResponse, TipoFiltro } from '../Dtos/TipoFiltro';\nimport { FiltriService } from '../Services/FiltriService/FiltriService';\n\n@ApiTags('Filtri')\n@Controller('accessi/filtri')\nexport class FiltriController {\n constructor(\n private readonly filtriService: FiltriService,\n @Inject('ACCESSI_OPTIONS') private readonly options: AccessiOptions,\n ) {}\n\n @Get('tipi')\n @ApiOperation({\n operationId: 'getTipiFiltro',\n summary: 'Recupera la lista dei tipi di filtri',\n description: 'Ritorna tutti i tipi di filtri disponibili nel sistema',\n })\n @ApiResponse({\n status: 200,\n description: 'Lista dei tipi di filtri recuperata con successo',\n type: GetFiltriResponse,\n })\n @ApiResponse({\n status: 500,\n description: 'Errore interno durante il recupero dei tipi di filtri',\n })\n async getTipoFiltri(@Res() res: Response) {\n try {\n const response = await this.filtriService.getTipoFiltri();\n return RestUtilities.sendBaseResponse(res, response);\n } catch (error) {\n return RestUtilities.sendErrorMessage(res, error, FiltriController.name);\n }\n }\n\n @Get('utente')\n @ApiOperation({\n operationId: 'getFiltriUtente',\n summary: 'Recupera i filtri di un utente',\n description: 'Ritorna tutti i filtri associati ad un utente specifico',\n })\n @ApiResponse({\n status: 200,\n description: 'Lista dei filtri dell’utente recuperata con successo',\n type: GetFiltriUtenteResponse,\n })\n async getFiltriUtente(@Res() res: Response, @Query() req: GetFiltriUtenteRequest) {\n try {\n let {codUte} = req\n const response = await this.filtriService.getFiltriUser(codUte);\n return RestUtilities.sendBaseResponse(res, response);\n } catch (error) {\n return RestUtilities.sendErrorMessage(res, error, FiltriController.name);\n }\n }\n\n @Post('utente')\n @ApiOperation({\n operationId: 'saveFiltriUtente',\n summary: 'Inserisce o aggiorna i filtri di un utente',\n description: 'Permette di salvare (inserire o aggiornare) i filtri associati ad un utente specifico'\n })\n @ApiResponse({\n status: 200,\n description: 'Filtri utente salvati con successo'\n })\n @ApiResponse({\n status: 500,\n description: 'Errore interno durante il salvataggio dei filtri utente',\n })\n async saveFiltriUtente(@Res() res : Response, @Body() req: FiltriUtente) {\n try {\n const response = await this.filtriService.upsertFiltriUtente(req.codUte, req)\n return RestUtilities.sendOKMessage(res,`Aggiornamento filtri per l'utente ${req.codUte} effettuato correttamente`)\n } catch (error) {\n return RestUtilities.sendErrorMessage(res,error,FiltriController.name)\n }\n }\n}\n"]}
|
|
@@ -13,7 +13,7 @@ export declare class PermissionController {
|
|
|
13
13
|
* @returns Un array di ruoli con menù associati.
|
|
14
14
|
*/
|
|
15
15
|
getRoles(res: Response): Promise<void>;
|
|
16
|
-
updateRole(codiceRuolo:
|
|
16
|
+
updateRole(codiceRuolo: number, role: Role, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
17
17
|
createRole(res: Response, role: Role): Promise<Response<any, Record<string, any>>>;
|
|
18
18
|
assignRolesToUser(res: Response, codiceUtente: number, assignRolesRequest: AssignRolesToUserRequest): Promise<Response<any, Record<string, any>>>;
|
|
19
19
|
assignPermissionsToUser(res: Response, codiceUtente: number, assignPermissionsRequest: AssignPermissionsToUserRequest): Promise<Response<any, Record<string, any>>>;
|
|
@@ -71,7 +71,7 @@ let PermissionController = PermissionController_1 = class PermissionController {
|
|
|
71
71
|
updateRole(codiceRuolo, role, res) {
|
|
72
72
|
return __awaiter(this, void 0, void 0, function* () {
|
|
73
73
|
try {
|
|
74
|
-
if (
|
|
74
|
+
if (Number.isNaN(codiceRuolo))
|
|
75
75
|
throw new Error("Il codice del ruolo è obbligatorio.");
|
|
76
76
|
if (!role.descrizioneRuolo)
|
|
77
77
|
throw new Error("La descrizione del ruolo non può essere vuota.");
|
|
@@ -137,7 +137,7 @@ let PermissionController = PermissionController_1 = class PermissionController {
|
|
|
137
137
|
deleteRole(codiceRuolo, res) {
|
|
138
138
|
return __awaiter(this, void 0, void 0, function* () {
|
|
139
139
|
try {
|
|
140
|
-
if (
|
|
140
|
+
if (Number.isNaN(codiceRuolo))
|
|
141
141
|
throw new Error("Il codice del ruolo è obbligatorio.");
|
|
142
142
|
yield this.permissionService.deleteRole(codiceRuolo);
|
|
143
143
|
return Utilities_1.RestUtilities.sendOKMessage(res, `Il ruolo ${codiceRuolo} è stato eliminato con successo.`);
|
|
@@ -203,7 +203,8 @@ __decorate([
|
|
|
203
203
|
name: 'codiceRuolo',
|
|
204
204
|
description: "Codice identificativo del ruolo da aggiornare",
|
|
205
205
|
required: true,
|
|
206
|
-
example:
|
|
206
|
+
example: 101,
|
|
207
|
+
type: Number
|
|
207
208
|
}),
|
|
208
209
|
(0, swagger_1.ApiBody)({
|
|
209
210
|
description: "Dati aggiornati del ruolo (escluso il codice ruolo, che è nel path)",
|
|
@@ -213,11 +214,11 @@ __decorate([
|
|
|
213
214
|
(0, swagger_1.ApiResponse)({ status: 400, description: "Errore di validazione nei dati inviati" }),
|
|
214
215
|
(0, swagger_1.ApiResponse)({ status: 500, description: "Errore interno del server" }),
|
|
215
216
|
(0, common_1.Put)('update-role/:codiceRuolo'),
|
|
216
|
-
__param(0, (0, common_1.Param)('codiceRuolo')),
|
|
217
|
+
__param(0, (0, common_1.Param)('codiceRuolo', common_1.ParseIntPipe)),
|
|
217
218
|
__param(1, (0, common_1.Body)()),
|
|
218
219
|
__param(2, (0, common_1.Res)()),
|
|
219
220
|
__metadata("design:type", Function),
|
|
220
|
-
__metadata("design:paramtypes", [
|
|
221
|
+
__metadata("design:paramtypes", [Number, Role_1.Role, Object]),
|
|
221
222
|
__metadata("design:returntype", Promise)
|
|
222
223
|
], PermissionController.prototype, "updateRole", null);
|
|
223
224
|
__decorate([
|
|
@@ -243,7 +244,7 @@ __decorate([
|
|
|
243
244
|
name: 'codiceUtente',
|
|
244
245
|
description: 'Codice identificativo dell\'utente a cui assegnare i ruoli',
|
|
245
246
|
required: true,
|
|
246
|
-
example:
|
|
247
|
+
example: 22
|
|
247
248
|
}),
|
|
248
249
|
(0, swagger_1.ApiBody)({
|
|
249
250
|
type: AssignRolesToUserRequest_1.AssignRolesToUserRequest,
|
|
@@ -289,13 +290,14 @@ __decorate([
|
|
|
289
290
|
name: 'codiceRuolo',
|
|
290
291
|
description: "Codice identificativo del ruolo da eliminare",
|
|
291
292
|
required: true,
|
|
292
|
-
example: 382
|
|
293
|
+
example: 382,
|
|
294
|
+
type: Number
|
|
293
295
|
}),
|
|
294
296
|
(0, swagger_1.ApiResponse)({ status: 200, description: "Ruolo eliminato con successo" }),
|
|
295
297
|
(0, swagger_1.ApiResponse)({ status: 400, description: "Errore nei parametri della richiesta" }),
|
|
296
298
|
(0, swagger_1.ApiResponse)({ status: 500, description: "Errore interno del server" }),
|
|
297
299
|
(0, common_1.Delete)('delete-role/:codiceRuolo'),
|
|
298
|
-
__param(0, (0, common_1.Param)('codiceRuolo')),
|
|
300
|
+
__param(0, (0, common_1.Param)('codiceRuolo', common_1.ParseIntPipe)),
|
|
299
301
|
__param(1, (0, common_1.Res)()),
|
|
300
302
|
__metadata("design:type", Function),
|
|
301
303
|
__metadata("design:paramtypes", [Number, Object]),
|
|
@@ -348,3 +350,4 @@ exports.PermissionController = PermissionController = PermissionController_1 = _
|
|
|
348
350
|
__param(1, (0, common_1.Inject)('ACCESSI_OPTIONS')),
|
|
349
351
|
__metadata("design:paramtypes", [PermissionService_1.PermissionService, Object])
|
|
350
352
|
], PermissionController);
|
|
353
|
+
//# sourceMappingURL=PermissionController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PermissionController.js","sourceRoot":"","sources":["../../../src/accessi-module/Controllers/PermissionController.ts"],"names":[],"mappings":"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","sourcesContent":["import { Body, Controller, Delete, Get, HttpStatus, Inject, Param, ParseIntPipe, Post, Put, Query, Res } from '@nestjs/common';\nimport { ApiBody, ApiInternalServerErrorResponse, ApiOkResponse, ApiOperation, ApiParam, ApiQuery, ApiResponse, ApiTags } from '@nestjs/swagger';\nimport { Response } from 'express';\nimport { RestUtilities } from '../../Utilities';\nimport { AccessiOptions } from '../AccessiModule';\nimport { PermissionService } from '../Services/PermissionService/PermissionService';\nimport { Role } from '../Dtos/Role';\nimport { AssignRolesToUserRequest } from '../Dtos/AssignRolesToUserRequest';\nimport { AssignPermissionsToUserRequest } from '../Dtos/AssignPermissionsToUserRequest';\nimport { BaseResponse } from '../Dtos';\nimport { GetMenusResponse, MenuEntity } from '../Dtos/GetMenusResponse';\nimport { GetRolesResponse } from '../Dtos/GetRolesResponse';\nimport { UserGrantsDto } from '../Dtos/UserGrantsDto';\nimport { GetGroupsWithMenusResponse } from '../Dtos/GetGroupsWithMenusResponse';\n\n\n@ApiTags('Permission')\n@Controller('accessi/permission')\nexport class PermissionController {\n constructor(\n private readonly permissionService: PermissionService,\n @Inject('ACCESSI_OPTIONS') private readonly options: AccessiOptions\n ) { }\n\n /*\n @ApiOperation({ summary: 'Resetta le abilitazioni di un utente', operationId: \"resetAbilitazioni\" })\n @Post('reset-abilitazioni')\n async resetAbilitazioni(@Body('codiceUtente') codiceUtente: number, @Res() res: Response) {\n try {\n await this.permissionService.resetAbilitazioni(codiceUtente);\n RestUtilities.sendOKMessage(res, `Le abilitazioni dell'utente ${codiceUtente} sono state resettate con successo.`);\n } catch (error) {\n RestUtilities.sendErrorMessage(res, error, PermissionController.name);\n throw error;\n }\n }\n */\n\n\n /**\n * @description Endpoint per ottenere tutti i ruoli con i relativi menù.\n * @returns Un array di ruoli con menù associati.\n */\n @ApiOperation({ summary: 'Ritorna i ruoli disponibili con i relativi menù', operationId: \"getRoles\", description: 'Recupera tutti i ruoli presenti nel sistema con le relative voci di menu accessibili.' })\n @ApiOkResponse({ description: 'Elenco dei ruoli con i rispettivi menù', type: GetRolesResponse })\n @ApiInternalServerErrorResponse({ description: 'Errore interno del server' })\n @ApiResponse({ status: HttpStatus.OK, description: 'Lista dei ruoli con i menù restituita con successo.' })\n @ApiResponse({ status: HttpStatus.INTERNAL_SERVER_ERROR, description: 'Errore interno del server durante il recupero dei ruoli.' })\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 RestUtilities.sendErrorMessage(res, error, PermissionController.name);\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 (escluso il codice ruolo, che è nel path)\",\n type: Role\n })\n @ApiResponse({ status: 200, description: \"Il ruolo è stato aggiornato con successo\" })\n @ApiResponse({ status: 400, description: \"Errore di validazione nei dati inviati\" })\n @ApiResponse({ status: 500, description: \"Errore interno del server\" })\n @Put('update-role/:codiceRuolo')\n async updateRole(\n @Param('codiceRuolo', ParseIntPipe) codiceRuolo: number,\n @Body() role: Role,\n @Res() res: Response\n ) {\n try {\n if (Number.isNaN(codiceRuolo)) throw new Error(\"Il codice del ruolo è obbligatorio.\");\n if (!role.descrizioneRuolo) throw new Error(\"La descrizione del ruolo non può essere vuota.\");\n if (!role.menu || role.menu.length === 0) throw new Error(\"Il ruolo deve avere almeno un menù.\");\n\n await this.permissionService.updateOrInsertRole(role, codiceRuolo);\n return RestUtilities.sendOKMessage(res, `Il ruolo ${codiceRuolo} è stato aggiornato con successo.`);\n } catch (error) {\n return RestUtilities.sendErrorMessage(res, error, PermissionController.name);\n }\n }\n\n @ApiOperation({ summary: 'Crea un nuovo ruolo', operationId: \"createRole\" })\n @ApiResponse({ status: 201, description: 'Il ruolo è stato creato con successo' })\n @ApiResponse({ status: 400, description: 'Errore di validazione nei dati inviati' })\n @ApiResponse({ status: 500, description: 'Errore interno del server' })\n @ApiBody({\n description: 'Dati del nuovo ruolo',\n required: true,\n type: Role\n })\n @Post('create-role')\n async createRole(@Res() res: Response, @Body() role: Role) {\n try {\n if (!role) throw new Error(\"Il ruolo non può essere vuoto.\");\n if (!role.descrizioneRuolo) throw new Error(\"La descrizione del ruolo non può essere vuota.\");\n if (!role.menu || role.menu.length === 0) throw new Error(\"Il ruolo deve avere almeno un menù.\");\n\n await this.permissionService.updateOrInsertRole(role);\n return RestUtilities.sendOKMessage(res, \"Il ruolo è stato creato con successo.\");\n } catch (error) {\n return RestUtilities.sendErrorMessage(res, error, PermissionController.name);\n }\n }\n\n\n @ApiOperation({ summary: 'Assegna più 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' })\n @ApiResponse({ status: 400, description: 'Errore di validazione nei dati inviati' })\n @ApiResponse({ status: 500, description: 'Errore interno del server' })\n @Post('assign-roles/:codiceUtente')\n async assignRolesToUser(\n @Res() res: Response,\n @Param('codiceUtente') codiceUtente: number,\n @Body() assignRolesRequest: AssignRolesToUserRequest\n ) {\n try {\n if (!codiceUtente) throw new Error(\"Il codice utente è obbligatorio.\");\n if (!assignRolesRequest.roles || assignRolesRequest.roles.length === 0) {\n throw new Error(\"È necessario fornire almeno un ruolo.\");\n }\n\n await this.permissionService.assignRolesToUser(codiceUtente, assignRolesRequest.roles);\n return RestUtilities.sendOKMessage(res, `I ruoli ${assignRolesRequest.roles.join(', ')} sono stati assegnati all'utente ${codiceUtente}.`);\n } catch (error) {\n return RestUtilities.sendErrorMessage(res, error, PermissionController.name);\n }\n }\n\n\n @ApiOperation({ summary: 'Assegna abilitazioni dirette a un utente', operationId: \"assignPermissionsToUser\" })\n @ApiParam({\n name: 'codiceUtente',\n description: 'Codice identificativo dell\\'utente a cui assegnare le abilitazioni',\n required: true,\n example: 'USR123'\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' })\n @ApiResponse({ status: 400, description: 'Errore di validazione nei dati inviati' })\n @ApiResponse({ status: 500, description: 'Errore interno del server' })\n @Post('assign-permissions/:codiceUtente')\n async assignPermissionsToUser(\n @Res() res: Response,\n @Param('codiceUtente') codiceUtente: number,\n @Body() assignPermissionsRequest: AssignPermissionsToUserRequest\n ) {\n try {\n if (!codiceUtente) throw new Error(\"Il codice utente è obbligatorio.\");\n if (!assignPermissionsRequest.permissions || assignPermissionsRequest.permissions.length === 0) {\n throw new Error(\"È necessario fornire almeno un'abilitazione.\");\n }\n\n await this.permissionService.assignPermissionsToUser(codiceUtente, assignPermissionsRequest.permissions);\n return RestUtilities.sendOKMessage(res, `Le abilitazioni sono state assegnate all'utente ${codiceUtente}.`);\n } catch (error) {\n return RestUtilities.sendErrorMessage(res, error, PermissionController.name);\n }\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\" })\n @ApiResponse({ status: 400, description: \"Errore nei parametri della richiesta\" })\n @ApiResponse({ status: 500, description: \"Errore interno del server\" })\n @Delete('delete-role/:codiceRuolo')\n async deleteRole(@Param('codiceRuolo', ParseIntPipe) codiceRuolo: number, @Res() res: Response) {\n try {\n if (Number.isNaN(codiceRuolo)) throw new Error(\"Il codice del ruolo è obbligatorio.\");\n\n await this.permissionService.deleteRole(codiceRuolo);\n return RestUtilities.sendOKMessage(res, `Il ruolo ${codiceRuolo} è stato eliminato con successo.`);\n } catch (error) {\n return RestUtilities.sendErrorMessage(res, error, PermissionController.name);\n }\n }\n\n\n @ApiOperation({ summary: 'Recupera tutti i menù disponibili', operationId: \"getMenus\" })\n @ApiOkResponse({ description: 'Elenco menù', type: GetMenusResponse })\n @ApiResponse({ status: 200, description: \"Lista dei menù recuperata con successo\" })\n @ApiResponse({ status: 500, description: \"Errore interno del server\" })\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 RestUtilities.sendErrorMessage(res, error, PermissionController.name);\n }\n }\n\n @ApiOperation({ summary: 'Recupera tutti i gruppi disponibili con i relativi menù', operationId: \"getGroupsWithMenus\" })\n @ApiOkResponse({ description: 'Elenco gruppi con relativi menù', type: GetGroupsWithMenusResponse })\n @ApiResponse({ status: 200, description: \"Lista dei menù recuperata con successo\" })\n @ApiResponse({ status: 500, description: \"Errore interno del server\" })\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 = 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 RestUtilities.sendErrorMessage(res, error, PermissionController.name);\n }\n }\n\n\n @ApiOperation({ summary: 'Recupera i ruoli e i menù di un utente', operationId: \"getUserRolesAndGrants\" })\n @ApiOkResponse({ description: 'Elenco menù', type: UserGrantsDto })\n @ApiResponse({ status: 200, description: \"Lista dei menù recuperata con successo\" })\n @ApiResponse({ status: 500, description: \"Errore interno del server\" })\n @Get('grants/:codiceUtente')\n async getUserRolesAndGrants(@Param('codiceUtente') codiceUtente: number, @Res() res: Response) {\n try {\n const menus = await this.permissionService.getUserRolesAndGrants(codiceUtente);\n return RestUtilities.sendBaseResponse(res, menus);\n } catch (error) {\n return RestUtilities.sendErrorMessage(res, error, PermissionController.name);\n }\n }\n\n}\n"]}
|