emilsoftware-utilities 1.3.71 → 1.3.72
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/AccessiModule.d.ts +2 -29
- package/dist/accessi-module/AccessiModule.js +32 -43
- package/dist/accessi-module/Controllers/AccessiController.d.ts +26 -49
- package/dist/accessi-module/Controllers/AccessiController.js +177 -96
- package/dist/accessi-module/index.d.ts +3 -0
- package/dist/accessi-module/index.js +24 -2
- package/dist/accessi-module/swagger/SwaggerConfig.d.ts +2 -1
- package/dist/accessi-module/swagger/SwaggerConfig.js +9 -29
- package/package.json +7 -1
- package/dist/accessi-module/Controllers/AccessiControllerBase.d.ts +0 -387
- package/dist/accessi-module/Controllers/AccessiControllerBase.js +0 -11
- package/dist/accessi-module/IAccessiRoutes.d.ts +0 -5
- package/dist/accessi-module/IAccessiRoutes.js +0 -2
- package/dist/accessi-module/Routes/AccessiRoutes.d.ts +0 -10
- package/dist/accessi-module/Routes/AccessiRoutes.js +0 -55
- package/dist/accessi-module/inversify.config.d.ts +0 -3
- package/dist/accessi-module/inversify.config.js +0 -65
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @author mttdev382
|
|
6
6
|
*/
|
|
7
7
|
import { Options } from "es-node-firebird";
|
|
8
|
-
import {
|
|
8
|
+
import { DynamicModule } from "@nestjs/common";
|
|
9
9
|
export interface JwtOptions {
|
|
10
10
|
secret: string;
|
|
11
11
|
expiresIn: string;
|
|
@@ -28,32 +28,5 @@ export interface AccessiOptions {
|
|
|
28
28
|
emailOptions: EmailOptions;
|
|
29
29
|
}
|
|
30
30
|
export declare class AccessiModule {
|
|
31
|
-
|
|
32
|
-
private logger;
|
|
33
|
-
private accessiRoutes;
|
|
34
|
-
/**
|
|
35
|
-
* Crea una nuova istanza del modulo Accessi.
|
|
36
|
-
*
|
|
37
|
-
* @param {Options} databaseOptions - Le opzioni di configurazione per la connessione al database.
|
|
38
|
-
* @param {string} encryptionKey - La chiave di cifratura per la gestione dei dati sensibili.
|
|
39
|
-
* @param {JwtOptions} jwtOptions - Le opzioni per la gestione dei token JWT.
|
|
40
|
-
* @author mttdev382
|
|
41
|
-
|
|
42
|
-
*/
|
|
43
|
-
constructor(app: Application, options: AccessiOptions);
|
|
44
|
-
/**
|
|
45
|
-
* Ottiene il router delle rotte per gestire gli accessi.
|
|
46
|
-
*
|
|
47
|
-
* **Consiglio:** È consigliabile utilizzare questo router nel primo livello della tua applicazione (es. /api/accessi).
|
|
48
|
-
* @deprecated A breve questo metodo sparirà, la libreria viene importata automaticamente.
|
|
49
|
-
* @returns {Router} Il router con le rotte degli accessi.
|
|
50
|
-
* @author mttdev382
|
|
51
|
-
*/
|
|
52
|
-
getAccessiRouter(): Router;
|
|
53
|
-
/**
|
|
54
|
-
* Inizializza la documentazione di swagger per gli accessi.
|
|
55
|
-
* @deprecated A breve questo metodo sparirà, la libreria servirà swagger autonomamente.
|
|
56
|
-
* @author mttdev382
|
|
57
|
-
*/
|
|
58
|
-
serveSwaggerDocs(app: Application): void;
|
|
31
|
+
static forRoot(options: AccessiOptions): DynamicModule;
|
|
59
32
|
}
|
|
@@ -1,48 +1,37 @@
|
|
|
1
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 AccessiModule_1;
|
|
2
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
10
|
exports.AccessiModule = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
this.logger.info("Serving accessi router under /api/accessi...");
|
|
25
|
-
(0, SwaggerConfig_1.serveSwaggerDocs)(app);
|
|
11
|
+
const common_1 = require("@nestjs/common");
|
|
12
|
+
const AccessiController_1 = require("./Controllers/AccessiController");
|
|
13
|
+
const AuthService_1 = require("./Services/AuthService/AuthService");
|
|
14
|
+
const EmailService_1 = require("./Services/EmailService/EmailService");
|
|
15
|
+
const PermissionService_1 = require("./Services/PermissionService/PermissionService");
|
|
16
|
+
const UserService_1 = require("./Services/UserService/UserService");
|
|
17
|
+
let AccessiModule = AccessiModule_1 = class AccessiModule {
|
|
18
|
+
static forRoot(options) {
|
|
19
|
+
return {
|
|
20
|
+
module: AccessiModule_1,
|
|
21
|
+
controllers: [AccessiController_1.AccessiController],
|
|
22
|
+
providers: [
|
|
23
|
+
{ provide: 'AccessiOptions', useValue: options },
|
|
24
|
+
UserService_1.UserService,
|
|
25
|
+
AuthService_1.AuthService,
|
|
26
|
+
EmailService_1.EmailService,
|
|
27
|
+
PermissionService_1.PermissionService,
|
|
28
|
+
],
|
|
29
|
+
exports: ['AccessiOptions'],
|
|
30
|
+
};
|
|
26
31
|
}
|
|
27
|
-
|
|
28
|
-
* Ottiene il router delle rotte per gestire gli accessi.
|
|
29
|
-
*
|
|
30
|
-
* **Consiglio:** È consigliabile utilizzare questo router nel primo livello della tua applicazione (es. /api/accessi).
|
|
31
|
-
* @deprecated A breve questo metodo sparirà, la libreria viene importata automaticamente.
|
|
32
|
-
* @returns {Router} Il router con le rotte degli accessi.
|
|
33
|
-
* @author mttdev382
|
|
34
|
-
*/
|
|
35
|
-
getAccessiRouter() {
|
|
36
|
-
this.logger.info(`Importazione delle rotte di 'ACCESSI', è consigliabile utilizzarle nel primo livello della tua applicazione (es. /api/accessi).`);
|
|
37
|
-
return this.accessiRoutes.router;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Inizializza la documentazione di swagger per gli accessi.
|
|
41
|
-
* @deprecated A breve questo metodo sparirà, la libreria servirà swagger autonomamente.
|
|
42
|
-
* @author mttdev382
|
|
43
|
-
*/
|
|
44
|
-
serveSwaggerDocs(app) {
|
|
45
|
-
(0, SwaggerConfig_1.serveSwaggerDocs)(app);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
32
|
+
};
|
|
48
33
|
exports.AccessiModule = AccessiModule;
|
|
34
|
+
exports.AccessiModule = AccessiModule = AccessiModule_1 = __decorate([
|
|
35
|
+
(0, common_1.Global)(),
|
|
36
|
+
(0, common_1.Module)({})
|
|
37
|
+
], AccessiModule);
|
|
@@ -1,52 +1,29 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
deleteUser(req: Request, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
25
|
-
register(req: Request, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
26
|
-
encrypt(req: Request<{}, {}, {
|
|
27
|
-
data: string;
|
|
28
|
-
}>, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
29
|
-
decrypt(req: Request<{}, {}, {
|
|
30
|
-
data: string;
|
|
31
|
-
}>, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
32
|
-
resetAbilitazioni(req: Request<{}, {}, {
|
|
33
|
-
codiceUtente: string;
|
|
34
|
-
}>, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
35
|
-
setPassword(req: Request<{}, {}, {
|
|
1
|
+
import { Response } from 'express';
|
|
2
|
+
import { AccessiOptions } from '../AccessiModule';
|
|
3
|
+
import { AuthService } from '../Services/AuthService/AuthService';
|
|
4
|
+
import { PermissionService } from '../Services/PermissionService/PermissionService';
|
|
5
|
+
import { UserService } from '../Services/UserService/UserService';
|
|
6
|
+
export declare class AccessiController {
|
|
7
|
+
private readonly userService;
|
|
8
|
+
private readonly authService;
|
|
9
|
+
private readonly permissionService;
|
|
10
|
+
private readonly options;
|
|
11
|
+
constructor(userService: UserService, authService: AuthService, permissionService: PermissionService, options: AccessiOptions);
|
|
12
|
+
getUserByToken(token: string, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
13
|
+
login(loginDto: {
|
|
14
|
+
username: string;
|
|
15
|
+
password: string;
|
|
16
|
+
}, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
17
|
+
getUsers(res: Response): Promise<Response<any, Record<string, any>>>;
|
|
18
|
+
deleteUser(codiceUtente: string, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
19
|
+
register(request: any, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
20
|
+
encrypt(data: string, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
21
|
+
decrypt(data: string, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
22
|
+
resetAbilitazioni(codiceUtente: string, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
23
|
+
setPassword(request: {
|
|
36
24
|
codiceUtente: string;
|
|
37
25
|
nuovaPassword: string;
|
|
38
|
-
}
|
|
39
|
-
updateUtente(
|
|
40
|
-
setGdpr(
|
|
41
|
-
codiceUtente: string;
|
|
42
|
-
}>, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
43
|
-
verifyEmail(req: Request<{
|
|
44
|
-
token: string;
|
|
45
|
-
}>, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
46
|
-
requestPasswordReset(req: Request, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
47
|
-
resetPassword(req: Request<{
|
|
48
|
-
token: string;
|
|
49
|
-
}, {}, {
|
|
50
|
-
newPassword: string;
|
|
51
|
-
}>, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
26
|
+
}, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
27
|
+
updateUtente(user: any, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
28
|
+
setGdpr(codiceUtente: string, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
52
29
|
}
|
|
@@ -1,10 +1,43 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
2
18
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
19
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
20
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
21
|
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
22
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
23
|
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
8
41
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
42
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
43
|
};
|
|
@@ -20,40 +53,31 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
20
53
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
21
54
|
});
|
|
22
55
|
};
|
|
23
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
24
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
25
|
-
};
|
|
26
56
|
var AccessiController_1;
|
|
27
57
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
58
|
exports.AccessiController = void 0;
|
|
29
|
-
const
|
|
30
|
-
const
|
|
59
|
+
const common_1 = require("@nestjs/common");
|
|
60
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
61
|
+
const jwt = __importStar(require("jsonwebtoken"));
|
|
31
62
|
const Utilities_1 = require("../../Utilities");
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
* Fornisce metodi per login, registrazione, crittografia, decrittografia e gestione delle autorizzazioni utente.
|
|
36
|
-
*/
|
|
63
|
+
const AuthService_1 = require("../Services/AuthService/AuthService");
|
|
64
|
+
const PermissionService_1 = require("../Services/PermissionService/PermissionService");
|
|
65
|
+
const UserService_1 = require("../Services/UserService/UserService");
|
|
37
66
|
let AccessiController = AccessiController_1 = class AccessiController {
|
|
38
|
-
constructor(userService,
|
|
67
|
+
constructor(userService, authService, permissionService, options) {
|
|
39
68
|
this.userService = userService;
|
|
40
|
-
this.permissionService = permissionService;
|
|
41
69
|
this.authService = authService;
|
|
42
|
-
this.
|
|
43
|
-
this.
|
|
70
|
+
this.permissionService = permissionService;
|
|
71
|
+
this.options = options;
|
|
44
72
|
}
|
|
45
|
-
getUserByToken(
|
|
73
|
+
getUserByToken(token, res) {
|
|
46
74
|
return __awaiter(this, void 0, void 0, function* () {
|
|
47
75
|
try {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
// Decodifica il token JWT
|
|
53
|
-
const decoded = jsonwebtoken_1.default.verify(token, this.accessiOptions.jwtOptions.secret);
|
|
54
|
-
if (!decoded) {
|
|
76
|
+
if (!token)
|
|
77
|
+
return Utilities_1.RestUtilities.sendErrorMessage(res, 'Token non fornito', AccessiController_1.name);
|
|
78
|
+
const decoded = jwt.verify(token, this.options.jwtOptions.secret);
|
|
79
|
+
if (!decoded)
|
|
55
80
|
return Utilities_1.RestUtilities.sendUnauthorized(res);
|
|
56
|
-
}
|
|
57
81
|
return Utilities_1.RestUtilities.sendBaseResponse(res, { userData: decoded });
|
|
58
82
|
}
|
|
59
83
|
catch (error) {
|
|
@@ -61,17 +85,16 @@ let AccessiController = AccessiController_1 = class AccessiController {
|
|
|
61
85
|
}
|
|
62
86
|
});
|
|
63
87
|
}
|
|
64
|
-
login(
|
|
88
|
+
login(loginDto, res) {
|
|
65
89
|
return __awaiter(this, void 0, void 0, function* () {
|
|
66
90
|
try {
|
|
67
|
-
|
|
68
|
-
const userData = yield this.authService.login(request);
|
|
91
|
+
const userData = yield this.authService.login(loginDto);
|
|
69
92
|
if (!userData)
|
|
70
93
|
return Utilities_1.RestUtilities.sendInvalidCredentials(res);
|
|
71
94
|
userData.token = {
|
|
72
|
-
expiresIn: this.
|
|
73
|
-
value:
|
|
74
|
-
type:
|
|
95
|
+
expiresIn: this.options.jwtOptions.expiresIn,
|
|
96
|
+
value: jwt.sign({ userData }, this.options.jwtOptions.secret, { expiresIn: this.options.jwtOptions.expiresIn }),
|
|
97
|
+
type: 'Bearer',
|
|
75
98
|
};
|
|
76
99
|
return Utilities_1.RestUtilities.sendBaseResponse(res, userData);
|
|
77
100
|
}
|
|
@@ -80,7 +103,7 @@ let AccessiController = AccessiController_1 = class AccessiController {
|
|
|
80
103
|
}
|
|
81
104
|
});
|
|
82
105
|
}
|
|
83
|
-
getUsers(
|
|
106
|
+
getUsers(res) {
|
|
84
107
|
return __awaiter(this, void 0, void 0, function* () {
|
|
85
108
|
try {
|
|
86
109
|
const users = yield this.userService.getUsers();
|
|
@@ -91,38 +114,34 @@ let AccessiController = AccessiController_1 = class AccessiController {
|
|
|
91
114
|
}
|
|
92
115
|
});
|
|
93
116
|
}
|
|
94
|
-
deleteUser(
|
|
117
|
+
deleteUser(codiceUtente, res) {
|
|
95
118
|
return __awaiter(this, void 0, void 0, function* () {
|
|
96
119
|
try {
|
|
97
|
-
|
|
98
|
-
if (!codiceUtente) {
|
|
120
|
+
if (!codiceUtente)
|
|
99
121
|
throw new Error('Il campo "Codice Utente" è obbligatorio.');
|
|
100
|
-
}
|
|
101
122
|
yield this.userService.deleteUser(codiceUtente);
|
|
102
|
-
return Utilities_1.RestUtilities.sendOKMessage(res,
|
|
123
|
+
return Utilities_1.RestUtilities.sendOKMessage(res, 'L\'utente è stato eliminato con successo.');
|
|
103
124
|
}
|
|
104
125
|
catch (error) {
|
|
105
126
|
return Utilities_1.RestUtilities.sendErrorMessage(res, error);
|
|
106
127
|
}
|
|
107
128
|
});
|
|
108
129
|
}
|
|
109
|
-
register(
|
|
130
|
+
register(request, res) {
|
|
110
131
|
return __awaiter(this, void 0, void 0, function* () {
|
|
111
132
|
try {
|
|
112
|
-
let request = req.body;
|
|
113
133
|
yield this.userService.register(request);
|
|
114
|
-
return Utilities_1.RestUtilities.sendOKMessage(res,
|
|
134
|
+
return Utilities_1.RestUtilities.sendOKMessage(res, 'L\'utente è stato registrato con successo.');
|
|
115
135
|
}
|
|
116
136
|
catch (error) {
|
|
117
137
|
return Utilities_1.RestUtilities.sendErrorMessage(res, error, AccessiController_1.name);
|
|
118
138
|
}
|
|
119
139
|
});
|
|
120
140
|
}
|
|
121
|
-
encrypt(
|
|
141
|
+
encrypt(data, res) {
|
|
122
142
|
return __awaiter(this, void 0, void 0, function* () {
|
|
123
143
|
try {
|
|
124
|
-
const
|
|
125
|
-
let encryptedData = Utilities_1.CryptUtilities.encrypt(req.body.data, key);
|
|
144
|
+
const encryptedData = Utilities_1.CryptUtilities.encrypt(data, this.options.encryptionKey);
|
|
126
145
|
return Utilities_1.RestUtilities.sendBaseResponse(res, encryptedData);
|
|
127
146
|
}
|
|
128
147
|
catch (error) {
|
|
@@ -130,11 +149,10 @@ let AccessiController = AccessiController_1 = class AccessiController {
|
|
|
130
149
|
}
|
|
131
150
|
});
|
|
132
151
|
}
|
|
133
|
-
decrypt(
|
|
152
|
+
decrypt(data, res) {
|
|
134
153
|
return __awaiter(this, void 0, void 0, function* () {
|
|
135
154
|
try {
|
|
136
|
-
const
|
|
137
|
-
let decryptedData = Utilities_1.CryptUtilities.decrypt(req.body.data, key);
|
|
155
|
+
const decryptedData = Utilities_1.CryptUtilities.decrypt(data, this.options.encryptionKey);
|
|
138
156
|
return Utilities_1.RestUtilities.sendBaseResponse(res, decryptedData);
|
|
139
157
|
}
|
|
140
158
|
catch (error) {
|
|
@@ -142,78 +160,44 @@ let AccessiController = AccessiController_1 = class AccessiController {
|
|
|
142
160
|
}
|
|
143
161
|
});
|
|
144
162
|
}
|
|
145
|
-
resetAbilitazioni(
|
|
163
|
+
resetAbilitazioni(codiceUtente, res) {
|
|
146
164
|
return __awaiter(this, void 0, void 0, function* () {
|
|
147
165
|
try {
|
|
148
|
-
yield this.permissionService.resetAbilitazioni(
|
|
149
|
-
return Utilities_1.RestUtilities.sendOKMessage(res, `Le abilitazioni dell'utente ${
|
|
166
|
+
yield this.permissionService.resetAbilitazioni(codiceUtente);
|
|
167
|
+
return Utilities_1.RestUtilities.sendOKMessage(res, `Le abilitazioni dell'utente ${codiceUtente} sono state resettate con successo.`);
|
|
150
168
|
}
|
|
151
169
|
catch (error) {
|
|
152
170
|
return Utilities_1.RestUtilities.sendErrorMessage(res, error, AccessiController_1.name);
|
|
153
171
|
}
|
|
154
172
|
});
|
|
155
173
|
}
|
|
156
|
-
setPassword(
|
|
174
|
+
setPassword(request, res) {
|
|
157
175
|
return __awaiter(this, void 0, void 0, function* () {
|
|
158
176
|
try {
|
|
159
|
-
yield this.authService.setPassword(
|
|
160
|
-
return Utilities_1.RestUtilities.sendOKMessage(res, `La password dell'utente ${
|
|
177
|
+
yield this.authService.setPassword(request.codiceUtente, request.nuovaPassword);
|
|
178
|
+
return Utilities_1.RestUtilities.sendOKMessage(res, `La password dell'utente ${request.codiceUtente} è stata impostata correttamente.`);
|
|
161
179
|
}
|
|
162
180
|
catch (error) {
|
|
163
181
|
return Utilities_1.RestUtilities.sendErrorMessage(res, error, AccessiController_1.name);
|
|
164
182
|
}
|
|
165
183
|
});
|
|
166
184
|
}
|
|
167
|
-
updateUtente(
|
|
185
|
+
updateUtente(user, res) {
|
|
168
186
|
return __awaiter(this, void 0, void 0, function* () {
|
|
169
187
|
try {
|
|
170
|
-
let user = req.body;
|
|
171
188
|
yield this.userService.updateUser(user);
|
|
172
|
-
return Utilities_1.RestUtilities.sendOKMessage(res, `L'utente ${
|
|
173
|
-
}
|
|
174
|
-
catch (error) {
|
|
175
|
-
return Utilities_1.RestUtilities.sendErrorMessage(res, error, AccessiController_1.name);
|
|
176
|
-
}
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
|
-
setGdpr(req, res) {
|
|
180
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
181
|
-
try {
|
|
182
|
-
yield this.userService.setGdpr(req.body.codiceUtente);
|
|
183
|
-
return Utilities_1.RestUtilities.sendOKMessage(res, `L'utente ${req.body.codiceUtente} ha accettato il GDRP.`);
|
|
184
|
-
}
|
|
185
|
-
catch (error) {
|
|
186
|
-
return Utilities_1.RestUtilities.sendErrorMessage(res, error, AccessiController_1.name);
|
|
187
|
-
}
|
|
188
|
-
});
|
|
189
|
-
}
|
|
190
|
-
verifyEmail(req, res) {
|
|
191
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
192
|
-
try {
|
|
193
|
-
yield this.userService.verifyEmail(req.params.token);
|
|
194
|
-
return Utilities_1.RestUtilities.sendOKMessage(res, "Email verificata con successo!");
|
|
195
|
-
}
|
|
196
|
-
catch (error) {
|
|
197
|
-
return Utilities_1.RestUtilities.sendErrorMessage(res, error, AccessiController_1.name);
|
|
198
|
-
}
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
requestPasswordReset(req, res) {
|
|
202
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
203
|
-
try {
|
|
204
|
-
yield this.emailService.sendPasswordResetEmail(req.body.email, req.headers.origin);
|
|
205
|
-
return Utilities_1.RestUtilities.sendOKMessage(res, "Email di reset inviata!");
|
|
189
|
+
return Utilities_1.RestUtilities.sendOKMessage(res, `L'utente ${user.codiceUtente} è stato aggiornato con successo.`);
|
|
206
190
|
}
|
|
207
191
|
catch (error) {
|
|
208
192
|
return Utilities_1.RestUtilities.sendErrorMessage(res, error, AccessiController_1.name);
|
|
209
193
|
}
|
|
210
194
|
});
|
|
211
195
|
}
|
|
212
|
-
|
|
196
|
+
setGdpr(codiceUtente, res) {
|
|
213
197
|
return __awaiter(this, void 0, void 0, function* () {
|
|
214
198
|
try {
|
|
215
|
-
yield this.
|
|
216
|
-
return Utilities_1.RestUtilities.sendOKMessage(res,
|
|
199
|
+
yield this.userService.setGdpr(codiceUtente);
|
|
200
|
+
return Utilities_1.RestUtilities.sendOKMessage(res, `L'utente ${codiceUtente} ha accettato il GDPR.`);
|
|
217
201
|
}
|
|
218
202
|
catch (error) {
|
|
219
203
|
return Utilities_1.RestUtilities.sendErrorMessage(res, error, AccessiController_1.name);
|
|
@@ -222,12 +206,109 @@ let AccessiController = AccessiController_1 = class AccessiController {
|
|
|
222
206
|
}
|
|
223
207
|
};
|
|
224
208
|
exports.AccessiController = AccessiController;
|
|
209
|
+
__decorate([
|
|
210
|
+
(0, swagger_1.ApiOperation)({ summary: 'Recupera le informazioni utente dal token JWT' }),
|
|
211
|
+
(0, common_1.Post)('get-user-by-token'),
|
|
212
|
+
__param(0, (0, common_1.Body)('token')),
|
|
213
|
+
__param(1, (0, common_1.Res)()),
|
|
214
|
+
__metadata("design:type", Function),
|
|
215
|
+
__metadata("design:paramtypes", [String, Object]),
|
|
216
|
+
__metadata("design:returntype", Promise)
|
|
217
|
+
], AccessiController.prototype, "getUserByToken", null);
|
|
218
|
+
__decorate([
|
|
219
|
+
(0, swagger_1.ApiOperation)({ summary: 'Effettua il login' }),
|
|
220
|
+
(0, common_1.Post)('login'),
|
|
221
|
+
__param(0, (0, common_1.Body)()),
|
|
222
|
+
__param(1, (0, common_1.Res)()),
|
|
223
|
+
__metadata("design:type", Function),
|
|
224
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
225
|
+
__metadata("design:returntype", Promise)
|
|
226
|
+
], AccessiController.prototype, "login", null);
|
|
227
|
+
__decorate([
|
|
228
|
+
(0, swagger_1.ApiOperation)({ summary: 'Recupera la lista degli utenti' }),
|
|
229
|
+
(0, common_1.Get)('users'),
|
|
230
|
+
__param(0, (0, common_1.Res)()),
|
|
231
|
+
__metadata("design:type", Function),
|
|
232
|
+
__metadata("design:paramtypes", [Object]),
|
|
233
|
+
__metadata("design:returntype", Promise)
|
|
234
|
+
], AccessiController.prototype, "getUsers", null);
|
|
235
|
+
__decorate([
|
|
236
|
+
(0, swagger_1.ApiOperation)({ summary: 'Elimina un utente' }),
|
|
237
|
+
(0, common_1.Post)('delete-user'),
|
|
238
|
+
__param(0, (0, common_1.Body)('codiceUtente')),
|
|
239
|
+
__param(1, (0, common_1.Res)()),
|
|
240
|
+
__metadata("design:type", Function),
|
|
241
|
+
__metadata("design:paramtypes", [String, Object]),
|
|
242
|
+
__metadata("design:returntype", Promise)
|
|
243
|
+
], AccessiController.prototype, "deleteUser", null);
|
|
244
|
+
__decorate([
|
|
245
|
+
(0, swagger_1.ApiOperation)({ summary: 'Registra un nuovo utente' }),
|
|
246
|
+
(0, common_1.Post)('register'),
|
|
247
|
+
__param(0, (0, common_1.Body)()),
|
|
248
|
+
__param(1, (0, common_1.Res)()),
|
|
249
|
+
__metadata("design:type", Function),
|
|
250
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
251
|
+
__metadata("design:returntype", Promise)
|
|
252
|
+
], AccessiController.prototype, "register", null);
|
|
253
|
+
__decorate([
|
|
254
|
+
(0, swagger_1.ApiOperation)({ summary: 'Crittografa i dati' }),
|
|
255
|
+
(0, common_1.Post)('encrypt'),
|
|
256
|
+
__param(0, (0, common_1.Body)('data')),
|
|
257
|
+
__param(1, (0, common_1.Res)()),
|
|
258
|
+
__metadata("design:type", Function),
|
|
259
|
+
__metadata("design:paramtypes", [String, Object]),
|
|
260
|
+
__metadata("design:returntype", Promise)
|
|
261
|
+
], AccessiController.prototype, "encrypt", null);
|
|
262
|
+
__decorate([
|
|
263
|
+
(0, swagger_1.ApiOperation)({ summary: 'Decrittografa i dati' }),
|
|
264
|
+
(0, common_1.Post)('decrypt'),
|
|
265
|
+
__param(0, (0, common_1.Body)('data')),
|
|
266
|
+
__param(1, (0, common_1.Res)()),
|
|
267
|
+
__metadata("design:type", Function),
|
|
268
|
+
__metadata("design:paramtypes", [String, Object]),
|
|
269
|
+
__metadata("design:returntype", Promise)
|
|
270
|
+
], AccessiController.prototype, "decrypt", null);
|
|
271
|
+
__decorate([
|
|
272
|
+
(0, swagger_1.ApiOperation)({ summary: 'Resetta le abilitazioni di un utente' }),
|
|
273
|
+
(0, common_1.Post)('reset-abilitazioni'),
|
|
274
|
+
__param(0, (0, common_1.Body)('codiceUtente')),
|
|
275
|
+
__param(1, (0, common_1.Res)()),
|
|
276
|
+
__metadata("design:type", Function),
|
|
277
|
+
__metadata("design:paramtypes", [String, Object]),
|
|
278
|
+
__metadata("design:returntype", Promise)
|
|
279
|
+
], AccessiController.prototype, "resetAbilitazioni", null);
|
|
280
|
+
__decorate([
|
|
281
|
+
(0, swagger_1.ApiOperation)({ summary: 'Imposta una nuova password' }),
|
|
282
|
+
(0, common_1.Post)('set-password'),
|
|
283
|
+
__param(0, (0, common_1.Body)()),
|
|
284
|
+
__param(1, (0, common_1.Res)()),
|
|
285
|
+
__metadata("design:type", Function),
|
|
286
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
287
|
+
__metadata("design:returntype", Promise)
|
|
288
|
+
], AccessiController.prototype, "setPassword", null);
|
|
289
|
+
__decorate([
|
|
290
|
+
(0, swagger_1.ApiOperation)({ summary: 'Aggiorna un utente esistente' }),
|
|
291
|
+
(0, common_1.Post)('update-utente'),
|
|
292
|
+
__param(0, (0, common_1.Body)()),
|
|
293
|
+
__param(1, (0, common_1.Res)()),
|
|
294
|
+
__metadata("design:type", Function),
|
|
295
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
296
|
+
__metadata("design:returntype", Promise)
|
|
297
|
+
], AccessiController.prototype, "updateUtente", null);
|
|
298
|
+
__decorate([
|
|
299
|
+
(0, swagger_1.ApiOperation)({ summary: 'Imposta il consenso GDPR' }),
|
|
300
|
+
(0, common_1.Post)('set-gdpr'),
|
|
301
|
+
__param(0, (0, common_1.Body)('codiceUtente')),
|
|
302
|
+
__param(1, (0, common_1.Res)()),
|
|
303
|
+
__metadata("design:type", Function),
|
|
304
|
+
__metadata("design:paramtypes", [String, Object]),
|
|
305
|
+
__metadata("design:returntype", Promise)
|
|
306
|
+
], AccessiController.prototype, "setGdpr", null);
|
|
225
307
|
exports.AccessiController = AccessiController = AccessiController_1 = __decorate([
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
__param(
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
__metadata("design:paramtypes", [Object, Object, Object, Object, Object])
|
|
308
|
+
(0, swagger_1.ApiTags)('Accessi'),
|
|
309
|
+
(0, common_1.Controller)('accessi'),
|
|
310
|
+
__param(3, (0, common_1.Inject)('AccessiOptions')),
|
|
311
|
+
__metadata("design:paramtypes", [UserService_1.UserService,
|
|
312
|
+
AuthService_1.AuthService,
|
|
313
|
+
PermissionService_1.PermissionService, Object])
|
|
233
314
|
], AccessiController);
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { Application } from "express";
|
|
2
|
+
import { AccessiOptions } from "./AccessiModule";
|
|
1
3
|
export { StatoRegistrazione } from "./models/StatoRegistrazione";
|
|
2
4
|
export { AccessiModule } from "./AccessiModule";
|
|
3
5
|
export { ILoginResult } from "./Services/AuthService/IAuthService";
|
|
6
|
+
export declare function initializeAccessiModule(app: Application, options: AccessiOptions): Promise<void>;
|
|
@@ -1,7 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
2
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
12
|
exports.AccessiModule = exports.StatoRegistrazione = void 0;
|
|
13
|
+
exports.initializeAccessiModule = initializeAccessiModule;
|
|
14
|
+
const AccessiModule_1 = require("./AccessiModule");
|
|
15
|
+
const core_1 = require("@nestjs/core");
|
|
16
|
+
const platform_express_1 = require("@nestjs/platform-express");
|
|
17
|
+
const SwaggerConfig_1 = require("./swagger/SwaggerConfig");
|
|
4
18
|
var StatoRegistrazione_1 = require("./models/StatoRegistrazione");
|
|
5
19
|
Object.defineProperty(exports, "StatoRegistrazione", { enumerable: true, get: function () { return StatoRegistrazione_1.StatoRegistrazione; } });
|
|
6
|
-
var
|
|
7
|
-
Object.defineProperty(exports, "AccessiModule", { enumerable: true, get: function () { return
|
|
20
|
+
var AccessiModule_2 = require("./AccessiModule");
|
|
21
|
+
Object.defineProperty(exports, "AccessiModule", { enumerable: true, get: function () { return AccessiModule_2.AccessiModule; } });
|
|
22
|
+
function initializeAccessiModule(app, options) {
|
|
23
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
24
|
+
const nestApp = yield core_1.NestFactory.create(AccessiModule_1.AccessiModule.forRoot(options), new platform_express_1.ExpressAdapter(app));
|
|
25
|
+
yield nestApp.init();
|
|
26
|
+
// Attiva automaticamente Swagger
|
|
27
|
+
(0, SwaggerConfig_1.serveSwaggerDocs)(nestApp);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
@@ -1,34 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.serveSwaggerDocs = serveSwaggerDocs;
|
|
7
|
-
const
|
|
8
|
-
const swagger_ui_express_1 = __importDefault(require("swagger-ui-express"));
|
|
9
|
-
const path_1 = __importDefault(require("path"));
|
|
10
|
-
// Definisci la configurazione di Swagger
|
|
11
|
-
const swaggerDefinition = {
|
|
12
|
-
openapi: '3.0.0',
|
|
13
|
-
info: {
|
|
14
|
-
title: 'Accessi API',
|
|
15
|
-
version: '1.0.0',
|
|
16
|
-
description: 'Documentazione delle API per la gestione degli accessi',
|
|
17
|
-
},
|
|
18
|
-
servers: [
|
|
19
|
-
{
|
|
20
|
-
url: 'http://localhost:3000/api/accessi', // Modifica se necessario
|
|
21
|
-
},
|
|
22
|
-
],
|
|
23
|
-
};
|
|
24
|
-
const options = {
|
|
25
|
-
swaggerDefinition,
|
|
26
|
-
// Specifica i file sorgenti che contengono le annotazioni Swagger
|
|
27
|
-
apis: [path_1.default.resolve(__dirname, '../../../dist/accessi-module/**/*.js')],
|
|
28
|
-
};
|
|
29
|
-
// Funzione per esporre la documentazione Swagger tramite Express
|
|
4
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
30
5
|
function serveSwaggerDocs(app) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
6
|
+
const config = new swagger_1.DocumentBuilder()
|
|
7
|
+
.setTitle('Accessi API')
|
|
8
|
+
.setDescription('Documentazione delle API per la gestione degli accessi')
|
|
9
|
+
.setVersion('1.0')
|
|
10
|
+
.addServer('http://localhost:3000/api/accessi') // Cambia se necessario
|
|
11
|
+
.build();
|
|
12
|
+
const document = swagger_1.SwaggerModule.createDocument(app, config);
|
|
13
|
+
swagger_1.SwaggerModule.setup('/swagger/accessi', app, document);
|
|
34
14
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "emilsoftware-utilities",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.72",
|
|
4
4
|
"description": "Utilities for EmilSoftware",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -22,7 +22,13 @@
|
|
|
22
22
|
},
|
|
23
23
|
"homepage": "https://github.com/mttdev382/emilsoftware-utilities#readme",
|
|
24
24
|
"dependencies": {
|
|
25
|
+
"@nestjs/common": "^11.0.11",
|
|
26
|
+
"@nestjs/core": "^11.0.11",
|
|
27
|
+
"@nestjs/platform-express": "^11.0.11",
|
|
28
|
+
"@nestjs/swagger": "^11.0.6",
|
|
25
29
|
"axios": "^1.7.9",
|
|
30
|
+
"class-transformer": "^0.5.1",
|
|
31
|
+
"class-validator": "^0.14.1",
|
|
26
32
|
"colorette": "^2.0.20",
|
|
27
33
|
"es-node-firebird": "^1.2.6",
|
|
28
34
|
"inversify": "^6.2.2",
|
|
@@ -1,387 +0,0 @@
|
|
|
1
|
-
import { Request, Response } from "express";
|
|
2
|
-
/**
|
|
3
|
-
* Controller per la gestione degli accessi e delle operazioni correlate.
|
|
4
|
-
* Fornisce metodi per login, registrazione, crittografia, decrittografia e gestione delle autorizzazioni utente.
|
|
5
|
-
*/
|
|
6
|
-
export declare abstract class AccessiControllerBase {
|
|
7
|
-
constructor();
|
|
8
|
-
/**
|
|
9
|
-
* @swagger
|
|
10
|
-
* /get-user-by-token:
|
|
11
|
-
* post:
|
|
12
|
-
* summary: Recupera le informazioni utente dal token JWT
|
|
13
|
-
* description: Estrae e restituisce le informazioni utente decodificate da un token JWT valido.
|
|
14
|
-
* requestBody:
|
|
15
|
-
* required: true
|
|
16
|
-
* content:
|
|
17
|
-
* application/json:
|
|
18
|
-
* schema:
|
|
19
|
-
* type: object
|
|
20
|
-
* properties:
|
|
21
|
-
* token:
|
|
22
|
-
* type: string
|
|
23
|
-
* required:
|
|
24
|
-
* - token
|
|
25
|
-
* responses:
|
|
26
|
-
* 200:
|
|
27
|
-
* description: Informazioni utente recuperate con successo
|
|
28
|
-
* content:
|
|
29
|
-
* application/json:
|
|
30
|
-
* schema:
|
|
31
|
-
* type: object
|
|
32
|
-
* properties:
|
|
33
|
-
* userData:
|
|
34
|
-
* type: object
|
|
35
|
-
* 400:
|
|
36
|
-
* description: Token non valido o assente
|
|
37
|
-
* 500:
|
|
38
|
-
* description: Errore del server
|
|
39
|
-
*/
|
|
40
|
-
abstract getUserByToken(req: Request<{}, {}, {
|
|
41
|
-
token: string;
|
|
42
|
-
}>, res: Response): any;
|
|
43
|
-
/**
|
|
44
|
-
* @swagger
|
|
45
|
-
* /login:
|
|
46
|
-
* post:
|
|
47
|
-
* summary: Effettua il login di un utente
|
|
48
|
-
* description: Autentica un utente e restituisce un token JWT.
|
|
49
|
-
* requestBody:
|
|
50
|
-
* required: true
|
|
51
|
-
* content:
|
|
52
|
-
* application/json:
|
|
53
|
-
* schema:
|
|
54
|
-
* type: object
|
|
55
|
-
* properties:
|
|
56
|
-
* username:
|
|
57
|
-
* type: string
|
|
58
|
-
* password:
|
|
59
|
-
* type: string
|
|
60
|
-
* required:
|
|
61
|
-
* - username
|
|
62
|
-
* - password
|
|
63
|
-
* responses:
|
|
64
|
-
* 200:
|
|
65
|
-
* description: Login effettuato con successo
|
|
66
|
-
* content:
|
|
67
|
-
* application/json:
|
|
68
|
-
* schema:
|
|
69
|
-
* type: string
|
|
70
|
-
* example: 'jwt_token_here'
|
|
71
|
-
* 400:
|
|
72
|
-
* description: Credenziali errate
|
|
73
|
-
* 500:
|
|
74
|
-
* description: Errore del server
|
|
75
|
-
*/
|
|
76
|
-
abstract login(req: Request, res: Response): any;
|
|
77
|
-
/**
|
|
78
|
-
* @swagger
|
|
79
|
-
* /users:
|
|
80
|
-
* get:
|
|
81
|
-
* summary: Recupera la lista degli utenti
|
|
82
|
-
* description: Restituisce una lista di utenti dal sistema.
|
|
83
|
-
* responses:
|
|
84
|
-
* 200:
|
|
85
|
-
* description: Lista degli utenti recuperata con successo
|
|
86
|
-
* content:
|
|
87
|
-
* application/json:
|
|
88
|
-
* schema:
|
|
89
|
-
* type: array
|
|
90
|
-
* items:
|
|
91
|
-
* type: object
|
|
92
|
-
* properties:
|
|
93
|
-
* id:
|
|
94
|
-
* type: string
|
|
95
|
-
* description: ID univoco dell'utente
|
|
96
|
-
* name:
|
|
97
|
-
* type: string
|
|
98
|
-
* description: Nome dell'utente
|
|
99
|
-
* email:
|
|
100
|
-
* type: string
|
|
101
|
-
* description: Email dell'utente
|
|
102
|
-
* 400:
|
|
103
|
-
* description: Richiesta non valida
|
|
104
|
-
* 500:
|
|
105
|
-
* description: Errore del server
|
|
106
|
-
*/
|
|
107
|
-
abstract getUsers(req: Request, res: Response): any;
|
|
108
|
-
/**
|
|
109
|
-
* @swagger
|
|
110
|
-
* /users/{id}:
|
|
111
|
-
* delete:
|
|
112
|
-
* summary: Elimina un utente
|
|
113
|
-
* description: Elimina un utente dal sistema utilizzando il suo ID univoco.
|
|
114
|
-
* parameters:
|
|
115
|
-
* - in: path
|
|
116
|
-
* name: id
|
|
117
|
-
* required: true
|
|
118
|
-
* description: ID univoco dell'utente da eliminare
|
|
119
|
-
* schema:
|
|
120
|
-
* type: string
|
|
121
|
-
* responses:
|
|
122
|
-
* 200:
|
|
123
|
-
* description: Utente eliminato con successo
|
|
124
|
-
* 400:
|
|
125
|
-
* description: Richiesta non valida
|
|
126
|
-
* 404:
|
|
127
|
-
* description: Utente non trovato
|
|
128
|
-
* 500:
|
|
129
|
-
* description: Errore del server
|
|
130
|
-
*/
|
|
131
|
-
abstract deleteUser(req: Request, res: Response): any;
|
|
132
|
-
/**
|
|
133
|
-
* @swagger
|
|
134
|
-
* /register:
|
|
135
|
-
* post:
|
|
136
|
-
* summary: Registra un nuovo utente
|
|
137
|
-
* description: Registra un nuovo utente nel sistema.
|
|
138
|
-
* requestBody:
|
|
139
|
-
* required: true
|
|
140
|
-
* content:
|
|
141
|
-
* application/json:
|
|
142
|
-
* schema:
|
|
143
|
-
* type: object
|
|
144
|
-
* properties:
|
|
145
|
-
* username:
|
|
146
|
-
* type: string
|
|
147
|
-
* password:
|
|
148
|
-
* type: string
|
|
149
|
-
* email:
|
|
150
|
-
* type: string
|
|
151
|
-
* required:
|
|
152
|
-
* - username
|
|
153
|
-
* - password
|
|
154
|
-
* - email
|
|
155
|
-
* responses:
|
|
156
|
-
* 200:
|
|
157
|
-
* description: Utente registrato con successo
|
|
158
|
-
* 400:
|
|
159
|
-
* description: Dati di registrazione non validi
|
|
160
|
-
* 500:
|
|
161
|
-
* description: Errore del server
|
|
162
|
-
*/
|
|
163
|
-
abstract register(req: Request, res: Response): any;
|
|
164
|
-
/**
|
|
165
|
-
* @swagger
|
|
166
|
-
* /encrypt:
|
|
167
|
-
* post:
|
|
168
|
-
* summary: Crittografa i dati forniti
|
|
169
|
-
* description: Crittografa i dati passati nel corpo della richiesta.
|
|
170
|
-
* requestBody:
|
|
171
|
-
* required: true
|
|
172
|
-
* content:
|
|
173
|
-
* application/json:
|
|
174
|
-
* schema:
|
|
175
|
-
* type: object
|
|
176
|
-
* properties:
|
|
177
|
-
* data:
|
|
178
|
-
* type: string
|
|
179
|
-
* required:
|
|
180
|
-
* - data
|
|
181
|
-
* responses:
|
|
182
|
-
* 200:
|
|
183
|
-
* description: Dati crittografati con successo
|
|
184
|
-
* content:
|
|
185
|
-
* application/json:
|
|
186
|
-
* schema:
|
|
187
|
-
* type: string
|
|
188
|
-
* example: 'encrypted_data_here'
|
|
189
|
-
* 400:
|
|
190
|
-
* description: Dati non validi
|
|
191
|
-
* 500:
|
|
192
|
-
* description: Errore del server
|
|
193
|
-
*/
|
|
194
|
-
abstract encrypt(req: Request<{}, {}, {
|
|
195
|
-
data: string;
|
|
196
|
-
}>, res: Response): any;
|
|
197
|
-
/**
|
|
198
|
-
* @swagger
|
|
199
|
-
* /decrypt:
|
|
200
|
-
* post:
|
|
201
|
-
* summary: Decrittografa i dati forniti
|
|
202
|
-
* description: Decrittografa i dati passati nel corpo della richiesta.
|
|
203
|
-
* requestBody:
|
|
204
|
-
* required: true
|
|
205
|
-
* content:
|
|
206
|
-
* application/json:
|
|
207
|
-
* schema:
|
|
208
|
-
* type: object
|
|
209
|
-
* properties:
|
|
210
|
-
* data:
|
|
211
|
-
* type: string
|
|
212
|
-
* required:
|
|
213
|
-
* - data
|
|
214
|
-
* responses:
|
|
215
|
-
* 200:
|
|
216
|
-
* description: Dati decrittografati con successo
|
|
217
|
-
* content:
|
|
218
|
-
* application/json:
|
|
219
|
-
* schema:
|
|
220
|
-
* type: string
|
|
221
|
-
* example: 'decrypted_data_here'
|
|
222
|
-
* 400:
|
|
223
|
-
* description: Dati non validi
|
|
224
|
-
* 500:
|
|
225
|
-
* description: Errore del server
|
|
226
|
-
*/
|
|
227
|
-
abstract decrypt(req: Request<{}, {}, {
|
|
228
|
-
data: string;
|
|
229
|
-
}>, res: Response): any;
|
|
230
|
-
/**
|
|
231
|
-
* @swagger
|
|
232
|
-
* /reset-abilitazioni:
|
|
233
|
-
* post:
|
|
234
|
-
* summary: Resetta le abilitazioni di un utente
|
|
235
|
-
* description: Resetta le abilitazioni di un utente dato il codice utente.
|
|
236
|
-
* requestBody:
|
|
237
|
-
* required: true
|
|
238
|
-
* content:
|
|
239
|
-
* application/json:
|
|
240
|
-
* schema:
|
|
241
|
-
* type: object
|
|
242
|
-
* properties:
|
|
243
|
-
* codiceUtente:
|
|
244
|
-
* type: string
|
|
245
|
-
* required:
|
|
246
|
-
* - codiceUtente
|
|
247
|
-
* responses:
|
|
248
|
-
* 200:
|
|
249
|
-
* description: Abilitazioni resettate con successo
|
|
250
|
-
* 400:
|
|
251
|
-
* description: Codice utente non valido
|
|
252
|
-
* 500:
|
|
253
|
-
* description: Errore del server
|
|
254
|
-
*/
|
|
255
|
-
abstract resetAbilitazioni(req: Request<{}, {}, {
|
|
256
|
-
codiceUtente: string;
|
|
257
|
-
}>, res: Response): any;
|
|
258
|
-
/**
|
|
259
|
-
* @swagger
|
|
260
|
-
* /set-password:
|
|
261
|
-
* post:
|
|
262
|
-
* summary: Imposta una nuova password per un utente
|
|
263
|
-
* description: Imposta una nuova password per un utente dato il codice utente e la nuova password.
|
|
264
|
-
* requestBody:
|
|
265
|
-
* required: true
|
|
266
|
-
* content:
|
|
267
|
-
* application/json:
|
|
268
|
-
* schema:
|
|
269
|
-
* type: object
|
|
270
|
-
* properties:
|
|
271
|
-
* codiceUtente:
|
|
272
|
-
* type: string
|
|
273
|
-
* nuovaPassword:
|
|
274
|
-
* type: string
|
|
275
|
-
* required:
|
|
276
|
-
* - codiceUtente
|
|
277
|
-
* - nuovaPassword
|
|
278
|
-
* responses:
|
|
279
|
-
* 200:
|
|
280
|
-
* description: Password impostata con successo
|
|
281
|
-
* 400:
|
|
282
|
-
* description: Dati non validi
|
|
283
|
-
* 500:
|
|
284
|
-
* description: Errore del server
|
|
285
|
-
*/
|
|
286
|
-
abstract setPassword(req: Request<{}, {}, {
|
|
287
|
-
codiceUtente: string;
|
|
288
|
-
nuovaPassword: string;
|
|
289
|
-
}>, res: Response): any;
|
|
290
|
-
/**
|
|
291
|
-
* @swagger
|
|
292
|
-
* /update-utente:
|
|
293
|
-
* post:
|
|
294
|
-
* summary: Aggiorna un utente esistente.
|
|
295
|
-
* description: Questo endpoint permette di aggiornare i dati di un utente esistente.
|
|
296
|
-
* tags:
|
|
297
|
-
* - Utenti
|
|
298
|
-
* requestBody:
|
|
299
|
-
* required: true
|
|
300
|
-
* content:
|
|
301
|
-
* application/json:
|
|
302
|
-
* schema:
|
|
303
|
-
* type: object
|
|
304
|
-
* properties:
|
|
305
|
-
* codiceUtente:
|
|
306
|
-
* type: string
|
|
307
|
-
* description: Il codice identificativo dell'utente.
|
|
308
|
-
* example: "U12345"
|
|
309
|
-
* campo1:
|
|
310
|
-
* type: string
|
|
311
|
-
* description: Primo campo fittizio dell'utente da aggiornare.
|
|
312
|
-
* example: "NuovoValore1"
|
|
313
|
-
* campo2:
|
|
314
|
-
* type: string
|
|
315
|
-
* description: Secondo campo fittizio dell'utente da aggiornare.
|
|
316
|
-
* example: "NuovoValore2"
|
|
317
|
-
* responses:
|
|
318
|
-
* 200:
|
|
319
|
-
* description: Utente aggiornato con successo.
|
|
320
|
-
* content:
|
|
321
|
-
* application/json:
|
|
322
|
-
* schema:
|
|
323
|
-
* type: object
|
|
324
|
-
* properties:
|
|
325
|
-
* message:
|
|
326
|
-
* type: string
|
|
327
|
-
* example: "Utente U12345 aggiornato con successo."
|
|
328
|
-
* 400:
|
|
329
|
-
* description: Errore di validazione o richiesta non valida.
|
|
330
|
-
* content:
|
|
331
|
-
* application/json:
|
|
332
|
-
* schema:
|
|
333
|
-
* type: object
|
|
334
|
-
* properties:
|
|
335
|
-
* error:
|
|
336
|
-
* type: string
|
|
337
|
-
* example: "Impossibile aggiornare senza codice utente."
|
|
338
|
-
* 500:
|
|
339
|
-
* description: Errore interno del server.
|
|
340
|
-
* content:
|
|
341
|
-
* application/json:
|
|
342
|
-
* schema:
|
|
343
|
-
* type: object
|
|
344
|
-
* properties:
|
|
345
|
-
* error:
|
|
346
|
-
* type: string
|
|
347
|
-
* example: "Errore interno del server."
|
|
348
|
-
*/
|
|
349
|
-
abstract updateUtente(req: Request, res: Response): any;
|
|
350
|
-
/**
|
|
351
|
-
* @swagger
|
|
352
|
-
* /set-gdpr:
|
|
353
|
-
* post:
|
|
354
|
-
* summary: Imposta il consenso GDPR per un utente
|
|
355
|
-
* description: Imposta il consenso GDPR per un utente dato il codice utente.
|
|
356
|
-
* requestBody:
|
|
357
|
-
* required: true
|
|
358
|
-
* content:
|
|
359
|
-
* application/json:
|
|
360
|
-
* schema:
|
|
361
|
-
* type: object
|
|
362
|
-
* properties:
|
|
363
|
-
* codiceUtente:
|
|
364
|
-
* type: string
|
|
365
|
-
* required:
|
|
366
|
-
* - codiceUtente
|
|
367
|
-
* responses:
|
|
368
|
-
* 200:
|
|
369
|
-
* description: GDPR accettato con successo
|
|
370
|
-
* 400:
|
|
371
|
-
* description: Codice utente non valido
|
|
372
|
-
* 500:
|
|
373
|
-
* description: Errore del server
|
|
374
|
-
*/
|
|
375
|
-
abstract setGdpr(req: Request<{}, {}, {
|
|
376
|
-
codiceUtente: string;
|
|
377
|
-
}>, res: Response): any;
|
|
378
|
-
abstract verifyEmail(req: Request<{
|
|
379
|
-
token: string;
|
|
380
|
-
}>, res: Response): any;
|
|
381
|
-
abstract requestPasswordReset(req: Request, res: Response): any;
|
|
382
|
-
abstract resetPassword(req: Request<{
|
|
383
|
-
token: string;
|
|
384
|
-
}, {}, {
|
|
385
|
-
newPassword: string;
|
|
386
|
-
}>, res: Response): any;
|
|
387
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AccessiControllerBase = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Controller per la gestione degli accessi e delle operazioni correlate.
|
|
6
|
-
* Fornisce metodi per login, registrazione, crittografia, decrittografia e gestione delle autorizzazioni utente.
|
|
7
|
-
*/
|
|
8
|
-
class AccessiControllerBase {
|
|
9
|
-
constructor() { }
|
|
10
|
-
}
|
|
11
|
-
exports.AccessiControllerBase = AccessiControllerBase;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { AccessiController } from "../Controllers/AccessiController";
|
|
2
|
-
import { Router } from "express";
|
|
3
|
-
import { IAccessiRoutes } from "../IAccessiRoutes";
|
|
4
|
-
export declare class AccessiRoutes implements IAccessiRoutes {
|
|
5
|
-
private accessiController;
|
|
6
|
-
private logger;
|
|
7
|
-
router: Router;
|
|
8
|
-
constructor(accessiController: AccessiController);
|
|
9
|
-
initializeRoutes(): void;
|
|
10
|
-
}
|
|
@@ -1,55 +0,0 @@
|
|
|
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
|
-
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
-
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
-
};
|
|
14
|
-
var AccessiRoutes_1;
|
|
15
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
-
exports.AccessiRoutes = void 0;
|
|
17
|
-
const inversify_1 = require("inversify");
|
|
18
|
-
const Logger_1 = require("../../Logger");
|
|
19
|
-
const AccessiController_1 = require("../Controllers/AccessiController");
|
|
20
|
-
const express_1 = require("express");
|
|
21
|
-
let AccessiRoutes = AccessiRoutes_1 = class AccessiRoutes {
|
|
22
|
-
constructor(accessiController) {
|
|
23
|
-
this.accessiController = accessiController;
|
|
24
|
-
this.logger = new Logger_1.Logger(AccessiRoutes_1.name);
|
|
25
|
-
this.router = (0, express_1.Router)();
|
|
26
|
-
this.initializeRoutes();
|
|
27
|
-
}
|
|
28
|
-
initializeRoutes() {
|
|
29
|
-
try {
|
|
30
|
-
this.router.post(`/get-user-by-token`, this.accessiController.getUserByToken.bind(this.accessiController));
|
|
31
|
-
this.router.post(`/login`, this.accessiController.login.bind(this.accessiController));
|
|
32
|
-
this.router.post(`/get-users`, this.accessiController.getUsers.bind(this.accessiController));
|
|
33
|
-
this.router.post(`/encrypt`, this.accessiController.encrypt.bind(this.accessiController));
|
|
34
|
-
this.router.post(`/decrypt`, this.accessiController.decrypt.bind(this.accessiController));
|
|
35
|
-
this.router.post(`/set-password`, this.accessiController.setPassword.bind(this.accessiController));
|
|
36
|
-
this.router.post(`/update-utente`, this.accessiController.updateUtente.bind(this.accessiController));
|
|
37
|
-
this.router.post(`/delete-utente`, this.accessiController.deleteUser.bind(this.accessiController));
|
|
38
|
-
this.router.post(`/register`, this.accessiController.register.bind(this.accessiController));
|
|
39
|
-
this.router.post(`/set-gdpr`, this.accessiController.setGdpr.bind(this.accessiController));
|
|
40
|
-
this.router.post(`/reset-abilitazioni`, this.accessiController.resetAbilitazioni.bind(this.accessiController));
|
|
41
|
-
this.router.get('/verify-email/:token', this.accessiController.verifyEmail.bind(this.accessiController));
|
|
42
|
-
this.router.post('/reset-password', this.accessiController.requestPasswordReset.bind(this.accessiController));
|
|
43
|
-
this.router.post('/reset-password/:token', this.accessiController.resetPassword.bind(this.accessiController));
|
|
44
|
-
}
|
|
45
|
-
catch (error) {
|
|
46
|
-
this.logger.error("Si è verificato un errore:", error);
|
|
47
|
-
throw error;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
exports.AccessiRoutes = AccessiRoutes;
|
|
52
|
-
exports.AccessiRoutes = AccessiRoutes = AccessiRoutes_1 = __decorate([
|
|
53
|
-
__param(0, (0, inversify_1.inject)("AccessiControllerBase")),
|
|
54
|
-
__metadata("design:paramtypes", [AccessiController_1.AccessiController])
|
|
55
|
-
], AccessiRoutes);
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.container = void 0;
|
|
4
|
-
const inversify_1 = require("inversify");
|
|
5
|
-
const UserService_1 = require("./Services/UserService/UserService");
|
|
6
|
-
const AuthService_1 = require("./Services/AuthService/AuthService");
|
|
7
|
-
const PermissionService_1 = require("./Services/PermissionService/PermissionService");
|
|
8
|
-
const EmailService_1 = require("./Services/EmailService/EmailService");
|
|
9
|
-
const AccessiController_1 = require("./Controllers/AccessiController");
|
|
10
|
-
const AccessiRoutes_1 = require("./Routes/AccessiRoutes");
|
|
11
|
-
const AccessiControllerBase_1 = require("./Controllers/AccessiControllerBase");
|
|
12
|
-
const container = new inversify_1.Container({ defaultScope: "Singleton" });
|
|
13
|
-
exports.container = container;
|
|
14
|
-
console.log("UserService:", UserService_1.UserService);
|
|
15
|
-
console.log("AuthService:", AuthService_1.AuthService);
|
|
16
|
-
console.log("PermissionService:", PermissionService_1.PermissionService);
|
|
17
|
-
console.log("EmailService:", EmailService_1.EmailService);
|
|
18
|
-
console.log("AccessiController:", AccessiController_1.AccessiController);
|
|
19
|
-
console.log("AccessiControllerBase:", AccessiControllerBase_1.AccessiControllerBase);
|
|
20
|
-
if (!UserService_1.UserService ||
|
|
21
|
-
!AuthService_1.AuthService ||
|
|
22
|
-
!PermissionService_1.PermissionService ||
|
|
23
|
-
!EmailService_1.EmailService ||
|
|
24
|
-
!AccessiController_1.AccessiController ||
|
|
25
|
-
!AccessiRoutes_1.AccessiRoutes ||
|
|
26
|
-
!AccessiControllerBase_1.AccessiControllerBase) {
|
|
27
|
-
throw new Error("ERRORE: Una o più dipendenze non sono state importate correttamente!");
|
|
28
|
-
}
|
|
29
|
-
const accessiOptions = {
|
|
30
|
-
databaseOptions: {},
|
|
31
|
-
mockDemoUser: false,
|
|
32
|
-
encryptionKey: "",
|
|
33
|
-
jwtOptions: { secret: "", expiresIn: "1h" },
|
|
34
|
-
emailOptions: {
|
|
35
|
-
auth: {
|
|
36
|
-
user: "",
|
|
37
|
-
pass: ""
|
|
38
|
-
},
|
|
39
|
-
from: "",
|
|
40
|
-
host: "",
|
|
41
|
-
port: 0,
|
|
42
|
-
secure: false
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
console.log("AccessiOptions inizializzato correttamente:", accessiOptions);
|
|
46
|
-
if (container.isBound("AccessiOptions")) {
|
|
47
|
-
container.rebind("AccessiOptions").toConstantValue(accessiOptions);
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
container.bind("AccessiOptions").toConstantValue(accessiOptions);
|
|
51
|
-
}
|
|
52
|
-
console.log("Registrazione delle dipendenze...");
|
|
53
|
-
console.log("Binding IUserService...");
|
|
54
|
-
container.bind("IUserService").to(UserService_1.UserService);
|
|
55
|
-
console.log("Binding IAuthService...");
|
|
56
|
-
container.bind("IAuthService").to(AuthService_1.AuthService);
|
|
57
|
-
console.log("Binding IPermissionService...");
|
|
58
|
-
container.bind("IPermissionService").to(PermissionService_1.PermissionService);
|
|
59
|
-
console.log("Binding IEmailService...");
|
|
60
|
-
container.bind("IEmailService").to(EmailService_1.EmailService);
|
|
61
|
-
console.log("Binding AccessiControllerBase...");
|
|
62
|
-
container.bind("AccessiControllerBase").to(AccessiController_1.AccessiController);
|
|
63
|
-
console.log("Binding AccessiRoutes...");
|
|
64
|
-
container.bind("IAccessiRoutes").to(AccessiRoutes_1.AccessiRoutes);
|
|
65
|
-
console.log("Tutte le dipendenze sono state registrate correttamente!");
|