emilsoftware-utilities 1.6.1-dev.5 → 1.6.1-dev.6

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.
@@ -8,4 +8,5 @@ export declare class AbilitazioneMenu {
8
8
  icona?: string | null;
9
9
  tipo?: string | null;
10
10
  pagina?: string | null;
11
+ note?: string | null;
11
12
  }
@@ -89,4 +89,13 @@ __decorate([
89
89
  (0, class_validator_1.IsOptional)(),
90
90
  __metadata("design:type", String)
91
91
  ], AbilitazioneMenu.prototype, "pagina", void 0);
92
+ __decorate([
93
+ (0, swagger_1.ApiPropertyOptional)({
94
+ description: 'Nota informativa associata al menu',
95
+ example: 'Visibile solo dopo abilitazione'
96
+ }),
97
+ (0, class_validator_1.IsString)(),
98
+ (0, class_validator_1.IsOptional)(),
99
+ __metadata("design:type", String)
100
+ ], AbilitazioneMenu.prototype, "note", void 0);
92
101
  //# sourceMappingURL=AbilitazioneMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AbilitazioneMenu.js","sourceRoot":"","sources":["../../../src/accessi-module/Dtos/AbilitazioneMenu.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAAmE;AACnE,yDAAsD;AACtD,qDAAmF;AAEnF,MAAa,gBAAgB;CAkE5B;AAlED,4CAkEC;AAzDC;IAPC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,yBAAyB;QACtC,OAAO,EAAE,kBAAkB;KAC5B,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC;IACzD,IAAA,wBAAM,EAAC,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,kDAAkD,EAAE,CAAC;;oDAC5D;AAQnB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,sBAAsB;QACnC,IAAI,EAAE,mCAAgB;QACtB,OAAO,EAAE,mCAAgB,CAAC,SAAS;KACpC,CAAC;IACD,IAAA,wBAAM,EAAC,mCAAgB,EAAE,EAAE,OAAO,EAAE,uCAAuC,EAAE,CAAC;;0DAC3C;AAQpC;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,sBAAsB;QACnC,OAAO,EAAE,eAAe;KACzB,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC;;yDAC1C;AAQzB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,iDAAiD;QAC9D,OAAO,EAAE,iBAAiB;KAC3B,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,2CAA2C,EAAE,CAAC;;2DAC1C;AAQ3B;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,oDAAoD;QACjE,OAAO,EAAE,GAAG;KACb,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,kCAAkC,EAAE,CAAC;;sDACtC;AAQtB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,oCAAoC;QACjD,OAAO,EAAE,QAAQ;KAClB,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;+CACS;AAQtB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,cAAc;QAC3B,OAAO,EAAE,GAAG;KACb,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;8CACQ;AAQrB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,yCAAyC;QACtD,OAAO,EAAE,gBAAgB;KAC1B,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;gDACU","sourcesContent":["import { ApiProperty, ApiPropertyOptional } from \"@nestjs/swagger\";\nimport { TipoAbilitazione } from \"./TipoAbilitazione\";\nimport { IsEnum, IsNotEmpty, IsString, Length, IsOptional } from \"class-validator\";\n\nexport class AbilitazioneMenu {\n \n @ApiProperty({\n description: 'Codice univoco del menu',\n example: 'MNUELENCOCLIENTI'\n })\n @IsString()\n @IsNotEmpty({ message: \"Il codice menu è obbligatorio.\" })\n @Length(3, 20, { message: \"Il codice menu deve essere tra 3 e 20 caratteri.\" })\n codiceMenu: string;\n\n @ApiPropertyOptional({\n description: 'Tipo di abilitazione',\n enum: TipoAbilitazione,\n example: TipoAbilitazione.SCRITTURA\n })\n @IsEnum(TipoAbilitazione, { message: \"Il tipo di abilitazione non è valido.\" })\n tipoAbilitazione?: TipoAbilitazione;\n\n @ApiPropertyOptional({\n description: 'Descrizione del menu',\n example: 'Lista Clienti'\n })\n @IsString()\n @IsNotEmpty({ message: \"La descrizione del menu è obbligatoria.\" })\n descrizioneMenu?: string;\n\n @ApiPropertyOptional({\n description: 'Descrizione del gruppo a cui appartiene il menu',\n example: 'Amministrazione'\n })\n @IsString()\n @IsNotEmpty({ message: \"La descrizione del gruppo è obbligatoria.\" })\n descrizioneGruppo?: string;\n\n @ApiPropertyOptional({\n description: 'Codice univoco del gruppo a cui appartiene il menu',\n example: 'C'\n })\n @IsString()\n @IsNotEmpty({ message: \"Il codice gruppo è obbligatorio.\" })\n codiceGruppo?: string;\n\n @ApiPropertyOptional({\n description: 'Nome dell\\'icona associata al menu',\n example: 'people'\n })\n @IsString()\n @IsOptional()\n icona?: string | null;\n\n @ApiPropertyOptional({\n description: 'Tipo di menu',\n example: 'M'\n })\n @IsString()\n @IsOptional()\n tipo?: string | null;\n\n @ApiPropertyOptional({\n description: 'Percorso della pagina associata al menu',\n example: '/lista-clienti'\n })\n @IsString()\n @IsOptional()\n pagina?: string | null;\n}\n"]}
1
+ {"version":3,"file":"AbilitazioneMenu.js","sourceRoot":"","sources":["../../../src/accessi-module/Dtos/AbilitazioneMenu.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAAmE;AACnE,yDAAsD;AACtD,qDAAmF;AAEnF,MAAa,gBAAgB;CA0E5B;AA1ED,4CA0EC;AAjEC;IAPC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,yBAAyB;QACtC,OAAO,EAAE,kBAAkB;KAC5B,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC;IACzD,IAAA,wBAAM,EAAC,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,kDAAkD,EAAE,CAAC;;oDAC5D;AAQnB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,sBAAsB;QACnC,IAAI,EAAE,mCAAgB;QACtB,OAAO,EAAE,mCAAgB,CAAC,SAAS;KACpC,CAAC;IACD,IAAA,wBAAM,EAAC,mCAAgB,EAAE,EAAE,OAAO,EAAE,uCAAuC,EAAE,CAAC;;0DAC3C;AAQpC;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,sBAAsB;QACnC,OAAO,EAAE,eAAe;KACzB,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC;;yDAC1C;AAQzB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,iDAAiD;QAC9D,OAAO,EAAE,iBAAiB;KAC3B,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,2CAA2C,EAAE,CAAC;;2DAC1C;AAQ3B;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,oDAAoD;QACjE,OAAO,EAAE,GAAG;KACb,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,kCAAkC,EAAE,CAAC;;sDACtC;AAQtB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,oCAAoC;QACjD,OAAO,EAAE,QAAQ;KAClB,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;+CACS;AAQtB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,cAAc;QAC3B,OAAO,EAAE,GAAG;KACb,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;8CACQ;AAQrB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,yCAAyC;QACtD,OAAO,EAAE,gBAAgB;KAC1B,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;gDACU;AAQvB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,oCAAoC;QACjD,OAAO,EAAE,iCAAiC;KAC3C,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;8CACQ","sourcesContent":["import { ApiProperty, ApiPropertyOptional } from \"@nestjs/swagger\";\nimport { TipoAbilitazione } from \"./TipoAbilitazione\";\nimport { IsEnum, IsNotEmpty, IsString, Length, IsOptional } from \"class-validator\";\n\nexport class AbilitazioneMenu {\n \n @ApiProperty({\n description: 'Codice univoco del menu',\n example: 'MNUELENCOCLIENTI'\n })\n @IsString()\n @IsNotEmpty({ message: \"Il codice menu è obbligatorio.\" })\n @Length(3, 20, { message: \"Il codice menu deve essere tra 3 e 20 caratteri.\" })\n codiceMenu: string;\n\n @ApiPropertyOptional({\n description: 'Tipo di abilitazione',\n enum: TipoAbilitazione,\n example: TipoAbilitazione.SCRITTURA\n })\n @IsEnum(TipoAbilitazione, { message: \"Il tipo di abilitazione non è valido.\" })\n tipoAbilitazione?: TipoAbilitazione;\n\n @ApiPropertyOptional({\n description: 'Descrizione del menu',\n example: 'Lista Clienti'\n })\n @IsString()\n @IsNotEmpty({ message: \"La descrizione del menu è obbligatoria.\" })\n descrizioneMenu?: string;\n\n @ApiPropertyOptional({\n description: 'Descrizione del gruppo a cui appartiene il menu',\n example: 'Amministrazione'\n })\n @IsString()\n @IsNotEmpty({ message: \"La descrizione del gruppo è obbligatoria.\" })\n descrizioneGruppo?: string;\n\n @ApiPropertyOptional({\n description: 'Codice univoco del gruppo a cui appartiene il menu',\n example: 'C'\n })\n @IsString()\n @IsNotEmpty({ message: \"Il codice gruppo è obbligatorio.\" })\n codiceGruppo?: string;\n\n @ApiPropertyOptional({\n description: 'Nome dell\\'icona associata al menu',\n example: 'people'\n })\n @IsString()\n @IsOptional()\n icona?: string | null;\n\n @ApiPropertyOptional({\n description: 'Tipo di menu',\n example: 'M'\n })\n @IsString()\n @IsOptional()\n tipo?: string | null;\n\n @ApiPropertyOptional({\n description: 'Percorso della pagina associata al menu',\n example: '/lista-clienti'\n })\n @IsString()\n @IsOptional()\n pagina?: string | null;\n\n @ApiPropertyOptional({\n description: 'Nota informativa associata al menu',\n example: 'Visibile solo dopo abilitazione'\n })\n @IsString()\n @IsOptional()\n note?: string | null;\n}\n"]}
@@ -11,6 +11,7 @@ export declare class MenuEntity {
11
11
  ordineGruppo: number;
12
12
  enabled?: boolean;
13
13
  tipoAbilitazione?: number;
14
+ note?: string | null;
14
15
  }
15
16
  export declare class GetMenusResponse extends BaseResponse {
16
17
  Result: MenuEntity[];
@@ -110,6 +110,14 @@ __decorate([
110
110
  }),
111
111
  __metadata("design:type", Number)
112
112
  ], MenuEntity.prototype, "tipoAbilitazione", void 0);
113
+ __decorate([
114
+ (0, swagger_1.ApiPropertyOptional)({
115
+ description: "Nota informativa associata al menu.",
116
+ type: String,
117
+ example: "Visibile solo agli amministratori"
118
+ }),
119
+ __metadata("design:type", String)
120
+ ], MenuEntity.prototype, "note", void 0);
113
121
  class GetMenusResponse extends BaseResponse_1.BaseResponse {
114
122
  }
115
123
  exports.GetMenusResponse = GetMenusResponse;
@@ -1 +1 @@
1
- {"version":3,"file":"GetMenusResponse.js","sourceRoot":"","sources":["../../../src/accessi-module/Dtos/GetMenusResponse.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAAmE;AACnE,iDAA8C;AAC9C,qDAAiD;AACjD,yDAAyC;AAMzC,MAAa,UAAU;CAqFtB;AArFD,gCAqFC;AA9EG;IALC,IAAA,qBAAW,EAAC;QACT,WAAW,EAAE,0BAA0B;QACvC,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,QAAQ;KACpB,CAAC;;8CACiB;AAOnB;IALC,IAAA,qBAAW,EAAC;QACT,WAAW,EAAE,uBAAuB;QACpC,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,iBAAiB;KAC7B,CAAC;;mDACsB;AAQxB;IANC,IAAA,qBAAW,EAAC;QACT,WAAW,EAAE,6CAA6C;QAC1D,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,KAAK;KAClB,CAAC;;gDACoB;AAQtB;IANC,IAAA,qBAAW,EAAC;QACT,WAAW,EAAE,kDAAkD;QAC/D,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,kBAAkB;QAC3B,QAAQ,EAAE,KAAK;KAClB,CAAC;;qDACyB;AAQ3B;IANC,IAAA,qBAAW,EAAC;QACT,WAAW,EAAE,wCAAwC;QACrD,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,UAAU;QACnB,QAAQ,EAAE,KAAK;KAClB,CAAC;;yCACa;AAQf;IANC,IAAA,qBAAW,EAAC;QACT,WAAW,EAAE,eAAe;QAC5B,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,KAAK;KAClB,CAAC;;wCACY;AAQd;IANC,IAAA,qBAAW,EAAC;QACT,WAAW,EAAE,0CAA0C;QACvD,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,0BAA0B;QACnC,QAAQ,EAAE,KAAK;KAClB,CAAC;;0CACc;AAQhB;IALC,IAAA,qBAAW,EAAC;QACT,WAAW,EAAE,kBAAkB;QAC/B,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,CAAC;KACb,CAAC;;8CACiB;AAQnB;IALC,IAAA,qBAAW,EAAC;QACT,WAAW,EAAE,oBAAoB;QACjC,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,CAAC;KACb,CAAC;;gDACmB;AAOrB;IALC,IAAA,6BAAmB,EAAC;QACjB,WAAW,EAAE,yCAAyC;QACtD,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,IAAI;KAChB,CAAC;;2CACgB;AAOlB;IALC,IAAA,6BAAmB,EAAC;QACjB,WAAW,EAAE,6BAA6B;QAC1C,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,CAAC;KACb,CAAC;;oDACwB;AAG9B,MAAa,gBAAiB,SAAQ,2BAAY;CAKjD;AALD,4CAKC;AADG;IAHC,IAAA,qBAAW,EAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACnC,IAAA,gCAAc,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC9B,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,UAAU,CAAC;;gDACF","sourcesContent":["import { ApiProperty, ApiPropertyOptional } from \"@nestjs/swagger\";\nimport { BaseResponse } from \"./BaseResponse\";\nimport { ValidateNested } from \"class-validator\";\nimport { Type } from \"class-transformer\";\n\n\n\n\n\nexport class MenuEntity {\n\n @ApiProperty({\n description: \"Codice univoco del menù.\",\n type: String,\n example: \"MNU001\"\n })\n codiceMenu: string;\n\n @ApiProperty({\n description: \"Descrizione del menù.\",\n type: String,\n example: \"Gestione Utenti\"\n })\n descrizioneMenu: string;\n\n @ApiProperty({\n description: \"Codice del gruppo a cui appartiene il menù.\",\n type: String,\n example: \"GRP01\",\n required: false\n })\n codiceGruppo?: string;\n\n @ApiProperty({\n description: \"Descrizione del gruppo a cui appartiene il menù.\",\n type: String,\n example: \"Gestione Accessi\",\n required: false\n })\n descrizioneGruppo?: string;\n\n @ApiProperty({\n description: \"Percorso dell'icona associata al menù.\",\n type: String,\n example: \"fa-users\",\n required: false\n })\n icona?: string;\n\n @ApiProperty({\n description: \"Tipo di menù.\",\n type: String,\n example: \"admin\",\n required: false\n })\n tipo?: string;\n\n @ApiProperty({\n description: \"Percorso della pagina associata al menù.\",\n type: String,\n example: \"/accessi/gestione-utenti\",\n required: false\n })\n pagina?: string;\n\n\n @ApiProperty({\n description: \"Ordine del menu.\",\n type: Number,\n example: 1\n })\n ordineMenu: number;\n\n\n @ApiProperty({\n description: \"Ordine del gruppo.\",\n type: Number,\n example: 1\n })\n ordineGruppo: number;\n\n @ApiPropertyOptional({\n description: \"Flag che indica se il menu e abilitato.\",\n type: Boolean,\n example: true\n })\n enabled?: boolean;\n\n @ApiPropertyOptional({\n description: \"Tipo abilitazione opzionale\",\n type: Number,\n example: 1\n })\n tipoAbilitazione?: number;\n}\n\nexport class GetMenusResponse extends BaseResponse {\n @ApiProperty({ type: [MenuEntity] })\n @ValidateNested({ each: true })\n @Type(() => MenuEntity)\n Result: MenuEntity[];\n}\n"]}
1
+ {"version":3,"file":"GetMenusResponse.js","sourceRoot":"","sources":["../../../src/accessi-module/Dtos/GetMenusResponse.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAAmE;AACnE,iDAA8C;AAC9C,qDAAiD;AACjD,yDAAyC;AAMzC,MAAa,UAAU;CA4FtB;AA5FD,gCA4FC;AArFG;IALC,IAAA,qBAAW,EAAC;QACT,WAAW,EAAE,0BAA0B;QACvC,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,QAAQ;KACpB,CAAC;;8CACiB;AAOnB;IALC,IAAA,qBAAW,EAAC;QACT,WAAW,EAAE,uBAAuB;QACpC,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,iBAAiB;KAC7B,CAAC;;mDACsB;AAQxB;IANC,IAAA,qBAAW,EAAC;QACT,WAAW,EAAE,6CAA6C;QAC1D,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,KAAK;KAClB,CAAC;;gDACoB;AAQtB;IANC,IAAA,qBAAW,EAAC;QACT,WAAW,EAAE,kDAAkD;QAC/D,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,kBAAkB;QAC3B,QAAQ,EAAE,KAAK;KAClB,CAAC;;qDACyB;AAQ3B;IANC,IAAA,qBAAW,EAAC;QACT,WAAW,EAAE,wCAAwC;QACrD,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,UAAU;QACnB,QAAQ,EAAE,KAAK;KAClB,CAAC;;yCACa;AAQf;IANC,IAAA,qBAAW,EAAC;QACT,WAAW,EAAE,eAAe;QAC5B,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,KAAK;KAClB,CAAC;;wCACY;AAQd;IANC,IAAA,qBAAW,EAAC;QACT,WAAW,EAAE,0CAA0C;QACvD,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,0BAA0B;QACnC,QAAQ,EAAE,KAAK;KAClB,CAAC;;0CACc;AAQhB;IALC,IAAA,qBAAW,EAAC;QACT,WAAW,EAAE,kBAAkB;QAC/B,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,CAAC;KACb,CAAC;;8CACiB;AAQnB;IALC,IAAA,qBAAW,EAAC;QACT,WAAW,EAAE,oBAAoB;QACjC,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,CAAC;KACb,CAAC;;gDACmB;AAOrB;IALC,IAAA,6BAAmB,EAAC;QACjB,WAAW,EAAE,yCAAyC;QACtD,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,IAAI;KAChB,CAAC;;2CACgB;AAOlB;IALC,IAAA,6BAAmB,EAAC;QACjB,WAAW,EAAE,6BAA6B;QAC1C,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,CAAC;KACb,CAAC;;oDACwB;AAO1B;IALC,IAAA,6BAAmB,EAAC;QACjB,WAAW,EAAE,qCAAqC;QAClD,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,mCAAmC;KAC/C,CAAC;;wCACmB;AAGzB,MAAa,gBAAiB,SAAQ,2BAAY;CAKjD;AALD,4CAKC;AADG;IAHC,IAAA,qBAAW,EAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACnC,IAAA,gCAAc,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC9B,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,UAAU,CAAC;;gDACF","sourcesContent":["import { ApiProperty, ApiPropertyOptional } from \"@nestjs/swagger\";\nimport { BaseResponse } from \"./BaseResponse\";\nimport { ValidateNested } from \"class-validator\";\nimport { Type } from \"class-transformer\";\n\n\n\n\n\nexport class MenuEntity {\n\n @ApiProperty({\n description: \"Codice univoco del menù.\",\n type: String,\n example: \"MNU001\"\n })\n codiceMenu: string;\n\n @ApiProperty({\n description: \"Descrizione del menù.\",\n type: String,\n example: \"Gestione Utenti\"\n })\n descrizioneMenu: string;\n\n @ApiProperty({\n description: \"Codice del gruppo a cui appartiene il menù.\",\n type: String,\n example: \"GRP01\",\n required: false\n })\n codiceGruppo?: string;\n\n @ApiProperty({\n description: \"Descrizione del gruppo a cui appartiene il menù.\",\n type: String,\n example: \"Gestione Accessi\",\n required: false\n })\n descrizioneGruppo?: string;\n\n @ApiProperty({\n description: \"Percorso dell'icona associata al menù.\",\n type: String,\n example: \"fa-users\",\n required: false\n })\n icona?: string;\n\n @ApiProperty({\n description: \"Tipo di menù.\",\n type: String,\n example: \"admin\",\n required: false\n })\n tipo?: string;\n\n @ApiProperty({\n description: \"Percorso della pagina associata al menù.\",\n type: String,\n example: \"/accessi/gestione-utenti\",\n required: false\n })\n pagina?: string;\n\n\n @ApiProperty({\n description: \"Ordine del menu.\",\n type: Number,\n example: 1\n })\n ordineMenu: number;\n\n\n @ApiProperty({\n description: \"Ordine del gruppo.\",\n type: Number,\n example: 1\n })\n ordineGruppo: number;\n\n @ApiPropertyOptional({\n description: \"Flag che indica se il menu e abilitato.\",\n type: Boolean,\n example: true\n })\n enabled?: boolean;\n\n @ApiPropertyOptional({\n description: \"Tipo abilitazione opzionale\",\n type: Number,\n example: 1\n })\n tipoAbilitazione?: number;\n\n @ApiPropertyOptional({\n description: \"Nota informativa associata al menu.\",\n type: String,\n example: \"Visibile solo agli amministratori\"\n })\n note?: string | null;\n}\n\nexport class GetMenusResponse extends BaseResponse {\n @ApiProperty({ type: [MenuEntity] })\n @ValidateNested({ each: true })\n @Type(() => MenuEntity)\n Result: MenuEntity[];\n}\n"]}
@@ -103,6 +103,7 @@ let PermissionService = class PermissionService {
103
103
  R.DESRUO AS descrizione_ruolo,
104
104
  M.CODMNU AS codice_menu,
105
105
  M.DESMNU AS descrizione_menu,
106
+ M.NOTE AS note,
106
107
  RM.TIPABI AS tipo_abilitazione
107
108
  FROM RUOLI R
108
109
  LEFT JOIN RUOLI_MNU RM ON R.CODRUO = RM.CODRUO
@@ -191,7 +192,8 @@ let PermissionService = class PermissionService {
191
192
  G.DESGRP AS descrizioneGruppo,
192
193
  M.ICON AS icona,
193
194
  M.CODTIP AS tipo,
194
- M.PAGINA AS pagina
195
+ M.PAGINA AS pagina,
196
+ M.NOTE AS note
195
197
  FROM MENU M
196
198
  LEFT JOIN MENU_GRP G ON M.CODGRP = G.CODGRP
197
199
  WHERE M.FLGENABLED = 1
@@ -215,6 +217,7 @@ let PermissionService = class PermissionService {
215
217
  M.ICON AS icona,
216
218
  M.CODTIP AS tipo,
217
219
  M.PAGINA AS pagina,
220
+ M.NOTE AS note,
218
221
  G.ORDINE AS ordine_gruppo,
219
222
  M.ORDINE as ordine_menu,
220
223
  M.FLGENABLED AS menu_enabled,
@@ -275,7 +278,8 @@ let PermissionService = class PermissionService {
275
278
  G.CODGRP AS codice_gruppo,
276
279
  M.ICON AS icona,
277
280
  M.CODTIP AS tipo,
278
- M.PAGINA AS pagina
281
+ M.PAGINA AS pagina,
282
+ M.NOTE AS note
279
283
  FROM MENU M
280
284
  INNER JOIN MENU_GRP G ON G.CODGRP = M.CODGRP
281
285
  WHERE M.FLGENABLED = 1 AND G.FLGENABLED = 1
@@ -293,7 +297,8 @@ let PermissionService = class PermissionService {
293
297
  G.CODGRP AS codice_gruppo,
294
298
  M.ICON AS icona,
295
299
  M.CODTIP AS tipo,
296
- M.PAGINA AS pagina
300
+ M.PAGINA AS pagina,
301
+ M.NOTE AS note
297
302
  FROM ABILITAZIONI A
298
303
  INNER JOIN MENU M ON A.CODMNU = M.CODMNU
299
304
  INNER JOIN MENU_GRP G ON G.CODGRP = M.CODGRP
@@ -307,7 +312,8 @@ let PermissionService = class PermissionService {
307
312
  R.DESRUO AS descrizione_ruolo,
308
313
  RM.CODMNU AS codice_menu,
309
314
  RM.TIPABI AS tipo_abilitazione,
310
- M.DESMNU AS descrizione_menu
315
+ M.DESMNU AS descrizione_menu,
316
+ M.NOTE AS note
311
317
  FROM UTENTI_RUOLI RU
312
318
  INNER JOIN RUOLI R ON RU.CODRUO = R.CODRUO
313
319
  INNER JOIN RUOLI_MNU RM ON R.CODRUO = RM.CODRUO
@@ -1 +1 @@
1
- {"version":3,"file":"PermissionService.js","sourceRoot":"","sources":["../../../../src/accessi-module/Services/PermissionService/PermissionService.ts"],"names":[],"mappings":"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","sourcesContent":["\nimport { Orm } from \"../../../Orm\";\nimport { RestUtilities } from \"../../../Utilities\";\nimport { AccessiOptions } from \"../../AccessiModule\";\nimport { Permission, TipoAbilitazione } from \"../../Dtos\";\nimport { AbilitazioneMenu } from \"../../Dtos/AbilitazioneMenu\";\nimport { GroupWithMenusEntity } from \"../../Dtos/GetGroupsWithMenusResponse\";\nimport { MenuEntity } from \"../../Dtos/GetMenusResponse\";\nimport { Role } from \"../../Dtos/Role\";\nimport { Inject, Injectable } from \"@nestjs/common\";\n\n@Injectable()\nexport class PermissionService {\n constructor(\n @Inject('ACCESSI_OPTIONS') private readonly accessiOptions: AccessiOptions\n ) { }\n\n\n public async addAbilitazioni(codiceUtente: number, menuAbilitazioni: any[]): Promise<void> {\n const deleteQuery = `DELETE FROM ABILITAZIONI WHERE CODUTE = ?`;\n await Orm.execute(this.accessiOptions.databaseOptions, deleteQuery, [codiceUtente]);\n\n const abilitazioniToInsert = menuAbilitazioni\n .flatMap(menuGrp => menuGrp.menu)\n .filter(menu => menu.flgChk)\n .map(menu => [codiceUtente, menu.codiceMenu, menu.tipoAbilitazione]);\n\n const insertQuery = `UPDATE OR INSERT INTO ABILITAZIONI (CODUTE, CODMNU, TIPABI) VALUES (?, ?, ?)`;\n\n for (const params of abilitazioniToInsert) {\n await Orm.execute(this.accessiOptions.databaseOptions, insertQuery, params);\n }\n }\n\n\n public async resetAbilitazioni(codiceUtente: number): Promise<void> {\n const query = \"DELETE FROM ABILITAZIONI WHERE CODUTE = ?\";\n await Orm.execute(this.accessiOptions.databaseOptions, query, [codiceUtente]);\n }\n\n public async updateOrInsertRole(role: Role, codiceRuolo: number | null = null): Promise<void> {\n\n // creazione nuovo ruolo\n if (codiceRuolo == null) {\n const createRoleQuery = `INSERT INTO RUOLI (DESRUO) VALUES (?)`;\n await Orm.execute(this.accessiOptions.databaseOptions, createRoleQuery, [role.descrizioneRuolo]);\n\n const createdRoleResult = await Orm.query(\n this.accessiOptions.databaseOptions,\n 'SELECT FIRST 1 CODRUO FROM RUOLI WHERE DESRUO = ? ORDER BY CODRUO DESC',\n [role.descrizioneRuolo]\n );\n const rawCodiceRuolo = createdRoleResult?.[0]?.CODRUO ?? createdRoleResult?.[0]?.codruo;\n const parsedCodiceRuolo = typeof rawCodiceRuolo === 'number'\n ? rawCodiceRuolo\n : Number.parseInt(`${rawCodiceRuolo ?? ''}`, 10);\n if (Number.isNaN(parsedCodiceRuolo)) {\n throw new Error('Creazione ruolo non riuscita: impossibile recuperare CODRUO.');\n }\n codiceRuolo = parsedCodiceRuolo;\n } else\n // aggiornamento ruolo esistente\n {\n\n let updateRoleQuery = `UPDATE RUOLI SET DESRUO = ? WHERE CODRUO = ?`;\n await Orm.query(this.accessiOptions.databaseOptions, updateRoleQuery, [role.descrizioneRuolo, codiceRuolo]);\n\n let deleteRoleMenuQuery = `DELETE FROM RUOLI_MNU WHERE CODRUO = ?`;\n await Orm.query(this.accessiOptions.databaseOptions, deleteRoleMenuQuery, [codiceRuolo]);\n }\n\n if (codiceRuolo === null) {\n throw new Error('Operazione ruolo non riuscita: codice ruolo non valorizzato.');\n }\n\n let createRoleMenuQuery = `INSERT INTO RUOLI_MNU (CODRUO, CODMNU, TIPABI) VALUES (?, ?, ?)`;\n for (let menu of role.menu) {\n await Orm.query(this.accessiOptions.databaseOptions, createRoleMenuQuery, [codiceRuolo, menu.codiceMenu, menu.tipoAbilitazione]);\n }\n\n }\n\n\n public async getRolesWithMenus(): Promise<Role[]> {\n const query = `\n SELECT \n R.CODRUO AS codice_ruolo, \n R.DESRUO AS descrizione_ruolo, \n M.CODMNU AS codice_menu, \n M.DESMNU AS descrizione_menu,\n RM.TIPABI AS tipo_abilitazione\n FROM RUOLI R\n LEFT JOIN RUOLI_MNU RM ON R.CODRUO = RM.CODRUO\n LEFT JOIN MENU M ON RM.CODMNU = M.CODMNU\n ORDER BY R.CODRUO, M.CODMNU\n `;\n\n let result = await Orm.query(this.accessiOptions.databaseOptions, query, []);\n result = result.map(RestUtilities.convertKeysToCamelCase);\n\n const ruoliMap = new Map<number, Role>();\n\n for (const row of result) {\n const { codiceRuolo, descrizioneRuolo, codiceMenu, descrizioneMenu, tipoAbilitazione } = row;\n\n if (!ruoliMap.has(codiceRuolo)) {\n ruoliMap.set(codiceRuolo, {\n codiceRuolo,\n descrizioneRuolo: descrizioneRuolo?.trim(),\n menu: []\n });\n }\n\n const abilitationValue = typeof tipoAbilitazione === 'number'\n ? tipoAbilitazione\n : Number.parseInt(`${tipoAbilitazione ?? ''}`, 10);\n\n if (!codiceMenu || Number.isNaN(abilitationValue) || abilitationValue <= TipoAbilitazione.NESSUNA) {\n continue;\n }\n\n ruoliMap.get(codiceRuolo)!.menu.push({\n codiceRuolo: codiceRuolo,\n codiceMenu: codiceMenu.trim(),\n tipoAbilitazione: abilitationValue as TipoAbilitazione,\n });\n }\n\n return Array.from(ruoliMap.values());\n }\n\n\n public async assignRolesToUser(codiceUtente: number, roles: number[]): Promise<void> {\n\n const userExistsQuery = `SELECT COUNT(*) FROM UTENTI WHERE CODUTE = ?`;\n let result = await Orm.query(this.accessiOptions.databaseOptions, userExistsQuery, [codiceUtente]);\n\n if (result[0].COUNT === 0) {\n throw new Error(`L'utente con codice ${codiceUtente} non esiste.`);\n }\n\n const deleteQuery = `DELETE FROM UTENTI_RUOLI WHERE CODUTE = ?`;\n await Orm.query(this.accessiOptions.databaseOptions, deleteQuery, [codiceUtente]);\n\n const insertQuery = `INSERT INTO UTENTI_RUOLI (CODUTE, CODRUO) VALUES (?, ?)`;\n\n for (const codiceRuolo of roles) {\n await Orm.query(this.accessiOptions.databaseOptions, insertQuery, [codiceUtente, codiceRuolo]);\n }\n }\n\n\n public async assignPermissionsToUser(codiceUtente: number, permissions: Permission[]): Promise<void> {\n\n const userExistsQuery = `SELECT COUNT(*) FROM UTENTI WHERE CODUTE = ?`;\n let result = await Orm.query(this.accessiOptions.databaseOptions, userExistsQuery, [codiceUtente]);\n\n if (result[0].COUNT === 0) {\n throw new Error(`L'utente con codice ${codiceUtente} non esiste.`);\n }\n\n const deleteQuery = `DELETE FROM ABILITAZIONI WHERE CODUTE = ?`;\n await Orm.execute(this.accessiOptions.databaseOptions, deleteQuery, [codiceUtente]);\n\n const insertQuery = `INSERT INTO ABILITAZIONI (CODUTE, CODMNU, TIPABI) VALUES (?, ?, ?)`;\n\n for (const permission of permissions) {\n await Orm.execute(this.accessiOptions.databaseOptions, insertQuery, [codiceUtente, permission.codiceMenu, permission.tipoAbilitazione]);\n }\n }\n\n\n public async deleteRole(codiceRuolo: number): Promise<void> {\n\n const existsQuery = `SELECT COUNT(*) FROM RUOLI WHERE CODRUO = ?`;\n let result = await Orm.query(this.accessiOptions.databaseOptions, existsQuery, [codiceRuolo]);\n\n if (result[0].COUNT === 0) {\n throw new Error(`Il ruolo con codice ${codiceRuolo} non esiste.`);\n }\n\n const deleteRoleMenusQuery = `DELETE FROM RUOLI_MNU WHERE CODRUO = ?`;\n await Orm.query(this.accessiOptions.databaseOptions, deleteRoleMenusQuery, [codiceRuolo]);\n\n const deleteRoleUsersQuery = `DELETE FROM UTENTI_RUOLI WHERE CODRUO = ?`;\n await Orm.query(this.accessiOptions.databaseOptions, deleteRoleUsersQuery, [codiceRuolo]);\n\n const deleteRoleQuery = `DELETE FROM RUOLI WHERE CODRUO = ?`;\n await Orm.query(this.accessiOptions.databaseOptions, deleteRoleQuery, [codiceRuolo]);\n\n }\n\n\n public async getMenus(): Promise<MenuEntity[]> {\n const query = `\n SELECT \n M.CODMNU AS codiceMenu, \n M.DESMNU AS descrizioneMenu,\n M.CODGRP AS codiceGruppo,\n G.DESGRP AS descrizioneGruppo,\n M.ICON AS icona,\n M.CODTIP AS tipo,\n M.PAGINA AS pagina\n FROM MENU M\n LEFT JOIN MENU_GRP G ON M.CODGRP = G.CODGRP\n WHERE M.FLGENABLED = 1\n ORDER BY G.CODGRP, M.CODMNU\n `;\n\n const result = await Orm.query(this.accessiOptions.databaseOptions, query, []);\n return result.map(RestUtilities.convertKeysToCamelCase);\n }\n\n\n public async getGroupsWithMenus(includeDisabled = false): Promise<GroupWithMenusEntity[]> {\n const filtersClause = includeDisabled\n ? ''\n : 'WHERE M.FLGENABLED = 1 AND (G.FLGENABLED IS NULL OR G.FLGENABLED = 1)';\n\n const query = `\n SELECT\n M.CODMNU AS codice_menu,\n M.DESMNU AS descrizione_menu,\n M.CODGRP AS codice_gruppo,\n G.DESGRP AS descrizione_gruppo,\n M.ICON AS icona,\n M.CODTIP AS tipo,\n M.PAGINA AS pagina,\n G.ORDINE AS ordine_gruppo,\n M.ORDINE as ordine_menu,\n M.FLGENABLED AS menu_enabled,\n G.FLGENABLED AS group_enabled\n FROM MENU M\n LEFT JOIN MENU_GRP G ON M.CODGRP = G.CODGRP\n ${filtersClause}\n ORDER BY G.CODGRP, M.CODMNU\n `;\n\n const result = await Orm.query(this.accessiOptions.databaseOptions, query, []);\n\n const groupMap = new Map<\n string,\n GroupWithMenusEntity & { menus: (MenuEntity & { enabled?: boolean })[] }\n >();\n\n result.forEach(row => {\n const converted = RestUtilities.convertKeysToCamelCase(row) as MenuEntity & {\n menuEnabled?: number | boolean;\n groupEnabled?: number | boolean;\n };\n\n const { menuEnabled, groupEnabled, ...menuBase } = converted as any;\n const normalizedGroupKey = menuBase.codiceGruppo ?? '__UNGROUPED__';\n const groupEnabledFlag =\n groupEnabled === undefined ? true : Number(groupEnabled) === 1 || groupEnabled === true;\n const menuEnabledFlag =\n menuEnabled === undefined ? true : Number(menuEnabled) === 1 || menuEnabled === true;\n\n if (!groupMap.has(normalizedGroupKey)) {\n groupMap.set(normalizedGroupKey, {\n codiceGruppo: menuBase.codiceGruppo ?? normalizedGroupKey,\n descrizioneGruppo: menuBase.descrizioneGruppo,\n ordineGruppo: menuBase.ordineGruppo,\n enabled: groupEnabledFlag,\n menus: [],\n });\n }\n\n if (menuBase.codiceMenu) {\n groupMap.get(normalizedGroupKey)!.menus.push({\n ...menuBase,\n enabled: menuEnabledFlag,\n });\n }\n });\n\n const groupsArray = Array.from(groupMap.values())\n .map(group => ({\n ...group,\n menus: (group.menus ?? []).sort(\n (a, b) =>\n (a.ordineMenu ?? Number.MAX_SAFE_INTEGER) - (b.ordineMenu ?? Number.MAX_SAFE_INTEGER),\n ),\n }))\n .sort(\n (a, b) =>\n (a.ordineGruppo ?? Number.MAX_SAFE_INTEGER) - (b.ordineGruppo ?? Number.MAX_SAFE_INTEGER),\n );\n\n return groupsArray;\n }\n\n\n\n public async getUserRolesAndGrants(codiceUtente: number): Promise<{\n abilitazioni: AbilitazioneMenu[],\n ruoli: Role[],\n grants: AbilitazioneMenu[]\n }> {\n const codiceUtenteQuery = \"SELECT FLGSUPER as flag_super FROM UTENTI_CONFIG WHERE CODUTE = ?\";\n let result = await Orm.query(this.accessiOptions.databaseOptions, codiceUtenteQuery, [codiceUtente]);\n if (!result || result.length == 0) throw new Error(\"Nessun utente trovato con il codice utente \" + codiceUtente);\n\n result = result.map(RestUtilities.convertKeysToCamelCase) as { flagSuper: boolean }[];\n const isSuperAdmin = result[0].flagSuper;\n\n let abilitazioni: AbilitazioneMenu[] = [];\n let ruoli: Role[] = [];\n\n if (isSuperAdmin) {\n const query = `\n SELECT\n M.CODMNU AS codice_menu,\n 30 AS tipo_abilitazione,\n M.DESMNU AS descrizione_menu,\n G.DESGRP AS descrizione_gruppo,\n G.CODGRP AS codice_gruppo,\n M.ICON AS icona,\n M.CODTIP AS tipo,\n M.PAGINA AS pagina\n FROM MENU M\n INNER JOIN MENU_GRP G ON G.CODGRP = M.CODGRP\n WHERE M.FLGENABLED = 1 AND G.FLGENABLED = 1\n `;\n abilitazioni = await Orm.query(this.accessiOptions.databaseOptions, query, [])\n .then(results => results.map(RestUtilities.convertKeysToCamelCase)) as AbilitazioneMenu[];\n } else {\n const queryAbilitazioni = `\n SELECT\n A.CODMNU AS codice_menu,\n A.TIPABI AS tipo_abilitazione,\n M.DESMNU AS descrizione_menu,\n G.DESGRP AS descrizione_gruppo,\n G.CODGRP AS codice_gruppo,\n M.ICON AS icona,\n M.CODTIP AS tipo,\n M.PAGINA AS pagina\n FROM ABILITAZIONI A\n INNER JOIN MENU M ON A.CODMNU = M.CODMNU\n INNER JOIN MENU_GRP G ON G.CODGRP = M.CODGRP\n WHERE A.CODUTE = ? AND M.FLGENABLED = 1 AND G.FLGENABLED = 1\n `;\n abilitazioni = await Orm.query(this.accessiOptions.databaseOptions, queryAbilitazioni, [codiceUtente])\n .then(results => results.map(RestUtilities.convertKeysToCamelCase)) as AbilitazioneMenu[];\n\n const queryRuoli = `\n SELECT\n R.CODRUO AS codice_ruolo,\n R.DESRUO AS descrizione_ruolo,\n RM.CODMNU AS codice_menu,\n RM.TIPABI AS tipo_abilitazione,\n M.DESMNU AS descrizione_menu\n FROM UTENTI_RUOLI RU\n INNER JOIN RUOLI R ON RU.CODRUO = R.CODRUO\n INNER JOIN RUOLI_MNU RM ON R.CODRUO = RM.CODRUO\n INNER JOIN MENU M ON RM.CODMNU = M.CODMNU\n INNER JOIN MENU_GRP G ON G.CODGRP = M.CODGRP\n WHERE RU.CODUTE = ? AND M.FLGENABLED = 1 AND G.FLGENABLED = 1\n `;\n let ruoliResult = await Orm.query(this.accessiOptions.databaseOptions, queryRuoli, [codiceUtente]);\n ruoliResult = ruoliResult.map(RestUtilities.convertKeysToCamelCase);\n\n const ruoliMap = new Map<number, Role>();\n for (const row of ruoliResult) {\n const { codiceRuolo, descrizioneRuolo, codiceMenu, descrizioneMenu, tipoAbilitazione } = row;\n\n if (!ruoliMap.has(codiceRuolo)) {\n ruoliMap.set(codiceRuolo, {\n codiceRuolo,\n descrizioneRuolo: descrizioneRuolo?.trim(),\n menu: []\n });\n }\n\n if (codiceMenu) {\n ruoliMap.get(codiceRuolo)!.menu.push({\n codiceRuolo: codiceRuolo,\n codiceMenu: codiceMenu.trim(),\n tipoAbilitazione,\n });\n }\n }\n\n ruoli = Array.from(ruoliMap.values());\n }\n\n // Merge user-specific and role-based permissions\n const grantsMap = new Map<string, AbilitazioneMenu>();\n\n // Add user-specific permissions\n for (const abilitazione of abilitazioni) {\n grantsMap.set(abilitazione.codiceMenu, abilitazione);\n }\n\n // Add role-based permissions if not already present\n for (const ruolo of ruoli) {\n for (const menu of ruolo.menu) {\n if (!grantsMap.has(menu.codiceMenu)) {\n grantsMap.set(menu.codiceMenu, menu);\n }\n }\n }\n\n const grants = Array.from(grantsMap.values());\n\n return { abilitazioni, ruoli, grants };\n }\n\n\n\n}\n\n\n"]}
1
+ {"version":3,"file":"PermissionService.js","sourceRoot":"","sources":["../../../../src/accessi-module/Services/PermissionService/PermissionService.ts"],"names":[],"mappings":"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","sourcesContent":["\nimport { Orm } from \"../../../Orm\";\nimport { RestUtilities } from \"../../../Utilities\";\nimport { AccessiOptions } from \"../../AccessiModule\";\nimport { Permission, TipoAbilitazione } from \"../../Dtos\";\nimport { AbilitazioneMenu } from \"../../Dtos/AbilitazioneMenu\";\nimport { GroupWithMenusEntity } from \"../../Dtos/GetGroupsWithMenusResponse\";\nimport { MenuEntity } from \"../../Dtos/GetMenusResponse\";\nimport { Role } from \"../../Dtos/Role\";\nimport { Inject, Injectable } from \"@nestjs/common\";\n\n@Injectable()\nexport class PermissionService {\n constructor(\n @Inject('ACCESSI_OPTIONS') private readonly accessiOptions: AccessiOptions\n ) { }\n\n\n public async addAbilitazioni(codiceUtente: number, menuAbilitazioni: any[]): Promise<void> {\n const deleteQuery = `DELETE FROM ABILITAZIONI WHERE CODUTE = ?`;\n await Orm.execute(this.accessiOptions.databaseOptions, deleteQuery, [codiceUtente]);\n\n const abilitazioniToInsert = menuAbilitazioni\n .flatMap(menuGrp => menuGrp.menu)\n .filter(menu => menu.flgChk)\n .map(menu => [codiceUtente, menu.codiceMenu, menu.tipoAbilitazione]);\n\n const insertQuery = `UPDATE OR INSERT INTO ABILITAZIONI (CODUTE, CODMNU, TIPABI) VALUES (?, ?, ?)`;\n\n for (const params of abilitazioniToInsert) {\n await Orm.execute(this.accessiOptions.databaseOptions, insertQuery, params);\n }\n }\n\n\n public async resetAbilitazioni(codiceUtente: number): Promise<void> {\n const query = \"DELETE FROM ABILITAZIONI WHERE CODUTE = ?\";\n await Orm.execute(this.accessiOptions.databaseOptions, query, [codiceUtente]);\n }\n\n public async updateOrInsertRole(role: Role, codiceRuolo: number | null = null): Promise<void> {\n\n // creazione nuovo ruolo\n if (codiceRuolo == null) {\n const createRoleQuery = `INSERT INTO RUOLI (DESRUO) VALUES (?)`;\n await Orm.execute(this.accessiOptions.databaseOptions, createRoleQuery, [role.descrizioneRuolo]);\n\n const createdRoleResult = await Orm.query(\n this.accessiOptions.databaseOptions,\n 'SELECT FIRST 1 CODRUO FROM RUOLI WHERE DESRUO = ? ORDER BY CODRUO DESC',\n [role.descrizioneRuolo]\n );\n const rawCodiceRuolo = createdRoleResult?.[0]?.CODRUO ?? createdRoleResult?.[0]?.codruo;\n const parsedCodiceRuolo = typeof rawCodiceRuolo === 'number'\n ? rawCodiceRuolo\n : Number.parseInt(`${rawCodiceRuolo ?? ''}`, 10);\n if (Number.isNaN(parsedCodiceRuolo)) {\n throw new Error('Creazione ruolo non riuscita: impossibile recuperare CODRUO.');\n }\n codiceRuolo = parsedCodiceRuolo;\n } else\n // aggiornamento ruolo esistente\n {\n\n let updateRoleQuery = `UPDATE RUOLI SET DESRUO = ? WHERE CODRUO = ?`;\n await Orm.query(this.accessiOptions.databaseOptions, updateRoleQuery, [role.descrizioneRuolo, codiceRuolo]);\n\n let deleteRoleMenuQuery = `DELETE FROM RUOLI_MNU WHERE CODRUO = ?`;\n await Orm.query(this.accessiOptions.databaseOptions, deleteRoleMenuQuery, [codiceRuolo]);\n }\n\n if (codiceRuolo === null) {\n throw new Error('Operazione ruolo non riuscita: codice ruolo non valorizzato.');\n }\n\n let createRoleMenuQuery = `INSERT INTO RUOLI_MNU (CODRUO, CODMNU, TIPABI) VALUES (?, ?, ?)`;\n for (let menu of role.menu) {\n await Orm.query(this.accessiOptions.databaseOptions, createRoleMenuQuery, [codiceRuolo, menu.codiceMenu, menu.tipoAbilitazione]);\n }\n\n }\n\n\n public async getRolesWithMenus(): Promise<Role[]> {\n const query = `\n SELECT \n R.CODRUO AS codice_ruolo, \n R.DESRUO AS descrizione_ruolo, \n M.CODMNU AS codice_menu, \n M.DESMNU AS descrizione_menu,\n M.NOTE AS note,\n RM.TIPABI AS tipo_abilitazione\n FROM RUOLI R\n LEFT JOIN RUOLI_MNU RM ON R.CODRUO = RM.CODRUO\n LEFT JOIN MENU M ON RM.CODMNU = M.CODMNU\n ORDER BY R.CODRUO, M.CODMNU\n `;\n\n let result = await Orm.query(this.accessiOptions.databaseOptions, query, []);\n result = result.map(RestUtilities.convertKeysToCamelCase);\n\n const ruoliMap = new Map<number, Role>();\n\n for (const row of result) {\n const { codiceRuolo, descrizioneRuolo, codiceMenu, descrizioneMenu, tipoAbilitazione } = row;\n\n if (!ruoliMap.has(codiceRuolo)) {\n ruoliMap.set(codiceRuolo, {\n codiceRuolo,\n descrizioneRuolo: descrizioneRuolo?.trim(),\n menu: []\n });\n }\n\n const abilitationValue = typeof tipoAbilitazione === 'number'\n ? tipoAbilitazione\n : Number.parseInt(`${tipoAbilitazione ?? ''}`, 10);\n\n if (!codiceMenu || Number.isNaN(abilitationValue) || abilitationValue <= TipoAbilitazione.NESSUNA) {\n continue;\n }\n\n ruoliMap.get(codiceRuolo)!.menu.push({\n codiceRuolo: codiceRuolo,\n codiceMenu: codiceMenu.trim(),\n tipoAbilitazione: abilitationValue as TipoAbilitazione,\n });\n }\n\n return Array.from(ruoliMap.values());\n }\n\n\n public async assignRolesToUser(codiceUtente: number, roles: number[]): Promise<void> {\n\n const userExistsQuery = `SELECT COUNT(*) FROM UTENTI WHERE CODUTE = ?`;\n let result = await Orm.query(this.accessiOptions.databaseOptions, userExistsQuery, [codiceUtente]);\n\n if (result[0].COUNT === 0) {\n throw new Error(`L'utente con codice ${codiceUtente} non esiste.`);\n }\n\n const deleteQuery = `DELETE FROM UTENTI_RUOLI WHERE CODUTE = ?`;\n await Orm.query(this.accessiOptions.databaseOptions, deleteQuery, [codiceUtente]);\n\n const insertQuery = `INSERT INTO UTENTI_RUOLI (CODUTE, CODRUO) VALUES (?, ?)`;\n\n for (const codiceRuolo of roles) {\n await Orm.query(this.accessiOptions.databaseOptions, insertQuery, [codiceUtente, codiceRuolo]);\n }\n }\n\n\n public async assignPermissionsToUser(codiceUtente: number, permissions: Permission[]): Promise<void> {\n\n const userExistsQuery = `SELECT COUNT(*) FROM UTENTI WHERE CODUTE = ?`;\n let result = await Orm.query(this.accessiOptions.databaseOptions, userExistsQuery, [codiceUtente]);\n\n if (result[0].COUNT === 0) {\n throw new Error(`L'utente con codice ${codiceUtente} non esiste.`);\n }\n\n const deleteQuery = `DELETE FROM ABILITAZIONI WHERE CODUTE = ?`;\n await Orm.execute(this.accessiOptions.databaseOptions, deleteQuery, [codiceUtente]);\n\n const insertQuery = `INSERT INTO ABILITAZIONI (CODUTE, CODMNU, TIPABI) VALUES (?, ?, ?)`;\n\n for (const permission of permissions) {\n await Orm.execute(this.accessiOptions.databaseOptions, insertQuery, [codiceUtente, permission.codiceMenu, permission.tipoAbilitazione]);\n }\n }\n\n\n public async deleteRole(codiceRuolo: number): Promise<void> {\n\n const existsQuery = `SELECT COUNT(*) FROM RUOLI WHERE CODRUO = ?`;\n let result = await Orm.query(this.accessiOptions.databaseOptions, existsQuery, [codiceRuolo]);\n\n if (result[0].COUNT === 0) {\n throw new Error(`Il ruolo con codice ${codiceRuolo} non esiste.`);\n }\n\n const deleteRoleMenusQuery = `DELETE FROM RUOLI_MNU WHERE CODRUO = ?`;\n await Orm.query(this.accessiOptions.databaseOptions, deleteRoleMenusQuery, [codiceRuolo]);\n\n const deleteRoleUsersQuery = `DELETE FROM UTENTI_RUOLI WHERE CODRUO = ?`;\n await Orm.query(this.accessiOptions.databaseOptions, deleteRoleUsersQuery, [codiceRuolo]);\n\n const deleteRoleQuery = `DELETE FROM RUOLI WHERE CODRUO = ?`;\n await Orm.query(this.accessiOptions.databaseOptions, deleteRoleQuery, [codiceRuolo]);\n\n }\n\n\n public async getMenus(): Promise<MenuEntity[]> {\n const query = `\n SELECT \n M.CODMNU AS codiceMenu, \n M.DESMNU AS descrizioneMenu,\n M.CODGRP AS codiceGruppo,\n G.DESGRP AS descrizioneGruppo,\n M.ICON AS icona,\n M.CODTIP AS tipo,\n M.PAGINA AS pagina,\n M.NOTE AS note\n FROM MENU M\n LEFT JOIN MENU_GRP G ON M.CODGRP = G.CODGRP\n WHERE M.FLGENABLED = 1\n ORDER BY G.CODGRP, M.CODMNU\n `;\n\n const result = await Orm.query(this.accessiOptions.databaseOptions, query, []);\n return result.map(RestUtilities.convertKeysToCamelCase);\n }\n\n\n public async getGroupsWithMenus(includeDisabled = false): Promise<GroupWithMenusEntity[]> {\n const filtersClause = includeDisabled\n ? ''\n : 'WHERE M.FLGENABLED = 1 AND (G.FLGENABLED IS NULL OR G.FLGENABLED = 1)';\n\n const query = `\n SELECT\n M.CODMNU AS codice_menu,\n M.DESMNU AS descrizione_menu,\n M.CODGRP AS codice_gruppo,\n G.DESGRP AS descrizione_gruppo,\n M.ICON AS icona,\n M.CODTIP AS tipo,\n M.PAGINA AS pagina,\n M.NOTE AS note,\n G.ORDINE AS ordine_gruppo,\n M.ORDINE as ordine_menu,\n M.FLGENABLED AS menu_enabled,\n G.FLGENABLED AS group_enabled\n FROM MENU M\n LEFT JOIN MENU_GRP G ON M.CODGRP = G.CODGRP\n ${filtersClause}\n ORDER BY G.CODGRP, M.CODMNU\n `;\n\n const result = await Orm.query(this.accessiOptions.databaseOptions, query, []);\n\n const groupMap = new Map<\n string,\n GroupWithMenusEntity & { menus: (MenuEntity & { enabled?: boolean })[] }\n >();\n\n result.forEach(row => {\n const converted = RestUtilities.convertKeysToCamelCase(row) as MenuEntity & {\n menuEnabled?: number | boolean;\n groupEnabled?: number | boolean;\n };\n\n const { menuEnabled, groupEnabled, ...menuBase } = converted as any;\n const normalizedGroupKey = menuBase.codiceGruppo ?? '__UNGROUPED__';\n const groupEnabledFlag =\n groupEnabled === undefined ? true : Number(groupEnabled) === 1 || groupEnabled === true;\n const menuEnabledFlag =\n menuEnabled === undefined ? true : Number(menuEnabled) === 1 || menuEnabled === true;\n\n if (!groupMap.has(normalizedGroupKey)) {\n groupMap.set(normalizedGroupKey, {\n codiceGruppo: menuBase.codiceGruppo ?? normalizedGroupKey,\n descrizioneGruppo: menuBase.descrizioneGruppo,\n ordineGruppo: menuBase.ordineGruppo,\n enabled: groupEnabledFlag,\n menus: [],\n });\n }\n\n if (menuBase.codiceMenu) {\n groupMap.get(normalizedGroupKey)!.menus.push({\n ...menuBase,\n enabled: menuEnabledFlag,\n });\n }\n });\n\n const groupsArray = Array.from(groupMap.values())\n .map(group => ({\n ...group,\n menus: (group.menus ?? []).sort(\n (a, b) =>\n (a.ordineMenu ?? Number.MAX_SAFE_INTEGER) - (b.ordineMenu ?? Number.MAX_SAFE_INTEGER),\n ),\n }))\n .sort(\n (a, b) =>\n (a.ordineGruppo ?? Number.MAX_SAFE_INTEGER) - (b.ordineGruppo ?? Number.MAX_SAFE_INTEGER),\n );\n\n return groupsArray;\n }\n\n\n\n public async getUserRolesAndGrants(codiceUtente: number): Promise<{\n abilitazioni: AbilitazioneMenu[],\n ruoli: Role[],\n grants: AbilitazioneMenu[]\n }> {\n const codiceUtenteQuery = \"SELECT FLGSUPER as flag_super FROM UTENTI_CONFIG WHERE CODUTE = ?\";\n let result = await Orm.query(this.accessiOptions.databaseOptions, codiceUtenteQuery, [codiceUtente]);\n if (!result || result.length == 0) throw new Error(\"Nessun utente trovato con il codice utente \" + codiceUtente);\n\n result = result.map(RestUtilities.convertKeysToCamelCase) as { flagSuper: boolean }[];\n const isSuperAdmin = result[0].flagSuper;\n\n let abilitazioni: AbilitazioneMenu[] = [];\n let ruoli: Role[] = [];\n\n if (isSuperAdmin) {\n const query = `\n SELECT\n M.CODMNU AS codice_menu,\n 30 AS tipo_abilitazione,\n M.DESMNU AS descrizione_menu,\n G.DESGRP AS descrizione_gruppo,\n G.CODGRP AS codice_gruppo,\n M.ICON AS icona,\n M.CODTIP AS tipo,\n M.PAGINA AS pagina,\n M.NOTE AS note\n FROM MENU M\n INNER JOIN MENU_GRP G ON G.CODGRP = M.CODGRP\n WHERE M.FLGENABLED = 1 AND G.FLGENABLED = 1\n `;\n abilitazioni = await Orm.query(this.accessiOptions.databaseOptions, query, [])\n .then(results => results.map(RestUtilities.convertKeysToCamelCase)) as AbilitazioneMenu[];\n } else {\n const queryAbilitazioni = `\n SELECT\n A.CODMNU AS codice_menu,\n A.TIPABI AS tipo_abilitazione,\n M.DESMNU AS descrizione_menu,\n G.DESGRP AS descrizione_gruppo,\n G.CODGRP AS codice_gruppo,\n M.ICON AS icona,\n M.CODTIP AS tipo,\n M.PAGINA AS pagina,\n M.NOTE AS note\n FROM ABILITAZIONI A\n INNER JOIN MENU M ON A.CODMNU = M.CODMNU\n INNER JOIN MENU_GRP G ON G.CODGRP = M.CODGRP\n WHERE A.CODUTE = ? AND M.FLGENABLED = 1 AND G.FLGENABLED = 1\n `;\n abilitazioni = await Orm.query(this.accessiOptions.databaseOptions, queryAbilitazioni, [codiceUtente])\n .then(results => results.map(RestUtilities.convertKeysToCamelCase)) as AbilitazioneMenu[];\n\n const queryRuoli = `\n SELECT\n R.CODRUO AS codice_ruolo,\n R.DESRUO AS descrizione_ruolo,\n RM.CODMNU AS codice_menu,\n RM.TIPABI AS tipo_abilitazione,\n M.DESMNU AS descrizione_menu,\n M.NOTE AS note\n FROM UTENTI_RUOLI RU\n INNER JOIN RUOLI R ON RU.CODRUO = R.CODRUO\n INNER JOIN RUOLI_MNU RM ON R.CODRUO = RM.CODRUO\n INNER JOIN MENU M ON RM.CODMNU = M.CODMNU\n INNER JOIN MENU_GRP G ON G.CODGRP = M.CODGRP\n WHERE RU.CODUTE = ? AND M.FLGENABLED = 1 AND G.FLGENABLED = 1\n `;\n let ruoliResult = await Orm.query(this.accessiOptions.databaseOptions, queryRuoli, [codiceUtente]);\n ruoliResult = ruoliResult.map(RestUtilities.convertKeysToCamelCase);\n\n const ruoliMap = new Map<number, Role>();\n for (const row of ruoliResult) {\n const { codiceRuolo, descrizioneRuolo, codiceMenu, descrizioneMenu, tipoAbilitazione } = row;\n\n if (!ruoliMap.has(codiceRuolo)) {\n ruoliMap.set(codiceRuolo, {\n codiceRuolo,\n descrizioneRuolo: descrizioneRuolo?.trim(),\n menu: []\n });\n }\n\n if (codiceMenu) {\n ruoliMap.get(codiceRuolo)!.menu.push({\n codiceRuolo: codiceRuolo,\n codiceMenu: codiceMenu.trim(),\n tipoAbilitazione,\n });\n }\n }\n\n ruoli = Array.from(ruoliMap.values());\n }\n\n // Merge user-specific and role-based permissions\n const grantsMap = new Map<string, AbilitazioneMenu>();\n\n // Add user-specific permissions\n for (const abilitazione of abilitazioni) {\n grantsMap.set(abilitazione.codiceMenu, abilitazione);\n }\n\n // Add role-based permissions if not already present\n for (const ruolo of ruoli) {\n for (const menu of ruolo.menu) {\n if (!grantsMap.has(menu.codiceMenu)) {\n grantsMap.set(menu.codiceMenu, menu);\n }\n }\n }\n\n const grants = Array.from(grantsMap.values());\n\n return { abilitazioni, ruoli, grants };\n }\n\n\n\n}\n\n\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "emilsoftware-utilities",
3
- "version": "1.6.1-dev.5",
3
+ "version": "1.6.1-dev.6",
4
4
  "description": "Utilities for EmilSoftware",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",