@nik2208/node-auth 1.0.2

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.
Files changed (95) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +636 -0
  3. package/dist/abstract/base-auth-strategy.abstract.d.ts +7 -0
  4. package/dist/abstract/base-auth-strategy.abstract.d.ts.map +1 -0
  5. package/dist/abstract/base-auth-strategy.abstract.js +7 -0
  6. package/dist/abstract/base-auth-strategy.abstract.js.map +1 -0
  7. package/dist/abstract/base-oauth-strategy.abstract.d.ts +26 -0
  8. package/dist/abstract/base-oauth-strategy.abstract.d.ts.map +1 -0
  9. package/dist/abstract/base-oauth-strategy.abstract.js +11 -0
  10. package/dist/abstract/base-oauth-strategy.abstract.js.map +1 -0
  11. package/dist/auth-configurator.d.ts +24 -0
  12. package/dist/auth-configurator.d.ts.map +1 -0
  13. package/dist/auth-configurator.js +42 -0
  14. package/dist/auth-configurator.js.map +1 -0
  15. package/dist/index.d.ts +25 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +36 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/interfaces/auth-strategy.interface.d.ts +6 -0
  20. package/dist/interfaces/auth-strategy.interface.d.ts.map +1 -0
  21. package/dist/interfaces/auth-strategy.interface.js +3 -0
  22. package/dist/interfaces/auth-strategy.interface.js.map +1 -0
  23. package/dist/interfaces/token-store.interface.d.ts +10 -0
  24. package/dist/interfaces/token-store.interface.d.ts.map +1 -0
  25. package/dist/interfaces/token-store.interface.js +3 -0
  26. package/dist/interfaces/token-store.interface.js.map +1 -0
  27. package/dist/interfaces/user-store.interface.d.ts +23 -0
  28. package/dist/interfaces/user-store.interface.d.ts.map +1 -0
  29. package/dist/interfaces/user-store.interface.js +3 -0
  30. package/dist/interfaces/user-store.interface.js.map +1 -0
  31. package/dist/middleware/auth.middleware.d.ts +12 -0
  32. package/dist/middleware/auth.middleware.d.ts.map +1 -0
  33. package/dist/middleware/auth.middleware.js +23 -0
  34. package/dist/middleware/auth.middleware.js.map +1 -0
  35. package/dist/models/auth-config.model.d.ts +96 -0
  36. package/dist/models/auth-config.model.d.ts.map +1 -0
  37. package/dist/models/auth-config.model.js +3 -0
  38. package/dist/models/auth-config.model.js.map +1 -0
  39. package/dist/models/errors.d.ts +6 -0
  40. package/dist/models/errors.d.ts.map +1 -0
  41. package/dist/models/errors.js +13 -0
  42. package/dist/models/errors.js.map +1 -0
  43. package/dist/models/token.model.d.ts +12 -0
  44. package/dist/models/token.model.d.ts.map +1 -0
  45. package/dist/models/token.model.js +3 -0
  46. package/dist/models/token.model.js.map +1 -0
  47. package/dist/models/user.model.d.ts +18 -0
  48. package/dist/models/user.model.d.ts.map +1 -0
  49. package/dist/models/user.model.js +3 -0
  50. package/dist/models/user.model.js.map +1 -0
  51. package/dist/router/auth.router.d.ts +13 -0
  52. package/dist/router/auth.router.d.ts.map +1 -0
  53. package/dist/router/auth.router.js +329 -0
  54. package/dist/router/auth.router.js.map +1 -0
  55. package/dist/services/mailer.service.d.ts +11 -0
  56. package/dist/services/mailer.service.d.ts.map +1 -0
  57. package/dist/services/mailer.service.js +138 -0
  58. package/dist/services/mailer.service.js.map +1 -0
  59. package/dist/services/password.service.d.ts +5 -0
  60. package/dist/services/password.service.d.ts.map +1 -0
  61. package/dist/services/password.service.js +17 -0
  62. package/dist/services/password.service.js.map +1 -0
  63. package/dist/services/sms.service.d.ts +14 -0
  64. package/dist/services/sms.service.d.ts.map +1 -0
  65. package/dist/services/sms.service.js +51 -0
  66. package/dist/services/sms.service.js.map +1 -0
  67. package/dist/services/token.service.d.ts +13 -0
  68. package/dist/services/token.service.d.ts.map +1 -0
  69. package/dist/services/token.service.js +78 -0
  70. package/dist/services/token.service.js.map +1 -0
  71. package/dist/strategies/local/local.strategy.d.ts +19 -0
  72. package/dist/strategies/local/local.strategy.d.ts.map +1 -0
  73. package/dist/strategies/local/local.strategy.js +29 -0
  74. package/dist/strategies/local/local.strategy.js.map +1 -0
  75. package/dist/strategies/magic-link/magic-link.strategy.d.ts +8 -0
  76. package/dist/strategies/magic-link/magic-link.strategy.d.ts.map +1 -0
  77. package/dist/strategies/magic-link/magic-link.strategy.js +50 -0
  78. package/dist/strategies/magic-link/magic-link.strategy.js.map +1 -0
  79. package/dist/strategies/oauth/github.strategy.d.ts +29 -0
  80. package/dist/strategies/oauth/github.strategy.d.ts.map +1 -0
  81. package/dist/strategies/oauth/github.strategy.js +69 -0
  82. package/dist/strategies/oauth/github.strategy.js.map +1 -0
  83. package/dist/strategies/oauth/google.strategy.d.ts +29 -0
  84. package/dist/strategies/oauth/google.strategy.d.ts.map +1 -0
  85. package/dist/strategies/oauth/google.strategy.js +61 -0
  86. package/dist/strategies/oauth/google.strategy.js.map +1 -0
  87. package/dist/strategies/sms/sms.strategy.d.ts +7 -0
  88. package/dist/strategies/sms/sms.strategy.d.ts.map +1 -0
  89. package/dist/strategies/sms/sms.strategy.js +39 -0
  90. package/dist/strategies/sms/sms.strategy.js.map +1 -0
  91. package/dist/strategies/two-factor/totp.strategy.d.ts +12 -0
  92. package/dist/strategies/two-factor/totp.strategy.d.ts.map +1 -0
  93. package/dist/strategies/two-factor/totp.strategy.js +32 -0
  94. package/dist/strategies/two-factor/totp.strategy.js.map +1 -0
  95. package/package.json +48 -0
@@ -0,0 +1,26 @@
1
+ import { AuthConfig } from '../models/auth-config.model';
2
+ import { BaseUser } from '../models/user.model';
3
+ import { BaseAuthStrategy } from './base-auth-strategy.abstract';
4
+ export declare abstract class BaseOAuthStrategy<TUser extends BaseUser = BaseUser> extends BaseAuthStrategy<{
5
+ code: string;
6
+ state?: string;
7
+ }, TUser> {
8
+ abstract name: string;
9
+ abstract getAuthorizationUrl(state?: string): string;
10
+ abstract handleCallback(code: string, state?: string): Promise<TUser>;
11
+ protected abstract exchangeCodeForTokens(code: string): Promise<{
12
+ accessToken: string;
13
+ idToken?: string;
14
+ }>;
15
+ protected abstract getUserProfile(accessToken: string): Promise<{
16
+ id: string;
17
+ email: string;
18
+ name?: string;
19
+ picture?: string;
20
+ }>;
21
+ authenticate(input: {
22
+ code: string;
23
+ state?: string;
24
+ }, _config: AuthConfig): Promise<TUser>;
25
+ }
26
+ //# sourceMappingURL=base-oauth-strategy.abstract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-oauth-strategy.abstract.d.ts","sourceRoot":"","sources":["../../src/abstract/base-oauth-strategy.abstract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,8BAAsB,iBAAiB,CAAC,KAAK,SAAS,QAAQ,GAAG,QAAQ,CAAE,SAAQ,gBAAgB,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,CAAC;IAC1I,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;IACpD,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IACrE,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1G,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAEzH,YAAY,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC;CAGjG"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseOAuthStrategy = void 0;
4
+ const base_auth_strategy_abstract_1 = require("./base-auth-strategy.abstract");
5
+ class BaseOAuthStrategy extends base_auth_strategy_abstract_1.BaseAuthStrategy {
6
+ async authenticate(input, _config) {
7
+ return this.handleCallback(input.code, input.state);
8
+ }
9
+ }
10
+ exports.BaseOAuthStrategy = BaseOAuthStrategy;
11
+ //# sourceMappingURL=base-oauth-strategy.abstract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-oauth-strategy.abstract.js","sourceRoot":"","sources":["../../src/abstract/base-oauth-strategy.abstract.ts"],"names":[],"mappings":";;;AAEA,+EAAiE;AAEjE,MAAsB,iBAAqD,SAAQ,8CAAyD;IAQ1I,KAAK,CAAC,YAAY,CAAC,KAAuC,EAAE,OAAmB;QAC7E,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC;CACF;AAXD,8CAWC"}
@@ -0,0 +1,24 @@
1
+ import { Router, RequestHandler } from 'express';
2
+ import { AuthConfig } from './models/auth-config.model';
3
+ import { IUserStore } from './interfaces/user-store.interface';
4
+ import { TokenService } from './services/token.service';
5
+ import { PasswordService } from './services/password.service';
6
+ import { LocalStrategy } from './strategies/local/local.strategy';
7
+ import { GoogleStrategy } from './strategies/oauth/google.strategy';
8
+ import { GithubStrategy } from './strategies/oauth/github.strategy';
9
+ import { RouterOptions } from './router/auth.router';
10
+ export declare class AuthConfigurator {
11
+ private readonly config;
12
+ private readonly userStore;
13
+ private readonly _tokenService;
14
+ private readonly _passwordService;
15
+ constructor(config: AuthConfig, userStore: IUserStore);
16
+ middleware(): RequestHandler;
17
+ router(options?: RouterOptions): Router;
18
+ get tokenService(): TokenService;
19
+ get passwordService(): PasswordService;
20
+ strategy(name: 'local'): LocalStrategy;
21
+ strategy(name: 'google'): GoogleStrategy;
22
+ strategy(name: 'github'): GithubStrategy;
23
+ }
24
+ //# sourceMappingURL=auth-configurator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-configurator.d.ts","sourceRoot":"","sources":["../src/auth-configurator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEpE,OAAO,EAAoB,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEvE,qBAAa,gBAAgB;IAKzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAL5B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;gBAGhC,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,UAAU;IAMxC,UAAU,IAAI,cAAc;IAI5B,MAAM,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM;IAIvC,IAAI,YAAY,IAAI,YAAY,CAE/B;IAED,IAAI,eAAe,IAAI,eAAe,CAErC;IAED,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,aAAa;IACtC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,cAAc;IACxC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,cAAc;CAazC"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuthConfigurator = void 0;
4
+ const token_service_1 = require("./services/token.service");
5
+ const password_service_1 = require("./services/password.service");
6
+ const local_strategy_1 = require("./strategies/local/local.strategy");
7
+ const auth_middleware_1 = require("./middleware/auth.middleware");
8
+ const auth_router_1 = require("./router/auth.router");
9
+ class AuthConfigurator {
10
+ constructor(config, userStore) {
11
+ this.config = config;
12
+ this.userStore = userStore;
13
+ this._tokenService = new token_service_1.TokenService();
14
+ this._passwordService = new password_service_1.PasswordService();
15
+ }
16
+ middleware() {
17
+ return (0, auth_middleware_1.createAuthMiddleware)(this.config);
18
+ }
19
+ router(options) {
20
+ return (0, auth_router_1.createAuthRouter)(this.userStore, this.config, options);
21
+ }
22
+ get tokenService() {
23
+ return this._tokenService;
24
+ }
25
+ get passwordService() {
26
+ return this._passwordService;
27
+ }
28
+ strategy(name) {
29
+ switch (name) {
30
+ case 'local':
31
+ return new local_strategy_1.LocalStrategy(this.userStore, this._passwordService);
32
+ case 'google':
33
+ throw new Error('GoogleStrategy is abstract - extend it and pass via RouterOptions');
34
+ case 'github':
35
+ throw new Error('GithubStrategy is abstract - extend it and pass via RouterOptions');
36
+ default:
37
+ throw new Error(`Unknown strategy: ${name}`);
38
+ }
39
+ }
40
+ }
41
+ exports.AuthConfigurator = AuthConfigurator;
42
+ //# sourceMappingURL=auth-configurator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-configurator.js","sourceRoot":"","sources":["../src/auth-configurator.ts"],"names":[],"mappings":";;;AAGA,4DAAwD;AACxD,kEAA8D;AAC9D,sEAAkE;AAGlE,kEAAoE;AACpE,sDAAuE;AAEvE,MAAa,gBAAgB;IAI3B,YACmB,MAAkB,EAClB,SAAqB;QADrB,WAAM,GAAN,MAAM,CAAY;QAClB,cAAS,GAAT,SAAS,CAAY;QAEtC,IAAI,CAAC,aAAa,GAAG,IAAI,4BAAY,EAAE,CAAC;QACxC,IAAI,CAAC,gBAAgB,GAAG,IAAI,kCAAe,EAAE,CAAC;IAChD,CAAC;IAED,UAAU;QACR,OAAO,IAAA,sCAAoB,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,OAAuB;QAC5B,OAAO,IAAA,8BAAgB,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAKD,QAAQ,CAAC,IAAY;QACnB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,OAAO;gBACV,OAAO,IAAI,8BAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAClE,KAAK,QAAQ;gBACX,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;YACvF,KAAK,QAAQ;gBACX,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;YACvF;gBACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;CACF;AA3CD,4CA2CC"}
@@ -0,0 +1,25 @@
1
+ export { AuthConfigurator } from './auth-configurator';
2
+ export type { IUserStore } from './interfaces/user-store.interface';
3
+ export type { ITokenStore } from './interfaces/token-store.interface';
4
+ export type { IAuthStrategy } from './interfaces/auth-strategy.interface';
5
+ export type { BaseUser } from './models/user.model';
6
+ export type { TokenPair, AccessTokenPayload } from './models/token.model';
7
+ export type { AuthConfig } from './models/auth-config.model';
8
+ export { AuthError } from './models/errors';
9
+ export { BaseAuthStrategy } from './abstract/base-auth-strategy.abstract';
10
+ export { BaseOAuthStrategy } from './abstract/base-oauth-strategy.abstract';
11
+ export { LocalStrategy } from './strategies/local/local.strategy';
12
+ export { GoogleStrategy } from './strategies/oauth/google.strategy';
13
+ export { GithubStrategy } from './strategies/oauth/github.strategy';
14
+ export { MagicLinkStrategy } from './strategies/magic-link/magic-link.strategy';
15
+ export { SmsStrategy } from './strategies/sms/sms.strategy';
16
+ export { TotpStrategy } from './strategies/two-factor/totp.strategy';
17
+ export { TokenService } from './services/token.service';
18
+ export { PasswordService } from './services/password.service';
19
+ export { SmsService } from './services/sms.service';
20
+ export { MailerService } from './services/mailer.service';
21
+ export type { MailerConfig } from './models/auth-config.model';
22
+ export { createAuthMiddleware } from './middleware/auth.middleware';
23
+ export { createAuthRouter } from './router/auth.router';
24
+ export type { RouterOptions } from './router/auth.router';
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,YAAY,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AACpE,YAAY,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACtE,YAAY,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAE1E,YAAY,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,YAAY,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAE5E,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAErE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,YAAY,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createAuthRouter = exports.createAuthMiddleware = exports.MailerService = exports.SmsService = exports.PasswordService = exports.TokenService = exports.TotpStrategy = exports.SmsStrategy = exports.MagicLinkStrategy = exports.GithubStrategy = exports.GoogleStrategy = exports.LocalStrategy = exports.BaseOAuthStrategy = exports.BaseAuthStrategy = exports.AuthError = exports.AuthConfigurator = void 0;
4
+ var auth_configurator_1 = require("./auth-configurator");
5
+ Object.defineProperty(exports, "AuthConfigurator", { enumerable: true, get: function () { return auth_configurator_1.AuthConfigurator; } });
6
+ var errors_1 = require("./models/errors");
7
+ Object.defineProperty(exports, "AuthError", { enumerable: true, get: function () { return errors_1.AuthError; } });
8
+ var base_auth_strategy_abstract_1 = require("./abstract/base-auth-strategy.abstract");
9
+ Object.defineProperty(exports, "BaseAuthStrategy", { enumerable: true, get: function () { return base_auth_strategy_abstract_1.BaseAuthStrategy; } });
10
+ var base_oauth_strategy_abstract_1 = require("./abstract/base-oauth-strategy.abstract");
11
+ Object.defineProperty(exports, "BaseOAuthStrategy", { enumerable: true, get: function () { return base_oauth_strategy_abstract_1.BaseOAuthStrategy; } });
12
+ var local_strategy_1 = require("./strategies/local/local.strategy");
13
+ Object.defineProperty(exports, "LocalStrategy", { enumerable: true, get: function () { return local_strategy_1.LocalStrategy; } });
14
+ var google_strategy_1 = require("./strategies/oauth/google.strategy");
15
+ Object.defineProperty(exports, "GoogleStrategy", { enumerable: true, get: function () { return google_strategy_1.GoogleStrategy; } });
16
+ var github_strategy_1 = require("./strategies/oauth/github.strategy");
17
+ Object.defineProperty(exports, "GithubStrategy", { enumerable: true, get: function () { return github_strategy_1.GithubStrategy; } });
18
+ var magic_link_strategy_1 = require("./strategies/magic-link/magic-link.strategy");
19
+ Object.defineProperty(exports, "MagicLinkStrategy", { enumerable: true, get: function () { return magic_link_strategy_1.MagicLinkStrategy; } });
20
+ var sms_strategy_1 = require("./strategies/sms/sms.strategy");
21
+ Object.defineProperty(exports, "SmsStrategy", { enumerable: true, get: function () { return sms_strategy_1.SmsStrategy; } });
22
+ var totp_strategy_1 = require("./strategies/two-factor/totp.strategy");
23
+ Object.defineProperty(exports, "TotpStrategy", { enumerable: true, get: function () { return totp_strategy_1.TotpStrategy; } });
24
+ var token_service_1 = require("./services/token.service");
25
+ Object.defineProperty(exports, "TokenService", { enumerable: true, get: function () { return token_service_1.TokenService; } });
26
+ var password_service_1 = require("./services/password.service");
27
+ Object.defineProperty(exports, "PasswordService", { enumerable: true, get: function () { return password_service_1.PasswordService; } });
28
+ var sms_service_1 = require("./services/sms.service");
29
+ Object.defineProperty(exports, "SmsService", { enumerable: true, get: function () { return sms_service_1.SmsService; } });
30
+ var mailer_service_1 = require("./services/mailer.service");
31
+ Object.defineProperty(exports, "MailerService", { enumerable: true, get: function () { return mailer_service_1.MailerService; } });
32
+ var auth_middleware_1 = require("./middleware/auth.middleware");
33
+ Object.defineProperty(exports, "createAuthMiddleware", { enumerable: true, get: function () { return auth_middleware_1.createAuthMiddleware; } });
34
+ var auth_router_1 = require("./router/auth.router");
35
+ Object.defineProperty(exports, "createAuthRouter", { enumerable: true, get: function () { return auth_router_1.createAuthRouter; } });
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AASzB,0CAA4C;AAAnC,mGAAA,SAAS,OAAA;AAElB,sFAA0E;AAAjE,+HAAA,gBAAgB,OAAA;AACzB,wFAA4E;AAAnE,iIAAA,iBAAiB,OAAA;AAE1B,oEAAkE;AAAzD,+GAAA,aAAa,OAAA;AACtB,sEAAoE;AAA3D,iHAAA,cAAc,OAAA;AACvB,sEAAoE;AAA3D,iHAAA,cAAc,OAAA;AACvB,mFAAgF;AAAvE,wHAAA,iBAAiB,OAAA;AAC1B,8DAA4D;AAAnD,2GAAA,WAAW,OAAA;AACpB,uEAAqE;AAA5D,6GAAA,YAAY,OAAA;AAErB,0DAAwD;AAA/C,6GAAA,YAAY,OAAA;AACrB,gEAA8D;AAArD,mHAAA,eAAe,OAAA;AACxB,sDAAoD;AAA3C,yGAAA,UAAU,OAAA;AACnB,4DAA0D;AAAjD,+GAAA,aAAa,OAAA;AAGtB,gEAAoE;AAA3D,uHAAA,oBAAoB,OAAA;AAC7B,oDAAwD;AAA/C,+GAAA,gBAAgB,OAAA"}
@@ -0,0 +1,6 @@
1
+ import { AuthConfig } from '../models/auth-config.model';
2
+ export interface IAuthStrategy<TInput = unknown, TOutput = unknown> {
3
+ name: string;
4
+ authenticate(input: TInput, config: AuthConfig): Promise<TOutput>;
5
+ }
6
+ //# sourceMappingURL=auth-strategy.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-strategy.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/auth-strategy.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEzD,MAAM,WAAW,aAAa,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACnE"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=auth-strategy.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-strategy.interface.js","sourceRoot":"","sources":["../../src/interfaces/auth-strategy.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ export interface ITokenStore {
2
+ saveRefreshToken(userId: string, token: string, expiry: Date): Promise<void>;
3
+ findRefreshToken(token: string): Promise<{
4
+ userId: string;
5
+ expiry: Date;
6
+ } | null>;
7
+ deleteRefreshToken(token: string): Promise<void>;
8
+ deleteAllUserTokens(userId: string): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=token-store.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-store.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/token-store.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7E,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAClF,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=token-store.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-store.interface.js","sourceRoot":"","sources":["../../src/interfaces/token-store.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ import { BaseUser } from '../models/user.model';
2
+ export interface IUserStore<U extends BaseUser = BaseUser> {
3
+ findByEmail(email: string): Promise<U | null>;
4
+ findById(id: string): Promise<U | null>;
5
+ create(data: Partial<U>): Promise<U>;
6
+ updateRefreshToken(userId: string, token: string | null, expiry: Date | null): Promise<void>;
7
+ updateResetToken(userId: string, token: string | null, expiry: Date | null): Promise<void>;
8
+ updatePassword(userId: string, hashedPassword: string): Promise<void>;
9
+ updateTotpSecret(userId: string, secret: string | null): Promise<void>;
10
+ updateMagicLinkToken(userId: string, token: string | null, expiry: Date | null): Promise<void>;
11
+ updateSmsCode(userId: string, code: string | null, expiry: Date | null): Promise<void>;
12
+ /**
13
+ * Find a user by their password-reset token.
14
+ * Required to support the POST /auth/reset-password endpoint.
15
+ */
16
+ findByResetToken?(token: string): Promise<U | null>;
17
+ /**
18
+ * Find a user by their magic-link token.
19
+ * Required to support the POST /auth/magic-link/verify endpoint.
20
+ */
21
+ findByMagicLinkToken?(token: string): Promise<U | null>;
22
+ }
23
+ //# sourceMappingURL=user-store.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-store.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/user-store.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ;IACvD,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9C,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACxC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACrC,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7F,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3F,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/F,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvF;;;OAGG;IACH,gBAAgB,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAEpD;;;OAGG;IACH,oBAAoB,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;CACzD"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=user-store.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-store.interface.js","sourceRoot":"","sources":["../../src/interfaces/user-store.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ import { RequestHandler } from 'express';
2
+ import { AuthConfig } from '../models/auth-config.model';
3
+ import { AccessTokenPayload } from '../models/token.model';
4
+ declare global {
5
+ namespace Express {
6
+ interface Request {
7
+ user?: AccessTokenPayload;
8
+ }
9
+ }
10
+ }
11
+ export declare function createAuthMiddleware(config: AuthConfig): RequestHandler;
12
+ //# sourceMappingURL=auth.middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.middleware.d.ts","sourceRoot":"","sources":["../../src/middleware/auth.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmC,cAAc,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAG3D,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,OAAO,CAAC;QAChB,UAAU,OAAO;YACf,IAAI,CAAC,EAAE,kBAAkB,CAAC;SAC3B;KACF;CACF;AAID,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,cAAc,CAevE"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createAuthMiddleware = createAuthMiddleware;
4
+ const token_service_1 = require("../services/token.service");
5
+ const tokenService = new token_service_1.TokenService();
6
+ function createAuthMiddleware(config) {
7
+ return (req, res, next) => {
8
+ const token = tokenService.extractTokenFromCookie(req, 'accessToken');
9
+ if (!token) {
10
+ res.status(403).json({ error: 'No access token provided' });
11
+ return;
12
+ }
13
+ try {
14
+ const payload = tokenService.verifyAccessToken(token, config);
15
+ req.user = payload;
16
+ next();
17
+ }
18
+ catch {
19
+ res.status(403).json({ error: 'Invalid or expired access token' });
20
+ }
21
+ };
22
+ }
23
+ //# sourceMappingURL=auth.middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.middleware.js","sourceRoot":"","sources":["../../src/middleware/auth.middleware.ts"],"names":[],"mappings":";;AAeA,oDAeC;AA3BD,6DAAyD;AAUzD,MAAM,YAAY,GAAG,IAAI,4BAAY,EAAE,CAAC;AAExC,SAAgB,oBAAoB,CAAC,MAAkB;IACrD,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAQ,EAAE;QAC/D,MAAM,KAAK,GAAG,YAAY,CAAC,sBAAsB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QACtE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,CAAC;YAC5D,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC9D,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC;YACnB,IAAI,EAAE,CAAC;QACT,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAC,CAAC;QACrE,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Configuration for the built-in HTTP-based mailer transport.
3
+ *
4
+ * The mailer makes a POST request to `endpoint` with a JSON body:
5
+ * ```
6
+ * POST {endpoint}
7
+ * X-API-Key: {apiKey}
8
+ * Content-Type: application/json
9
+ *
10
+ * { "to": "...", "subject": "...", "html": "...", "text": "...", "from": "...", "fromName": "..." }
11
+ * ```
12
+ *
13
+ * If you prefer to control email sending yourself, omit `mailer` and use
14
+ * the `sendMagicLink`, `sendPasswordReset`, and `sendWelcome` callbacks instead.
15
+ */
16
+ export interface MailerConfig {
17
+ /** Full URL of the HTTP mailer endpoint (receives a POST with JSON body). */
18
+ endpoint: string;
19
+ /** API key sent as the `X-API-Key` header. */
20
+ apiKey: string;
21
+ /** Sender email address. */
22
+ from: string;
23
+ /** Sender display name (optional). */
24
+ fromName?: string;
25
+ /**
26
+ * Default language for built-in email templates.
27
+ * Supported: `'en'` (default) | `'it'`.
28
+ * Can be overridden per-request via `emailLang` in the request body.
29
+ */
30
+ defaultLang?: 'en' | 'it';
31
+ }
32
+ export interface AuthConfig {
33
+ accessTokenSecret: string;
34
+ refreshTokenSecret: string;
35
+ accessTokenExpiresIn?: string;
36
+ refreshTokenExpiresIn?: string;
37
+ cookieOptions?: {
38
+ secure?: boolean;
39
+ sameSite?: 'strict' | 'lax' | 'none';
40
+ domain?: string;
41
+ };
42
+ bcryptSaltRounds?: number;
43
+ sms?: {
44
+ endpoint: string;
45
+ apiKey: string;
46
+ username: string;
47
+ password: string;
48
+ codeExpiresInMinutes?: number;
49
+ };
50
+ email?: {
51
+ /**
52
+ * Base URL of your site, used to build reset / magic-link URLs.
53
+ * Example: `'https://yourapp.com'`
54
+ */
55
+ siteUrl?: string;
56
+ /**
57
+ * Concrete HTTP mailer transport configuration.
58
+ * When set, the library sends emails automatically using the built-in
59
+ * templates (password reset, magic link, welcome) via HTTP POST.
60
+ * Callback overrides below always take precedence over the mailer transport.
61
+ */
62
+ mailer?: MailerConfig;
63
+ /**
64
+ * Override: custom magic-link email sender.
65
+ * When provided, this callback is used instead of `mailer`.
66
+ */
67
+ sendMagicLink?: (to: string, token: string, link: string, lang?: string) => Promise<void>;
68
+ /**
69
+ * Override: custom password-reset email sender.
70
+ * When provided, this callback is used instead of `mailer`.
71
+ */
72
+ sendPasswordReset?: (to: string, token: string, link: string, lang?: string) => Promise<void>;
73
+ /**
74
+ * Override: custom welcome email sender.
75
+ * When provided, this callback is used instead of `mailer`.
76
+ */
77
+ sendWelcome?: (to: string, data: Record<string, unknown>, lang?: string) => Promise<void>;
78
+ };
79
+ oauth?: {
80
+ google?: {
81
+ clientId: string;
82
+ clientSecret: string;
83
+ callbackUrl: string;
84
+ projectId?: string;
85
+ };
86
+ github?: {
87
+ clientId: string;
88
+ clientSecret: string;
89
+ callbackUrl: string;
90
+ };
91
+ };
92
+ twoFactor?: {
93
+ appName?: string;
94
+ };
95
+ }
96
+ //# sourceMappingURL=auth-config.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-config.model.d.ts","sourceRoot":"","sources":["../../src/models/auth-config.model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,YAAY;IAC3B,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,WAAW,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,aAAa,CAAC,EAAE;QACd,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;QACrC,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,GAAG,CAAC,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,oBAAoB,CAAC,EAAE,MAAM,CAAC;KAC/B,CAAC;IACF,KAAK,CAAC,EAAE;QACN;;;WAGG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC;QAEjB;;;;;WAKG;QACH,MAAM,CAAC,EAAE,YAAY,CAAC;QAEtB;;;WAGG;QACH,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAE1F;;;WAGG;QACH,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAE9F;;;WAGG;QACH,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KAC3F,CAAC;IACF,KAAK,CAAC,EAAE;QACN,MAAM,CAAC,EAAE;YACP,QAAQ,EAAE,MAAM,CAAC;YACjB,YAAY,EAAE,MAAM,CAAC;YACrB,WAAW,EAAE,MAAM,CAAC;YACpB,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB,CAAC;QACF,MAAM,CAAC,EAAE;YACP,QAAQ,EAAE,MAAM,CAAC;YACjB,YAAY,EAAE,MAAM,CAAC;YACrB,WAAW,EAAE,MAAM,CAAC;SACrB,CAAC;KACH,CAAC;IACF,SAAS,CAAC,EAAE;QACV,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=auth-config.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-config.model.js","sourceRoot":"","sources":["../../src/models/auth-config.model.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ export declare class AuthError extends Error {
2
+ readonly code: string;
3
+ readonly statusCode: number;
4
+ constructor(message: string, code: string, statusCode?: number);
5
+ }
6
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/models/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,SAAU,SAAQ,KAAK;aAGhB,IAAI,EAAE,MAAM;aACZ,UAAU,EAAE,MAAM;gBAFlC,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,UAAU,GAAE,MAAY;CAK3C"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuthError = void 0;
4
+ class AuthError extends Error {
5
+ constructor(message, code, statusCode = 401) {
6
+ super(message);
7
+ this.code = code;
8
+ this.statusCode = statusCode;
9
+ this.name = 'AuthError';
10
+ }
11
+ }
12
+ exports.AuthError = AuthError;
13
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/models/errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,SAAU,SAAQ,KAAK;IAClC,YACE,OAAe,EACC,IAAY,EACZ,aAAqB,GAAG;QAExC,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAQ;QACZ,eAAU,GAAV,UAAU,CAAc;QAGxC,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AATD,8BASC"}
@@ -0,0 +1,12 @@
1
+ export interface TokenPair {
2
+ accessToken: string;
3
+ refreshToken: string;
4
+ }
5
+ export interface AccessTokenPayload {
6
+ sub: string;
7
+ email: string;
8
+ role?: string;
9
+ iat?: number;
10
+ exp?: number;
11
+ }
12
+ //# sourceMappingURL=token.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.model.d.ts","sourceRoot":"","sources":["../../src/models/token.model.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=token.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.model.js","sourceRoot":"","sources":["../../src/models/token.model.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ export interface BaseUser {
2
+ id: string;
3
+ email: string;
4
+ password?: string;
5
+ role?: string;
6
+ refreshToken?: string | null;
7
+ refreshTokenExpiry?: Date | null;
8
+ resetToken?: string | null;
9
+ resetTokenExpiry?: Date | null;
10
+ totpSecret?: string | null;
11
+ isTotpEnabled?: boolean;
12
+ magicLinkToken?: string | null;
13
+ magicLinkTokenExpiry?: Date | null;
14
+ smsCode?: string | null;
15
+ smsCodeExpiry?: Date | null;
16
+ phoneNumber?: string | null;
17
+ }
18
+ //# sourceMappingURL=user.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.model.d.ts","sourceRoot":"","sources":["../../src/models/user.model.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,kBAAkB,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gBAAgB,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,oBAAoB,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,aAAa,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=user.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.model.js","sourceRoot":"","sources":["../../src/models/user.model.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import { Router, RequestHandler } from 'express';
2
+ import { IUserStore } from '../interfaces/user-store.interface';
3
+ import { AuthConfig } from '../models/auth-config.model';
4
+ import { GoogleStrategy } from '../strategies/oauth/google.strategy';
5
+ import { GithubStrategy } from '../strategies/oauth/github.strategy';
6
+ export interface RouterOptions {
7
+ googleStrategy?: GoogleStrategy;
8
+ githubStrategy?: GithubStrategy;
9
+ /** Optional rate limiter middleware applied to sensitive auth endpoints (login, refresh, password reset, etc.). */
10
+ rateLimiter?: RequestHandler;
11
+ }
12
+ export declare function createAuthRouter(userStore: IUserStore, config: AuthConfig, options?: RouterOptions): Router;
13
+ //# sourceMappingURL=auth.router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.router.d.ts","sourceRoot":"","sources":["../../src/router/auth.router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqB,cAAc,EAAE,MAAM,SAAS,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAQzD,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAIrE,MAAM,WAAW,aAAa;IAC5B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,mHAAmH;IACnH,WAAW,CAAC,EAAE,cAAc,CAAC;CAC9B;AAgBD,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,UAAU,EACrB,MAAM,EAAE,UAAU,EAClB,OAAO,GAAE,aAAkB,GAC1B,MAAM,CAsUR"}