emilsoftware-utilities 1.3.105 → 1.3.107
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/accessi-module/Controllers/PermissionController.d.ts +1 -0
- package/dist/accessi-module/Controllers/PermissionController.js +24 -0
- package/dist/accessi-module/Dtos/AbilitazioneMenu.d.ts +7 -7
- package/dist/accessi-module/Dtos/AbilitazioneMenu.js +4 -4
- package/dist/accessi-module/Dtos/LoginResponse.d.ts +2 -2
- package/dist/accessi-module/Dtos/LoginResponse.js +6 -6
- package/dist/accessi-module/Dtos/Role.d.ts +2 -8
- package/dist/accessi-module/Dtos/Role.js +2 -20
- package/dist/accessi-module/Dtos/UserGrantsDto.d.ts +7 -0
- package/dist/accessi-module/Dtos/UserGrantsDto.js +38 -0
- package/dist/accessi-module/Services/AuthService/AuthService.js +13 -6
- package/dist/accessi-module/Services/PermissionService/PermissionService.d.ts +5 -1
- package/dist/accessi-module/Services/PermissionService/PermissionService.js +104 -59
- package/dist/accessi-module/Services/UserService/UserService.js +64 -12
- package/package.json +1 -1
|
@@ -19,4 +19,5 @@ export declare class PermissionController {
|
|
|
19
19
|
assignPermissionsToUser(res: Response, codiceUtente: number, assignPermissionsRequest: AssignPermissionsToUserRequest): Promise<Response<any, Record<string, any>>>;
|
|
20
20
|
deleteRole(codiceRuolo: number, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
21
21
|
getMenus(res: Response): Promise<Response<any, Record<string, any>>>;
|
|
22
|
+
getUserRolesAndGrants(codiceUtente: number, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
22
23
|
}
|
|
@@ -32,6 +32,7 @@ const AssignRolesToUserRequest_1 = require("../Dtos/AssignRolesToUserRequest");
|
|
|
32
32
|
const AssignPermissionsToUserRequest_1 = require("../Dtos/AssignPermissionsToUserRequest");
|
|
33
33
|
const GetMenusResponse_1 = require("../Dtos/GetMenusResponse");
|
|
34
34
|
const GetRolesResponse_1 = require("../Dtos/GetRolesResponse");
|
|
35
|
+
const UserGrantsDto_1 = require("../Dtos/UserGrantsDto");
|
|
35
36
|
let PermissionController = PermissionController_1 = class PermissionController {
|
|
36
37
|
constructor(permissionService, options) {
|
|
37
38
|
this.permissionService = permissionService;
|
|
@@ -156,6 +157,17 @@ let PermissionController = PermissionController_1 = class PermissionController {
|
|
|
156
157
|
}
|
|
157
158
|
});
|
|
158
159
|
}
|
|
160
|
+
getUserRolesAndGrants(codiceUtente, res) {
|
|
161
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
162
|
+
try {
|
|
163
|
+
const menus = yield this.permissionService.getUserRolesAndGrants(codiceUtente);
|
|
164
|
+
return Utilities_1.RestUtilities.sendBaseResponse(res, menus);
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
return Utilities_1.RestUtilities.sendErrorMessage(res, error, PermissionController_1.name);
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
}
|
|
159
171
|
};
|
|
160
172
|
exports.PermissionController = PermissionController;
|
|
161
173
|
__decorate([
|
|
@@ -285,6 +297,18 @@ __decorate([
|
|
|
285
297
|
__metadata("design:paramtypes", [Object]),
|
|
286
298
|
__metadata("design:returntype", Promise)
|
|
287
299
|
], PermissionController.prototype, "getMenus", null);
|
|
300
|
+
__decorate([
|
|
301
|
+
(0, swagger_1.ApiOperation)({ summary: 'Recupera i ruoli e i menù di un utente', operationId: "getUserRolesAndGrants" }),
|
|
302
|
+
(0, swagger_1.ApiOkResponse)({ description: 'Elenco menù', type: UserGrantsDto_1.UserGrantsDto }),
|
|
303
|
+
(0, swagger_1.ApiResponse)({ status: 200, description: "Lista dei menù recuperata con successo" }),
|
|
304
|
+
(0, swagger_1.ApiResponse)({ status: 500, description: "Errore interno del server" }),
|
|
305
|
+
(0, common_1.Get)('grants/:codiceUtente'),
|
|
306
|
+
__param(0, (0, common_1.Param)('codiceUtente')),
|
|
307
|
+
__param(1, (0, common_1.Res)()),
|
|
308
|
+
__metadata("design:type", Function),
|
|
309
|
+
__metadata("design:paramtypes", [Number, Object]),
|
|
310
|
+
__metadata("design:returntype", Promise)
|
|
311
|
+
], PermissionController.prototype, "getUserRolesAndGrants", null);
|
|
288
312
|
exports.PermissionController = PermissionController = PermissionController_1 = __decorate([
|
|
289
313
|
(0, swagger_1.ApiTags)('Permission'),
|
|
290
314
|
(0, common_1.Controller)('accessi/permission'),
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { TipoAbilitazione } from "./TipoAbilitazione";
|
|
2
2
|
export declare class AbilitazioneMenu {
|
|
3
3
|
codiceMenu: string;
|
|
4
|
-
tipoAbilitazione
|
|
5
|
-
descrizioneMenu
|
|
6
|
-
descrizioneGruppo
|
|
7
|
-
codiceGruppo
|
|
8
|
-
icona
|
|
9
|
-
tipo
|
|
10
|
-
pagina
|
|
4
|
+
tipoAbilitazione?: TipoAbilitazione;
|
|
5
|
+
descrizioneMenu?: string;
|
|
6
|
+
descrizioneGruppo?: string;
|
|
7
|
+
codiceGruppo?: string;
|
|
8
|
+
icona?: string | null;
|
|
9
|
+
tipo?: string | null;
|
|
10
|
+
pagina?: string | null;
|
|
11
11
|
}
|
|
@@ -27,7 +27,7 @@ __decorate([
|
|
|
27
27
|
__metadata("design:type", String)
|
|
28
28
|
], AbilitazioneMenu.prototype, "codiceMenu", void 0);
|
|
29
29
|
__decorate([
|
|
30
|
-
(0, swagger_1.
|
|
30
|
+
(0, swagger_1.ApiPropertyOptional)({
|
|
31
31
|
description: 'Tipo di abilitazione',
|
|
32
32
|
enum: TipoAbilitazione_1.TipoAbilitazione,
|
|
33
33
|
example: TipoAbilitazione_1.TipoAbilitazione.LETTURA
|
|
@@ -36,7 +36,7 @@ __decorate([
|
|
|
36
36
|
__metadata("design:type", Number)
|
|
37
37
|
], AbilitazioneMenu.prototype, "tipoAbilitazione", void 0);
|
|
38
38
|
__decorate([
|
|
39
|
-
(0, swagger_1.
|
|
39
|
+
(0, swagger_1.ApiPropertyOptional)({
|
|
40
40
|
description: 'Descrizione del menu',
|
|
41
41
|
example: 'Gestione utenti'
|
|
42
42
|
}),
|
|
@@ -45,7 +45,7 @@ __decorate([
|
|
|
45
45
|
__metadata("design:type", String)
|
|
46
46
|
], AbilitazioneMenu.prototype, "descrizioneMenu", void 0);
|
|
47
47
|
__decorate([
|
|
48
|
-
(0, swagger_1.
|
|
48
|
+
(0, swagger_1.ApiPropertyOptional)({
|
|
49
49
|
description: 'Descrizione del gruppo a cui appartiene il menu',
|
|
50
50
|
example: 'Amministrazione'
|
|
51
51
|
}),
|
|
@@ -54,7 +54,7 @@ __decorate([
|
|
|
54
54
|
__metadata("design:type", String)
|
|
55
55
|
], AbilitazioneMenu.prototype, "descrizioneGruppo", void 0);
|
|
56
56
|
__decorate([
|
|
57
|
-
(0, swagger_1.
|
|
57
|
+
(0, swagger_1.ApiPropertyOptional)({
|
|
58
58
|
description: 'Codice univoco del gruppo a cui appartiene il menu',
|
|
59
59
|
example: 'GRP_ADMIN'
|
|
60
60
|
}),
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { BaseResponse } from "./BaseResponse";
|
|
2
2
|
import { FiltriUtente } from "./FiltriUtente";
|
|
3
|
-
import { AbilitazioneMenu } from "./AbilitazioneMenu";
|
|
4
3
|
import { TokenResult } from "./TokenResult";
|
|
5
4
|
import { UserDto } from "./UserDto";
|
|
5
|
+
import { UserGrantsDto } from "./UserGrantsDto";
|
|
6
6
|
export declare class LoginResult {
|
|
7
7
|
utente?: UserDto;
|
|
8
8
|
filtri?: FiltriUtente[];
|
|
9
|
-
|
|
9
|
+
userGrants?: UserGrantsDto;
|
|
10
10
|
extensionFields?: any[];
|
|
11
11
|
token?: TokenResult;
|
|
12
12
|
}
|
|
@@ -13,11 +13,11 @@ exports.LoginResponse = exports.LoginResult = void 0;
|
|
|
13
13
|
const swagger_1 = require("@nestjs/swagger");
|
|
14
14
|
const BaseResponse_1 = require("./BaseResponse");
|
|
15
15
|
const FiltriUtente_1 = require("./FiltriUtente");
|
|
16
|
-
const AbilitazioneMenu_1 = require("./AbilitazioneMenu");
|
|
17
16
|
const TokenResult_1 = require("./TokenResult");
|
|
18
17
|
const UserDto_1 = require("./UserDto");
|
|
19
18
|
const class_transformer_1 = require("class-transformer");
|
|
20
19
|
const class_validator_1 = require("class-validator");
|
|
20
|
+
const UserGrantsDto_1 = require("./UserGrantsDto");
|
|
21
21
|
class LoginResult {
|
|
22
22
|
}
|
|
23
23
|
exports.LoginResult = LoginResult;
|
|
@@ -34,11 +34,11 @@ __decorate([
|
|
|
34
34
|
__metadata("design:type", Array)
|
|
35
35
|
], LoginResult.prototype, "filtri", void 0);
|
|
36
36
|
__decorate([
|
|
37
|
-
(0, swagger_1.ApiProperty)({ description: 'Abilitazioni utente', type:
|
|
38
|
-
(0, class_validator_1.ValidateNested)(
|
|
39
|
-
(0, class_transformer_1.Type)(() =>
|
|
40
|
-
__metadata("design:type",
|
|
41
|
-
], LoginResult.prototype, "
|
|
37
|
+
(0, swagger_1.ApiProperty)({ description: 'Abilitazioni e ruoli utente', type: UserGrantsDto_1.UserGrantsDto }),
|
|
38
|
+
(0, class_validator_1.ValidateNested)(),
|
|
39
|
+
(0, class_transformer_1.Type)(() => UserGrantsDto_1.UserGrantsDto),
|
|
40
|
+
__metadata("design:type", UserGrantsDto_1.UserGrantsDto)
|
|
41
|
+
], LoginResult.prototype, "userGrants", void 0);
|
|
42
42
|
__decorate([
|
|
43
43
|
(0, swagger_1.ApiProperty)({ description: 'Extension Fields', type: [Object] }),
|
|
44
44
|
__metadata("design:type", Array)
|
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare class Menu {
|
|
3
|
-
codiceMenu: string;
|
|
4
|
-
descrizioneMenu: string;
|
|
5
|
-
tipoAbilitazione: TipoAbilitazione;
|
|
6
|
-
}
|
|
1
|
+
import { AbilitazioneMenu } from './AbilitazioneMenu';
|
|
7
2
|
export declare class Role {
|
|
8
3
|
codiceRuolo?: string;
|
|
9
4
|
descrizioneRuolo: string;
|
|
10
|
-
menu:
|
|
5
|
+
menu: AbilitazioneMenu[];
|
|
11
6
|
}
|
|
12
|
-
export {};
|
|
@@ -11,25 +11,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.Role = void 0;
|
|
13
13
|
const swagger_1 = require("@nestjs/swagger");
|
|
14
|
-
const
|
|
15
|
-
class Menu {
|
|
16
|
-
}
|
|
17
|
-
__decorate([
|
|
18
|
-
(0, swagger_1.ApiProperty)({ description: 'Codice univoco del menù' }),
|
|
19
|
-
__metadata("design:type", String)
|
|
20
|
-
], Menu.prototype, "codiceMenu", void 0);
|
|
21
|
-
__decorate([
|
|
22
|
-
(0, swagger_1.ApiProperty)({ description: 'Descrizione del menù' }),
|
|
23
|
-
__metadata("design:type", String)
|
|
24
|
-
], Menu.prototype, "descrizioneMenu", void 0);
|
|
25
|
-
__decorate([
|
|
26
|
-
(0, swagger_1.ApiProperty)({
|
|
27
|
-
description: 'Tipo di abilitazione',
|
|
28
|
-
enum: TipoAbilitazione_1.TipoAbilitazione,
|
|
29
|
-
example: TipoAbilitazione_1.TipoAbilitazione.LETTURA,
|
|
30
|
-
}),
|
|
31
|
-
__metadata("design:type", Number)
|
|
32
|
-
], Menu.prototype, "tipoAbilitazione", void 0);
|
|
14
|
+
const AbilitazioneMenu_1 = require("./AbilitazioneMenu");
|
|
33
15
|
class Role {
|
|
34
16
|
}
|
|
35
17
|
exports.Role = Role;
|
|
@@ -44,7 +26,7 @@ __decorate([
|
|
|
44
26
|
__decorate([
|
|
45
27
|
(0, swagger_1.ApiProperty)({
|
|
46
28
|
description: 'Lista di menù associati al ruolo',
|
|
47
|
-
type: [
|
|
29
|
+
type: [AbilitazioneMenu_1.AbilitazioneMenu]
|
|
48
30
|
}),
|
|
49
31
|
__metadata("design:type", Array)
|
|
50
32
|
], Role.prototype, "menu", void 0);
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.UserGrantsDto = void 0;
|
|
13
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
14
|
+
const class_transformer_1 = require("class-transformer");
|
|
15
|
+
const class_validator_1 = require("class-validator");
|
|
16
|
+
const AbilitazioneMenu_1 = require("./AbilitazioneMenu");
|
|
17
|
+
const Role_1 = require("./Role");
|
|
18
|
+
class UserGrantsDto {
|
|
19
|
+
}
|
|
20
|
+
exports.UserGrantsDto = UserGrantsDto;
|
|
21
|
+
__decorate([
|
|
22
|
+
(0, swagger_1.ApiProperty)({ description: 'Abilitazioni dell\'utente', type: [AbilitazioneMenu_1.AbilitazioneMenu] }),
|
|
23
|
+
(0, class_validator_1.ValidateNested)({ each: true }),
|
|
24
|
+
(0, class_transformer_1.Type)(() => AbilitazioneMenu_1.AbilitazioneMenu),
|
|
25
|
+
__metadata("design:type", Array)
|
|
26
|
+
], UserGrantsDto.prototype, "abilitazioni", void 0);
|
|
27
|
+
__decorate([
|
|
28
|
+
(0, swagger_1.ApiProperty)({ description: 'Ruoli dell\'utente', type: [Role_1.Role] }),
|
|
29
|
+
(0, class_validator_1.ValidateNested)({ each: true }),
|
|
30
|
+
(0, class_transformer_1.Type)(() => Role_1.Role),
|
|
31
|
+
__metadata("design:type", Array)
|
|
32
|
+
], UserGrantsDto.prototype, "ruoli", void 0);
|
|
33
|
+
__decorate([
|
|
34
|
+
(0, swagger_1.ApiProperty)({ description: 'Grants combinati', type: [AbilitazioneMenu_1.AbilitazioneMenu] }),
|
|
35
|
+
(0, class_validator_1.ValidateNested)({ each: true }),
|
|
36
|
+
(0, class_transformer_1.Type)(() => AbilitazioneMenu_1.AbilitazioneMenu),
|
|
37
|
+
__metadata("design:type", Array)
|
|
38
|
+
], UserGrantsDto.prototype, "grants", void 0);
|
|
@@ -67,8 +67,8 @@ let AuthService = class AuthService {
|
|
|
67
67
|
if (today >= targetDate) {
|
|
68
68
|
throw new Error("Password scaduta!");
|
|
69
69
|
}
|
|
70
|
-
// Recupera
|
|
71
|
-
const
|
|
70
|
+
// Recupera i grants
|
|
71
|
+
const userGrants = yield this.permissionService.getUserRolesAndGrants(utente.codiceUtente);
|
|
72
72
|
// Recupera i filtri
|
|
73
73
|
const filtri = yield this.userService.getUserFilters(utente.codiceUtente);
|
|
74
74
|
const updateLastAccessDateQuery = "UPDATE UTENTI SET DATLASTLOGIN = CURRENT_TIMESTAMP WHERE CODUTE = ?";
|
|
@@ -77,7 +77,7 @@ let AuthService = class AuthService {
|
|
|
77
77
|
this.accessiOptions.extensionFieldsOptions.forEach((ext) => __awaiter(this, void 0, void 0, function* () {
|
|
78
78
|
extensionFields.push(yield Orm_1.Orm.query(ext.databaseOptions, `SELECT ${ext.tableFields.join(",")} FROM ${ext.tableName} WHERE ${ext.tableJoinFieldName} = ?`, [utente.codiceUtente]));
|
|
79
79
|
}));
|
|
80
|
-
return { utente, filtri,
|
|
80
|
+
return { utente, filtri, userGrants, extensionFields };
|
|
81
81
|
});
|
|
82
82
|
}
|
|
83
83
|
setPassword(codiceUtente, nuovaPassword) {
|
|
@@ -102,7 +102,6 @@ let AuthService = class AuthService {
|
|
|
102
102
|
}
|
|
103
103
|
getAdminUser() {
|
|
104
104
|
return __awaiter(this, void 0, void 0, function* () {
|
|
105
|
-
const abilitazioni = yield this.permissionService.getAbilitazioniMenu(6789, true);
|
|
106
105
|
const filtri = yield this.userService.getUserFilters(6789);
|
|
107
106
|
return {
|
|
108
107
|
utente: {
|
|
@@ -122,7 +121,11 @@ let AuthService = class AuthService {
|
|
|
122
121
|
permissions: []
|
|
123
122
|
},
|
|
124
123
|
filtri,
|
|
125
|
-
|
|
124
|
+
userGrants: {
|
|
125
|
+
abilitazioni: [],
|
|
126
|
+
grants: [],
|
|
127
|
+
ruoli: []
|
|
128
|
+
}
|
|
126
129
|
};
|
|
127
130
|
});
|
|
128
131
|
}
|
|
@@ -145,7 +148,11 @@ let AuthService = class AuthService {
|
|
|
145
148
|
permissions: []
|
|
146
149
|
},
|
|
147
150
|
filtri: null,
|
|
148
|
-
|
|
151
|
+
userGrants: {
|
|
152
|
+
abilitazioni: [],
|
|
153
|
+
grants: [],
|
|
154
|
+
ruoli: []
|
|
155
|
+
}
|
|
149
156
|
};
|
|
150
157
|
}
|
|
151
158
|
confirmResetPassword(token, newPassword) {
|
|
@@ -10,9 +10,13 @@ export declare class PermissionService {
|
|
|
10
10
|
resetAbilitazioni(codiceUtente: number): Promise<void>;
|
|
11
11
|
updateOrInsertRole(role: Role, codiceRuolo?: string): Promise<void>;
|
|
12
12
|
getRolesWithMenus(): Promise<Role[]>;
|
|
13
|
-
getAbilitazioniMenu(codiceUtente: number, isSuperAdmin: boolean): Promise<AbilitazioneMenu[]>;
|
|
14
13
|
assignRolesToUser(codiceUtente: number, roles: string[]): Promise<void>;
|
|
15
14
|
assignPermissionsToUser(codiceUtente: number, permissions: Permission[]): Promise<void>;
|
|
16
15
|
deleteRole(codiceRuolo: number): Promise<void>;
|
|
17
16
|
getMenus(): Promise<MenuEntity[]>;
|
|
17
|
+
getUserRolesAndGrants(codiceUtente: number): Promise<{
|
|
18
|
+
abilitazioni: AbilitazioneMenu[];
|
|
19
|
+
ruoli: Role[];
|
|
20
|
+
grants: AbilitazioneMenu[];
|
|
21
|
+
}>;
|
|
18
22
|
}
|
|
@@ -128,65 +128,6 @@ let PermissionService = class PermissionService {
|
|
|
128
128
|
}
|
|
129
129
|
});
|
|
130
130
|
}
|
|
131
|
-
getAbilitazioniMenu(codiceUtente, isSuperAdmin) {
|
|
132
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
133
|
-
const query = isSuperAdmin
|
|
134
|
-
? `SELECT
|
|
135
|
-
M.CODMNU AS codice_menu,
|
|
136
|
-
30 AS tipo_abilitazione,
|
|
137
|
-
M.DESMNU AS descrizione_menu,
|
|
138
|
-
G.DESGRP AS descrizione_gruppo,
|
|
139
|
-
G.CODGRP AS codice_gruppo,
|
|
140
|
-
M.ICON AS icona,
|
|
141
|
-
M.CODTIP AS tipo,
|
|
142
|
-
M.PAGINA AS pagina
|
|
143
|
-
FROM MENU M
|
|
144
|
-
INNER JOIN MENU_GRP G ON G.CODGRP = M.CODGRP
|
|
145
|
-
WHERE M.FLGENABLED = 1 AND G.FLGENABLED = 1`
|
|
146
|
-
: `WITH AbilitazioniTotali AS (
|
|
147
|
-
SELECT
|
|
148
|
-
A.CODMNU AS codice_menu,
|
|
149
|
-
A.TIPABI AS tipo_abilitazione,
|
|
150
|
-
M.DESMNU AS descrizione_menu,
|
|
151
|
-
G.DESGRP AS descrizione_gruppo,
|
|
152
|
-
G.CODGRP AS codice_gruppo,
|
|
153
|
-
M.ICON AS icona,
|
|
154
|
-
M.CODTIP AS tipo,
|
|
155
|
-
M.PAGINA AS pagina
|
|
156
|
-
FROM ABILITAZIONI A
|
|
157
|
-
INNER JOIN MENU M ON A.CODMNU = M.CODMNU
|
|
158
|
-
INNER JOIN MENU_GRP G ON G.CODGRP = M.CODGRP
|
|
159
|
-
WHERE A.CODUTE = ? AND M.FLGENABLED = 1 AND G.FLGENABLED = 1
|
|
160
|
-
|
|
161
|
-
UNION ALL
|
|
162
|
-
|
|
163
|
-
SELECT
|
|
164
|
-
RM.CODMNU AS codice_menu,
|
|
165
|
-
5 AS tipo_abilitazione,
|
|
166
|
-
M.DESMNU AS descrizione_menu,
|
|
167
|
-
G.DESGRP AS descrizione_gruppo,
|
|
168
|
-
G.CODGRP AS codice_gruppo,
|
|
169
|
-
M.ICON AS icona,
|
|
170
|
-
M.CODTIP AS tipo,
|
|
171
|
-
M.PAGINA AS pagina
|
|
172
|
-
FROM RUOLI_UTENTI RU
|
|
173
|
-
INNER JOIN RUOLI R ON RU.CODRUL = R.CODRUL
|
|
174
|
-
INNER JOIN RUOLI_MENU RM ON R.CODRUL = RM.CODRUL
|
|
175
|
-
INNER JOIN MENU M ON RM.CODMNU = M.CODMNU
|
|
176
|
-
INNER JOIN MENU_GRP G ON G.CODGRP = M.CODGRP
|
|
177
|
-
WHERE RU.CODUTE = ? AND M.FLGENABLED = 1 AND G.FLGENABLED = 1
|
|
178
|
-
)
|
|
179
|
-
SELECT codice_menu, tipo_abilitazione, descrizione_menu, descrizione_gruppo, codice_gruppo, icona, tipo, pagina
|
|
180
|
-
FROM (
|
|
181
|
-
SELECT *, ROW_NUMBER() OVER (PARTITION BY codice_menu ORDER BY tipo_abilitazione DESC) AS row_num
|
|
182
|
-
FROM AbilitazioniTotali
|
|
183
|
-
) AS Ranked
|
|
184
|
-
WHERE row_num = 1`;
|
|
185
|
-
const queryParams = isSuperAdmin ? [] : [codiceUtente, codiceUtente];
|
|
186
|
-
return yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, query, queryParams)
|
|
187
|
-
.then(results => results.map(Utilities_1.RestUtilities.convertKeysToCamelCase));
|
|
188
|
-
});
|
|
189
|
-
}
|
|
190
131
|
assignRolesToUser(codiceUtente, roles) {
|
|
191
132
|
return __awaiter(this, void 0, void 0, function* () {
|
|
192
133
|
try {
|
|
@@ -272,6 +213,110 @@ let PermissionService = class PermissionService {
|
|
|
272
213
|
}
|
|
273
214
|
});
|
|
274
215
|
}
|
|
216
|
+
getUserRolesAndGrants(codiceUtente) {
|
|
217
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
218
|
+
try {
|
|
219
|
+
const codiceUtenteQuery = "SELECT FLGSUPER as flag_super FROM UTENTI_CONFIG WHERE CODUTE = ?";
|
|
220
|
+
let result = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, codiceUtenteQuery, [codiceUtente]);
|
|
221
|
+
if (!result || result.length == 0)
|
|
222
|
+
throw new Error("Nessun utente trovato con il codice utente " + codiceUtente);
|
|
223
|
+
result = result.map(Utilities_1.RestUtilities.convertKeysToCamelCase);
|
|
224
|
+
const isSuperAdmin = result[0].flagSuper;
|
|
225
|
+
let abilitazioni = [];
|
|
226
|
+
let ruoli = [];
|
|
227
|
+
if (isSuperAdmin) {
|
|
228
|
+
const query = `
|
|
229
|
+
SELECT
|
|
230
|
+
M.CODMNU AS codice_menu,
|
|
231
|
+
30 AS tipo_abilitazione,
|
|
232
|
+
M.DESMNU AS descrizione_menu,
|
|
233
|
+
G.DESGRP AS descrizione_gruppo,
|
|
234
|
+
G.CODGRP AS codice_gruppo,
|
|
235
|
+
M.ICON AS icona,
|
|
236
|
+
M.CODTIP AS tipo,
|
|
237
|
+
M.PAGINA AS pagina
|
|
238
|
+
FROM MENU M
|
|
239
|
+
INNER JOIN MENU_GRP G ON G.CODGRP = M.CODGRP
|
|
240
|
+
WHERE M.FLGENABLED = 1 AND G.FLGENABLED = 1
|
|
241
|
+
`;
|
|
242
|
+
abilitazioni = (yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, query, [])
|
|
243
|
+
.then(results => results.map(Utilities_1.RestUtilities.convertKeysToCamelCase)));
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
const queryAbilitazioni = `
|
|
247
|
+
SELECT
|
|
248
|
+
A.CODMNU AS codice_menu,
|
|
249
|
+
A.TIPABI AS tipo_abilitazione,
|
|
250
|
+
M.DESMNU AS descrizione_menu,
|
|
251
|
+
G.DESGRP AS descrizione_gruppo,
|
|
252
|
+
G.CODGRP AS codice_gruppo,
|
|
253
|
+
M.ICON AS icona,
|
|
254
|
+
M.CODTIP AS tipo,
|
|
255
|
+
M.PAGINA AS pagina
|
|
256
|
+
FROM ABILITAZIONI A
|
|
257
|
+
INNER JOIN MENU M ON A.CODMNU = M.CODMNU
|
|
258
|
+
INNER JOIN MENU_GRP G ON G.CODGRP = M.CODGRP
|
|
259
|
+
WHERE A.CODUTE = ? AND M.FLGENABLED = 1 AND G.FLGENABLED = 1
|
|
260
|
+
`;
|
|
261
|
+
abilitazioni = (yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, queryAbilitazioni, [codiceUtente])
|
|
262
|
+
.then(results => results.map(Utilities_1.RestUtilities.convertKeysToCamelCase)));
|
|
263
|
+
const queryRuoli = `
|
|
264
|
+
SELECT
|
|
265
|
+
R.CODRUO AS codice_ruolo,
|
|
266
|
+
R.DESRUO AS descrizione_ruolo,
|
|
267
|
+
RM.CODMNU AS codice_menu,
|
|
268
|
+
RM.TIPABI AS tipo_abilitazione,
|
|
269
|
+
M.DESMNU AS descrizione_menu
|
|
270
|
+
FROM RUOLI_UTENTI RU
|
|
271
|
+
INNER JOIN RUOLI R ON RU.CODRUL = R.CODRUL
|
|
272
|
+
INNER JOIN RUOLI_MENU RM ON R.CODRUL = RM.CODRUL
|
|
273
|
+
INNER JOIN MENU M ON RM.CODMNU = M.CODMNU
|
|
274
|
+
INNER JOIN MENU_GRP G ON G.CODGRP = M.CODGRP
|
|
275
|
+
WHERE RU.CODUTE = ? AND M.FLGENABLED = 1 AND G.FLGENABLED = 1
|
|
276
|
+
`;
|
|
277
|
+
const ruoliResult = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, queryRuoli, [codiceUtente]);
|
|
278
|
+
const ruoliMap = new Map();
|
|
279
|
+
for (const row of ruoliResult) {
|
|
280
|
+
const { codiceRuolo, descrizioneRuolo, codiceMenu, descrizioneMenu, tipoAbilitazione } = row;
|
|
281
|
+
if (!ruoliMap.has(codiceRuolo)) {
|
|
282
|
+
ruoliMap.set(codiceRuolo, {
|
|
283
|
+
codiceRuolo,
|
|
284
|
+
descrizioneRuolo: descrizioneRuolo === null || descrizioneRuolo === void 0 ? void 0 : descrizioneRuolo.trim(),
|
|
285
|
+
menu: []
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
if (codiceMenu) {
|
|
289
|
+
ruoliMap.get(codiceRuolo).menu.push({
|
|
290
|
+
codiceMenu: codiceMenu.trim(),
|
|
291
|
+
tipoAbilitazione,
|
|
292
|
+
descrizioneMenu: descrizioneMenu === null || descrizioneMenu === void 0 ? void 0 : descrizioneMenu.trim(),
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
ruoli = Array.from(ruoliMap.values());
|
|
297
|
+
}
|
|
298
|
+
// Merge user-specific and role-based permissions
|
|
299
|
+
const grantsMap = new Map();
|
|
300
|
+
// Add user-specific permissions
|
|
301
|
+
for (const abilitazione of abilitazioni) {
|
|
302
|
+
grantsMap.set(abilitazione.codiceMenu, abilitazione);
|
|
303
|
+
}
|
|
304
|
+
// Add role-based permissions if not already present
|
|
305
|
+
for (const ruolo of ruoli) {
|
|
306
|
+
for (const menu of ruolo.menu) {
|
|
307
|
+
if (!grantsMap.has(menu.codiceMenu)) {
|
|
308
|
+
grantsMap.set(menu.codiceMenu, menu);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
const grants = Array.from(grantsMap.values());
|
|
313
|
+
return { abilitazioni, ruoli, grants };
|
|
314
|
+
}
|
|
315
|
+
catch (error) {
|
|
316
|
+
throw error;
|
|
317
|
+
}
|
|
318
|
+
});
|
|
319
|
+
}
|
|
275
320
|
};
|
|
276
321
|
exports.PermissionService = PermissionService;
|
|
277
322
|
exports.PermissionService = PermissionService = __decorate([
|
|
@@ -155,18 +155,70 @@ let UserService = class UserService {
|
|
|
155
155
|
try {
|
|
156
156
|
if (!codiceUtente)
|
|
157
157
|
throw new Error("Impossibile aggiornare senza codice utente.");
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
158
|
+
// Costruzione dinamica della query per UTENTI
|
|
159
|
+
const utentiUpdates = [];
|
|
160
|
+
const utentiParams = [];
|
|
161
|
+
if (user.email !== undefined) {
|
|
162
|
+
utentiUpdates.push("usrname = ?");
|
|
163
|
+
utentiParams.push(user.email);
|
|
164
|
+
}
|
|
165
|
+
if (user.flagGdpr !== undefined) {
|
|
166
|
+
utentiUpdates.push("flggdpr = ?");
|
|
167
|
+
utentiParams.push(user.flagGdpr);
|
|
168
|
+
}
|
|
169
|
+
if (user.statoRegistrazione !== undefined) {
|
|
170
|
+
utentiUpdates.push("stareg = ?");
|
|
171
|
+
utentiParams.push(user.statoRegistrazione);
|
|
172
|
+
}
|
|
173
|
+
if (utentiUpdates.length > 0) {
|
|
174
|
+
const queryUtenti = `UPDATE UTENTI SET ${utentiUpdates.join(", ")} WHERE CODUTE = ?`;
|
|
175
|
+
utentiParams.push(codiceUtente);
|
|
176
|
+
yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, queryUtenti, utentiParams);
|
|
177
|
+
}
|
|
178
|
+
// Costruzione dinamica della query per UTENTI_CONFIG
|
|
179
|
+
const utentiConfigUpdates = [];
|
|
180
|
+
const utentiConfigParams = [];
|
|
181
|
+
if (user.cognome !== undefined) {
|
|
182
|
+
utentiConfigUpdates.push("cognome = ?");
|
|
183
|
+
utentiConfigParams.push(user.cognome);
|
|
184
|
+
}
|
|
185
|
+
if (user.nome !== undefined) {
|
|
186
|
+
utentiConfigUpdates.push("nome = ?");
|
|
187
|
+
utentiConfigParams.push(user.nome);
|
|
188
|
+
}
|
|
189
|
+
if (user.avatar !== undefined) {
|
|
190
|
+
utentiConfigUpdates.push("avatar = ?");
|
|
191
|
+
utentiConfigParams.push(user.avatar);
|
|
192
|
+
}
|
|
193
|
+
if (user.flagDueFattori !== undefined) {
|
|
194
|
+
utentiConfigUpdates.push("flg2fatt = ?");
|
|
195
|
+
utentiConfigParams.push(user.flagDueFattori);
|
|
196
|
+
}
|
|
197
|
+
if (user.codiceLingua !== undefined) {
|
|
198
|
+
utentiConfigUpdates.push("codlingua = ?");
|
|
199
|
+
utentiConfigParams.push(user.codiceLingua);
|
|
200
|
+
}
|
|
201
|
+
if (user.cellulare !== undefined) {
|
|
202
|
+
utentiConfigUpdates.push("cellulare = ?");
|
|
203
|
+
utentiConfigParams.push(user.cellulare);
|
|
204
|
+
}
|
|
205
|
+
if (user.flagSuper !== undefined) {
|
|
206
|
+
utentiConfigUpdates.push("flgsuper = ?");
|
|
207
|
+
utentiConfigParams.push(user.flagSuper);
|
|
208
|
+
}
|
|
209
|
+
if (user.paginaDefault !== undefined) {
|
|
210
|
+
utentiConfigUpdates.push("pagdef = ?");
|
|
211
|
+
utentiConfigParams.push(user.paginaDefault);
|
|
212
|
+
}
|
|
213
|
+
if (user.jsonMetadata !== undefined) {
|
|
214
|
+
utentiConfigUpdates.push("json_metadata = ?");
|
|
215
|
+
utentiConfigParams.push(user.jsonMetadata);
|
|
216
|
+
}
|
|
217
|
+
if (utentiConfigUpdates.length > 0) {
|
|
218
|
+
const queryUtentiConfig = `UPDATE UTENTI_CONFIG SET ${utentiConfigUpdates.join(", ")} WHERE CODUTE = ?`;
|
|
219
|
+
utentiConfigParams.push(codiceUtente);
|
|
220
|
+
yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, queryUtentiConfig, utentiConfigParams);
|
|
221
|
+
}
|
|
170
222
|
}
|
|
171
223
|
catch (error) {
|
|
172
224
|
throw error;
|