emilsoftware-utilities 1.3.69 → 1.3.71

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.
@@ -14,6 +14,7 @@ export interface EmailOptions {
14
14
  host: string;
15
15
  port: number;
16
16
  secure: boolean;
17
+ from: string;
17
18
  auth: {
18
19
  user: string;
19
20
  pass: string;
@@ -39,18 +40,19 @@ export declare class AccessiModule {
39
40
  * @author mttdev382
40
41
 
41
42
  */
42
- constructor(options: AccessiOptions);
43
+ constructor(app: Application, options: AccessiOptions);
43
44
  /**
44
45
  * Ottiene il router delle rotte per gestire gli accessi.
45
46
  *
46
47
  * **Consiglio:** È consigliabile utilizzare questo router nel primo livello della tua applicazione (es. /api/accessi).
47
- *
48
+ * @deprecated A breve questo metodo sparirà, la libreria viene importata automaticamente.
48
49
  * @returns {Router} Il router con le rotte degli accessi.
49
50
  * @author mttdev382
50
51
  */
51
52
  getAccessiRouter(): Router;
52
53
  /**
53
54
  * Inizializza la documentazione di swagger per gli accessi.
55
+ * @deprecated A breve questo metodo sparirà, la libreria servirà swagger autonomamente.
54
56
  * @author mttdev382
55
57
  */
56
58
  serveSwaggerDocs(app: Application): void;
@@ -14,18 +14,21 @@ class AccessiModule {
14
14
  * @author mttdev382
15
15
 
16
16
  */
17
- constructor(options) {
17
+ constructor(app, options) {
18
18
  this.options = options;
19
19
  this.logger = new Logger_1.Logger(AccessiModule.name);
20
20
  // Configura le opzioni di AccessiModule dentro il container DI
21
21
  inversify_config_1.container.rebind("AccessiOptions").toConstantValue(this.options);
22
22
  this.accessiRoutes = inversify_config_1.container.get("IAccessiRoutes");
23
+ app.use("/api/accessi", this.getAccessiRouter());
24
+ this.logger.info("Serving accessi router under /api/accessi...");
25
+ (0, SwaggerConfig_1.serveSwaggerDocs)(app);
23
26
  }
24
27
  /**
25
28
  * Ottiene il router delle rotte per gestire gli accessi.
26
29
  *
27
30
  * **Consiglio:** È consigliabile utilizzare questo router nel primo livello della tua applicazione (es. /api/accessi).
28
- *
31
+ * @deprecated A breve questo metodo sparirà, la libreria viene importata automaticamente.
29
32
  * @returns {Router} Il router con le rotte degli accessi.
30
33
  * @author mttdev382
31
34
  */
@@ -35,6 +38,7 @@ class AccessiModule {
35
38
  }
36
39
  /**
37
40
  * Inizializza la documentazione di swagger per gli accessi.
41
+ * @deprecated A breve questo metodo sparirà, la libreria servirà swagger autonomamente.
38
42
  * @author mttdev382
39
43
  */
40
44
  serveSwaggerDocs(app) {
@@ -1,9 +1,10 @@
1
1
  import { Request, Response } from "express";
2
- import { IAuthService } from "./Services/AuthService/IAuthService";
3
- import { IEmailService } from "./Services/EmailService/IEmailService";
4
- import { IPermissionService } from "./Services/PermissionService/IPermissionService";
5
- import { IUserService } from "./Services/UserService/IUserService";
2
+ import { IAuthService } from "../Services/AuthService/IAuthService";
3
+ import { IEmailService } from "../Services/EmailService/IEmailService";
4
+ import { IPermissionService } from "../Services/PermissionService/IPermissionService";
5
+ import { IUserService } from "../Services/UserService/IUserService";
6
6
  import { AccessiControllerBase } from "./AccessiControllerBase";
7
+ import { AccessiOptions } from "../AccessiModule";
7
8
  /**
8
9
  * Controller per la gestione degli accessi e delle operazioni correlate.
9
10
  * Fornisce metodi per login, registrazione, crittografia, decrittografia e gestione delle autorizzazioni utente.
@@ -11,9 +12,10 @@ import { AccessiControllerBase } from "./AccessiControllerBase";
11
12
  export declare class AccessiController implements AccessiControllerBase {
12
13
  private userService;
13
14
  private permissionService;
14
- private emailService;
15
15
  private authService;
16
- constructor(userService: IUserService, permissionService: IPermissionService, emailService: IEmailService, authService: IAuthService);
16
+ private emailService;
17
+ private accessiOptions;
18
+ constructor(userService: IUserService, permissionService: IPermissionService, authService: IAuthService, emailService: IEmailService, accessiOptions: AccessiOptions);
17
19
  getUserByToken(req: Request<{}, {}, {
18
20
  token: string;
19
21
  }>, res: Response): Promise<Response<any, Record<string, any>>>;
@@ -38,4 +40,13 @@ export declare class AccessiController implements AccessiControllerBase {
38
40
  setGdpr(req: Request<{}, {}, {
39
41
  codiceUtente: string;
40
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>>>;
41
52
  }
@@ -27,19 +27,20 @@ var AccessiController_1;
27
27
  Object.defineProperty(exports, "__esModule", { value: true });
28
28
  exports.AccessiController = void 0;
29
29
  const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
30
- const autobind_1 = require("../autobind");
31
- const Utilities_1 = require("../Utilities");
30
+ const autobind_1 = require("../../autobind");
31
+ const Utilities_1 = require("../../Utilities");
32
32
  const inversify_1 = require("inversify");
33
33
  /**
34
34
  * Controller per la gestione degli accessi e delle operazioni correlate.
35
35
  * Fornisce metodi per login, registrazione, crittografia, decrittografia e gestione delle autorizzazioni utente.
36
36
  */
37
37
  let AccessiController = AccessiController_1 = class AccessiController {
38
- constructor(userService, permissionService, emailService, authService) {
38
+ constructor(userService, permissionService, authService, emailService, accessiOptions) {
39
39
  this.userService = userService;
40
40
  this.permissionService = permissionService;
41
- this.emailService = emailService;
42
41
  this.authService = authService;
42
+ this.emailService = emailService;
43
+ this.accessiOptions = accessiOptions;
43
44
  }
44
45
  getUserByToken(req, res) {
45
46
  return __awaiter(this, void 0, void 0, function* () {
@@ -48,9 +49,8 @@ let AccessiController = AccessiController_1 = class AccessiController {
48
49
  if (!token) {
49
50
  return Utilities_1.RestUtilities.sendErrorMessage(res, "Token non fornito", AccessiController_1.name);
50
51
  }
51
- const jwtOptions = this.authService.getOptions().jwtOptions;
52
52
  // Decodifica il token JWT
53
- const decoded = jsonwebtoken_1.default.verify(token, jwtOptions.secret);
53
+ const decoded = jsonwebtoken_1.default.verify(token, this.accessiOptions.jwtOptions.secret);
54
54
  if (!decoded) {
55
55
  return Utilities_1.RestUtilities.sendUnauthorized(res);
56
56
  }
@@ -68,10 +68,9 @@ let AccessiController = AccessiController_1 = class AccessiController {
68
68
  const userData = yield this.authService.login(request);
69
69
  if (!userData)
70
70
  return Utilities_1.RestUtilities.sendInvalidCredentials(res);
71
- const jwtOptions = this.authService.getOptions().jwtOptions;
72
71
  userData.token = {
73
- expiresIn: jwtOptions.expiresIn,
74
- value: jsonwebtoken_1.default.sign({ userData }, jwtOptions.secret, { expiresIn: jwtOptions.expiresIn }),
72
+ expiresIn: this.accessiOptions.jwtOptions.expiresIn,
73
+ value: jsonwebtoken_1.default.sign({ userData }, this.accessiOptions.jwtOptions.secret, { expiresIn: this.accessiOptions.jwtOptions.expiresIn }),
75
74
  type: "Bearer"
76
75
  };
77
76
  return Utilities_1.RestUtilities.sendBaseResponse(res, userData);
@@ -122,7 +121,7 @@ let AccessiController = AccessiController_1 = class AccessiController {
122
121
  encrypt(req, res) {
123
122
  return __awaiter(this, void 0, void 0, function* () {
124
123
  try {
125
- const key = this.authService.getOptions().encryptionKey;
124
+ const key = this.accessiOptions.encryptionKey;
126
125
  let encryptedData = Utilities_1.CryptUtilities.encrypt(req.body.data, key);
127
126
  return Utilities_1.RestUtilities.sendBaseResponse(res, encryptedData);
128
127
  }
@@ -134,7 +133,7 @@ let AccessiController = AccessiController_1 = class AccessiController {
134
133
  decrypt(req, res) {
135
134
  return __awaiter(this, void 0, void 0, function* () {
136
135
  try {
137
- const key = this.authService.getOptions().encryptionKey;
136
+ const key = this.accessiOptions.encryptionKey;
138
137
  let decryptedData = Utilities_1.CryptUtilities.decrypt(req.body.data, key);
139
138
  return Utilities_1.RestUtilities.sendBaseResponse(res, decryptedData);
140
139
  }
@@ -188,13 +187,47 @@ let AccessiController = AccessiController_1 = class AccessiController {
188
187
  }
189
188
  });
190
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!");
206
+ }
207
+ catch (error) {
208
+ return Utilities_1.RestUtilities.sendErrorMessage(res, error, AccessiController_1.name);
209
+ }
210
+ });
211
+ }
212
+ resetPassword(req, res) {
213
+ return __awaiter(this, void 0, void 0, function* () {
214
+ try {
215
+ yield this.authService.resetPassword(req.params.token, req.body.newPassword);
216
+ return Utilities_1.RestUtilities.sendOKMessage(res, "Password aggiornata con successo!");
217
+ }
218
+ catch (error) {
219
+ return Utilities_1.RestUtilities.sendErrorMessage(res, error, AccessiController_1.name);
220
+ }
221
+ });
222
+ }
191
223
  };
192
224
  exports.AccessiController = AccessiController;
193
225
  exports.AccessiController = AccessiController = AccessiController_1 = __decorate([
194
226
  autobind_1.autobind,
195
227
  __param(0, (0, inversify_1.inject)("IUserService")),
196
228
  __param(1, (0, inversify_1.inject)("IPermissionService")),
197
- __param(2, (0, inversify_1.inject)("IEmailService")),
198
- __param(3, (0, inversify_1.inject)("IAuthService")),
199
- __metadata("design:paramtypes", [Object, Object, Object, Object])
229
+ __param(2, (0, inversify_1.inject)("IAuthService")),
230
+ __param(3, (0, inversify_1.inject)("IEmailService")),
231
+ __param(4, (0, inversify_1.inject)("AccessiOptions")),
232
+ __metadata("design:paramtypes", [Object, Object, Object, Object, Object])
200
233
  ], AccessiController);
@@ -375,4 +375,13 @@ export declare abstract class AccessiControllerBase {
375
375
  abstract setGdpr(req: Request<{}, {}, {
376
376
  codiceUtente: string;
377
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;
378
387
  }
@@ -1,6 +1,6 @@
1
- import { AccessiController } from "./AccessiController";
1
+ import { AccessiController } from "../Controllers/AccessiController";
2
2
  import { Router } from "express";
3
- import { IAccessiRoutes } from "./IAccessiRoutes";
3
+ import { IAccessiRoutes } from "../IAccessiRoutes";
4
4
  export declare class AccessiRoutes implements IAccessiRoutes {
5
5
  private accessiController;
6
6
  private logger;
@@ -15,8 +15,8 @@ var AccessiRoutes_1;
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.AccessiRoutes = void 0;
17
17
  const inversify_1 = require("inversify");
18
- const Logger_1 = require("../Logger");
19
- const AccessiController_1 = require("./AccessiController");
18
+ const Logger_1 = require("../../Logger");
19
+ const AccessiController_1 = require("../Controllers/AccessiController");
20
20
  const express_1 = require("express");
21
21
  let AccessiRoutes = AccessiRoutes_1 = class AccessiRoutes {
22
22
  constructor(accessiController) {
@@ -38,6 +38,9 @@ let AccessiRoutes = AccessiRoutes_1 = class AccessiRoutes {
38
38
  this.router.post(`/register`, this.accessiController.register.bind(this.accessiController));
39
39
  this.router.post(`/set-gdpr`, this.accessiController.setGdpr.bind(this.accessiController));
40
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));
41
44
  }
42
45
  catch (error) {
43
46
  this.logger.error("Si è verificato un errore:", error);
@@ -7,10 +7,10 @@ export declare class AuthService implements IAuthService {
7
7
  private permissionService;
8
8
  private accessiOptions;
9
9
  constructor(userService: IUserService, permissionService: IPermissionService, accessiOptions: AccessiOptions);
10
- getOptions(): AccessiOptions;
11
10
  login(request: LoginRequest): Promise<ILoginResult>;
12
11
  setPassword(codiceUtente: string, nuovaPassword: string): Promise<any>;
13
12
  verifyPassword(codiceUtente: string, passwordCifrata: string): Promise<boolean>;
14
13
  getAdminUser(): ILoginResult;
15
14
  getDemoUser(): ILoginResult;
15
+ resetPassword(token: string, newPassword: string): Promise<void>;
16
16
  }
@@ -32,9 +32,6 @@ let AuthService = class AuthService {
32
32
  this.permissionService = permissionService;
33
33
  this.accessiOptions = accessiOptions;
34
34
  }
35
- getOptions() {
36
- return this.accessiOptions;
37
- }
38
35
  login(request) {
39
36
  return __awaiter(this, void 0, void 0, function* () {
40
37
  if (this.accessiOptions.mockDemoUser && request.username.toLowerCase() === "demo")
@@ -129,6 +126,25 @@ let AuthService = class AuthService {
129
126
  abilitazioni: []
130
127
  };
131
128
  }
129
+ resetPassword(token, newPassword) {
130
+ return __awaiter(this, void 0, void 0, function* () {
131
+ try {
132
+ // Controlliamo se il token esiste
133
+ const result = yield Orm_1.Orm.query({}, "SELECT CODUTE FROM UTENTI WHERE KEYREG = ?", [token]);
134
+ if (result.length === 0) {
135
+ throw new Error("Token non valido o già usato.");
136
+ }
137
+ // Hashiamo la nuova password
138
+ const hashedPassword = Utilities_1.CryptUtilities.encrypt(newPassword, this.accessiOptions.encryptionKey);
139
+ // Aggiorniamo la password e rimuoviamo il token di reset
140
+ yield Orm_1.Orm.query({}, "UPDATE UTENTI SET PASSWORD = ?, KEYREG = NULL WHERE CODUTE = ?", [hashedPassword, result[0].CODUTE]);
141
+ }
142
+ catch (error) {
143
+ console.error("Errore nel reset della password:", error);
144
+ throw new Error("Errore durante il reset della password.");
145
+ }
146
+ });
147
+ }
132
148
  };
133
149
  exports.AuthService = AuthService;
134
150
  exports.AuthService = AuthService = __decorate([
@@ -1,4 +1,3 @@
1
- import { AccessiOptions } from "../../AccessiModule";
2
1
  import { IAbilitazioneMenu, IFiltriUtente, IUser } from "../UserService/IUserService";
3
2
  export interface ILoginResult {
4
3
  utente: IUser;
@@ -18,12 +17,6 @@ export interface LoginRequest {
18
17
  * Interfaccia per la gestione dell'autenticazione.
19
18
  */
20
19
  export interface IAuthService {
21
- /**
22
- * Restituisce la configurazione delle opzioni di accesso.
23
- *
24
- * @returns {AccessiOptions} - Oggetto contenente le opzioni di configurazione per l'autenticazione.
25
- */
26
- getOptions(): AccessiOptions;
27
20
  /**
28
21
  * Effettua il login dell'utente.
29
22
  * @param {LoginRequest} request - Richiesta contenente username e password.
@@ -59,4 +52,13 @@ export interface IAuthService {
59
52
  * @throws {Error} Se la query fallisce o si verifica un problema durante l'esecuzione.
60
53
  */
61
54
  verifyPassword(codiceUtente: string, passwordCifrata: string): Promise<boolean>;
55
+ /**
56
+ * Resetta la password di un utente utilizzando un token univoco.
57
+ *
58
+ * @param {string} token - Il token di reset ricevuto via email.
59
+ * @param {string} newPassword - La nuova password scelta dall'utente.
60
+ * @returns {Promise<void>} - Nessun valore di ritorno se il reset ha successo.
61
+ * @throws {Error} - Se il token è invalido o già usato, o se si verifica un errore nel database.
62
+ */
63
+ resetPassword(token: string, newPassword: string): Promise<void>;
62
64
  }
@@ -3,8 +3,8 @@ import { IEmailService } from './IEmailService';
3
3
  export declare class EmailService implements IEmailService {
4
4
  private accessiOptions;
5
5
  constructor(accessiOptions: AccessiOptions);
6
- sendPasswordResetEmail(email: string, resetToken: string, baseUrl: string): Promise<void>;
7
6
  sendAccountUpdateEmail(email: string, message: string): Promise<void>;
8
7
  private transporter;
8
+ sendPasswordResetEmail(email: string, baseUrl: string): Promise<void>;
9
9
  sendVerificationEmail(email: string, codiceUtente: string, baseUrl: string): Promise<void>;
10
10
  }
@@ -34,12 +34,34 @@ let EmailService = class EmailService {
34
34
  this.accessiOptions = accessiOptions;
35
35
  this.transporter = nodemailer_1.default.createTransport(this.accessiOptions.emailOptions);
36
36
  }
37
- sendPasswordResetEmail(email, resetToken, baseUrl) {
38
- throw new Error('Method not implemented.');
39
- }
40
37
  sendAccountUpdateEmail(email, message) {
41
38
  throw new Error('Method not implemented.');
42
39
  }
40
+ sendPasswordResetEmail(email, baseUrl) {
41
+ return __awaiter(this, void 0, void 0, function* () {
42
+ try {
43
+ const resetToken = (0, uuid_1.v4)(); // Generiamo un nuovo token unico
44
+ // Aggiorna il campo keyReg nel database
45
+ const result = yield Orm_1.Orm.query({}, "UPDATE UTENTI SET KEYREG = ? WHERE USRNAME = ? RETURNING CODUTE", [resetToken, email]);
46
+ if (result.length === 0) {
47
+ throw new Error("Email non trovata.");
48
+ }
49
+ const resetUrl = `${baseUrl}/reset-password/${resetToken}`;
50
+ const mailOptions = {
51
+ from: this.accessiOptions.emailOptions.from,
52
+ to: email,
53
+ subject: "Reset della tua password",
54
+ text: `Clicca sul seguente link per resettare la tua password: ${resetUrl}`,
55
+ html: `<p>Clicca sul seguente link per resettare la tua password:</p><a href="${resetUrl}">${resetUrl}</a>`,
56
+ };
57
+ yield this.transporter.sendMail(mailOptions);
58
+ }
59
+ catch (error) {
60
+ console.error("Errore nell'invio dell'email di reset password:", error);
61
+ throw new Error("Errore durante l'invio dell'email di reset password.");
62
+ }
63
+ });
64
+ }
43
65
  sendVerificationEmail(email, codiceUtente, baseUrl) {
44
66
  return __awaiter(this, void 0, void 0, function* () {
45
67
  try {
@@ -18,7 +18,7 @@ export interface IEmailService {
18
18
  * @returns {Promise<void>} Una Promise che si risolve al completamento dell'invio.
19
19
  * @throws {Error} Se l'invio dell'email fallisce.
20
20
  */
21
- sendPasswordResetEmail(email: string, resetToken: string, baseUrl: string): Promise<void>;
21
+ sendPasswordResetEmail(email: string, baseUrl: string): Promise<void>;
22
22
  /**
23
23
  * Invia un'email di conferma per la modifica dell'account o di altri dettagli.
24
24
  *
@@ -107,4 +107,12 @@ export interface IUserService {
107
107
  * @throws {Error} Se la query fallisce o si verifica un problema durante l'esecuzione.
108
108
  */
109
109
  getUserFilters(codiceUtente: string): Promise<IFiltriUtente[]>;
110
+ /**
111
+ * Verifica l'email di un utente utilizzando un token univoco.
112
+ *
113
+ * @param {string} token - Il token di verifica (`keyReg`) ricevuto via email.
114
+ * @returns {Promise<void>} - Nessun valore di ritorno se la verifica ha successo.
115
+ * @throws {Error} - Se il token è invalido o già usato, o se si verifica un errore nel database.
116
+ */
117
+ verifyEmail(token: string): Promise<void>;
110
118
  }
@@ -17,4 +17,5 @@ export declare class UserService implements IUserService {
17
17
  deleteUser(codiceCliente: string): Promise<void>;
18
18
  setGdpr(codiceUtente: string): Promise<any>;
19
19
  setStatoRegistrazione(statoRegistrazione: StatoRegistrazione, codiceUtente: string): Promise<any>;
20
+ verifyEmail(token: string): Promise<void>;
20
21
  }
@@ -210,6 +210,23 @@ let UserService = class UserService {
210
210
  }
211
211
  });
212
212
  }
213
+ verifyEmail(token) {
214
+ return __awaiter(this, void 0, void 0, function* () {
215
+ try {
216
+ // Controlliamo se il token esiste
217
+ const result = yield Orm_1.Orm.query({}, "SELECT CODUTE FROM UTENTI WHERE KEYREG = ?", [token]);
218
+ if (result.length === 0) {
219
+ throw new Error("Token non valido o già usato.");
220
+ }
221
+ // Attiviamo l'account e rimuoviamo il token
222
+ yield Orm_1.Orm.query({}, "UPDATE UTENTI SET STAREG = ?, KEYREG = NULL WHERE CODUTE = ?", [StatoRegistrazione_1.StatoRegistrazione.CONF, result[0].CODUTE]);
223
+ }
224
+ catch (error) {
225
+ console.error("Errore nella verifica email:", error);
226
+ throw new Error("Errore durante la verifica dell'email.");
227
+ }
228
+ });
229
+ }
213
230
  };
214
231
  exports.UserService = UserService;
215
232
  exports.UserService = UserService = __decorate([
@@ -6,9 +6,9 @@ const UserService_1 = require("./Services/UserService/UserService");
6
6
  const AuthService_1 = require("./Services/AuthService/AuthService");
7
7
  const PermissionService_1 = require("./Services/PermissionService/PermissionService");
8
8
  const EmailService_1 = require("./Services/EmailService/EmailService");
9
- const AccessiController_1 = require("./AccessiController");
10
- const AccessiRoutes_1 = require("./AccessiRoutes");
11
- const AccessiControllerBase_1 = require("./AccessiControllerBase");
9
+ const AccessiController_1 = require("./Controllers/AccessiController");
10
+ const AccessiRoutes_1 = require("./Routes/AccessiRoutes");
11
+ const AccessiControllerBase_1 = require("./Controllers/AccessiControllerBase");
12
12
  const container = new inversify_1.Container({ defaultScope: "Singleton" });
13
13
  exports.container = container;
14
14
  console.log("UserService:", UserService_1.UserService);
@@ -36,6 +36,7 @@ const accessiOptions = {
36
36
  user: "",
37
37
  pass: ""
38
38
  },
39
+ from: "",
39
40
  host: "",
40
41
  port: 0,
41
42
  secure: false
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "emilsoftware-utilities",
3
- "version": "1.3.69",
3
+ "version": "1.3.71",
4
4
  "description": "Utilities for EmilSoftware",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",