@arikajs/auth 0.0.4 → 0.0.5

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 (148) hide show
  1. package/README.md +175 -53
  2. package/dist/AuthContext.d.ts +24 -0
  3. package/dist/AuthContext.d.ts.map +1 -0
  4. package/dist/AuthContext.js +65 -0
  5. package/dist/AuthContext.js.map +1 -0
  6. package/dist/AuthManager.d.ts +33 -8
  7. package/dist/AuthManager.d.ts.map +1 -1
  8. package/dist/AuthManager.js +194 -51
  9. package/dist/AuthManager.js.map +1 -1
  10. package/dist/Contracts/CanResetPassword.d.ts +11 -0
  11. package/dist/Contracts/CanResetPassword.d.ts.map +1 -0
  12. package/dist/Contracts/CanResetPassword.js +3 -0
  13. package/dist/Contracts/CanResetPassword.js.map +1 -0
  14. package/dist/Contracts/CanVerifyEmail.d.ts +19 -0
  15. package/dist/Contracts/CanVerifyEmail.d.ts.map +1 -0
  16. package/dist/Contracts/CanVerifyEmail.js +3 -0
  17. package/dist/Contracts/CanVerifyEmail.js.map +1 -0
  18. package/dist/Contracts/EventDispatcher.d.ts +7 -0
  19. package/dist/Contracts/EventDispatcher.d.ts.map +1 -0
  20. package/dist/Contracts/EventDispatcher.js +3 -0
  21. package/dist/Contracts/EventDispatcher.js.map +1 -0
  22. package/dist/Contracts/PasswordBroker.d.ts +18 -0
  23. package/dist/Contracts/PasswordBroker.d.ts.map +1 -0
  24. package/dist/Contracts/PasswordBroker.js +11 -0
  25. package/dist/Contracts/PasswordBroker.js.map +1 -0
  26. package/dist/Contracts/RateLimiter.d.ts +15 -0
  27. package/dist/Contracts/RateLimiter.d.ts.map +1 -0
  28. package/dist/Contracts/RateLimiter.js +3 -0
  29. package/dist/Contracts/RateLimiter.js.map +1 -0
  30. package/dist/Contracts/UserProvider.d.ts +4 -0
  31. package/dist/Contracts/UserProvider.d.ts.map +1 -1
  32. package/dist/Guards/BasicGuard.d.ts +17 -0
  33. package/dist/Guards/BasicGuard.d.ts.map +1 -0
  34. package/dist/Guards/BasicGuard.js +59 -0
  35. package/dist/Guards/BasicGuard.js.map +1 -0
  36. package/dist/Guards/JwtGuard.d.ts +36 -0
  37. package/dist/Guards/JwtGuard.d.ts.map +1 -0
  38. package/dist/Guards/JwtGuard.js +158 -0
  39. package/dist/Guards/JwtGuard.js.map +1 -0
  40. package/dist/Guards/SessionGuard.d.ts +7 -3
  41. package/dist/Guards/SessionGuard.d.ts.map +1 -1
  42. package/dist/Guards/SessionGuard.js +104 -10
  43. package/dist/Guards/SessionGuard.js.map +1 -1
  44. package/dist/Hasher.d.ts +4 -0
  45. package/dist/Hasher.d.ts.map +1 -1
  46. package/dist/Hasher.js +6 -0
  47. package/dist/Hasher.js.map +1 -1
  48. package/dist/Middleware/Authenticate.d.ts +11 -2
  49. package/dist/Middleware/Authenticate.d.ts.map +1 -1
  50. package/dist/Middleware/Authenticate.js +42 -14
  51. package/dist/Middleware/Authenticate.js.map +1 -1
  52. package/dist/Middleware/EnsureEmailIsVerified.d.ts +8 -0
  53. package/dist/Middleware/EnsureEmailIsVerified.d.ts.map +1 -0
  54. package/dist/Middleware/EnsureEmailIsVerified.js +27 -0
  55. package/dist/Middleware/EnsureEmailIsVerified.js.map +1 -0
  56. package/dist/Passwords/PasswordResetBroker.d.ts +37 -0
  57. package/dist/Passwords/PasswordResetBroker.d.ts.map +1 -0
  58. package/dist/Passwords/PasswordResetBroker.js +128 -0
  59. package/dist/Passwords/PasswordResetBroker.js.map +1 -0
  60. package/dist/Providers/EloquentUserProvider.d.ts +30 -0
  61. package/dist/Providers/EloquentUserProvider.d.ts.map +1 -0
  62. package/dist/Providers/EloquentUserProvider.js +63 -0
  63. package/dist/Providers/EloquentUserProvider.js.map +1 -0
  64. package/dist/index.d.ts +11 -0
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +11 -0
  67. package/dist/index.js.map +1 -1
  68. package/dist/src/AuthContext.d.ts +24 -0
  69. package/dist/src/AuthContext.d.ts.map +1 -0
  70. package/dist/src/AuthContext.js +65 -0
  71. package/dist/src/AuthContext.js.map +1 -0
  72. package/dist/src/AuthManager.d.ts +52 -0
  73. package/dist/src/AuthManager.d.ts.map +1 -0
  74. package/dist/src/AuthManager.js +255 -0
  75. package/dist/src/AuthManager.js.map +1 -0
  76. package/dist/src/Contracts/CanResetPassword.d.ts +11 -0
  77. package/dist/src/Contracts/CanResetPassword.d.ts.map +1 -0
  78. package/dist/src/Contracts/CanResetPassword.js +3 -0
  79. package/dist/src/Contracts/CanResetPassword.js.map +1 -0
  80. package/dist/src/Contracts/CanVerifyEmail.d.ts +19 -0
  81. package/dist/src/Contracts/CanVerifyEmail.d.ts.map +1 -0
  82. package/dist/src/Contracts/CanVerifyEmail.js +3 -0
  83. package/dist/src/Contracts/CanVerifyEmail.js.map +1 -0
  84. package/dist/src/Contracts/EventDispatcher.d.ts +7 -0
  85. package/dist/src/Contracts/EventDispatcher.d.ts.map +1 -0
  86. package/dist/src/Contracts/EventDispatcher.js +3 -0
  87. package/dist/src/Contracts/EventDispatcher.js.map +1 -0
  88. package/dist/src/Contracts/PasswordBroker.d.ts +18 -0
  89. package/dist/src/Contracts/PasswordBroker.d.ts.map +1 -0
  90. package/dist/src/Contracts/PasswordBroker.js +11 -0
  91. package/dist/src/Contracts/PasswordBroker.js.map +1 -0
  92. package/dist/src/Contracts/RateLimiter.d.ts +15 -0
  93. package/dist/src/Contracts/RateLimiter.d.ts.map +1 -0
  94. package/dist/src/Contracts/RateLimiter.js +3 -0
  95. package/dist/src/Contracts/RateLimiter.js.map +1 -0
  96. package/dist/src/Contracts/UserProvider.d.ts +10 -0
  97. package/dist/src/Contracts/UserProvider.d.ts.map +1 -0
  98. package/dist/src/Contracts/UserProvider.js +3 -0
  99. package/dist/src/Contracts/UserProvider.js.map +1 -0
  100. package/dist/src/Guard.d.ts +10 -0
  101. package/dist/src/Guard.d.ts.map +1 -0
  102. package/dist/src/Guard.js +3 -0
  103. package/dist/src/Guard.js.map +1 -0
  104. package/dist/src/Guards/BasicGuard.d.ts +17 -0
  105. package/dist/src/Guards/BasicGuard.d.ts.map +1 -0
  106. package/dist/src/Guards/BasicGuard.js +59 -0
  107. package/dist/src/Guards/BasicGuard.js.map +1 -0
  108. package/dist/src/Guards/JwtGuard.d.ts +36 -0
  109. package/dist/src/Guards/JwtGuard.d.ts.map +1 -0
  110. package/dist/src/Guards/JwtGuard.js +158 -0
  111. package/dist/src/Guards/JwtGuard.js.map +1 -0
  112. package/dist/src/Guards/SessionGuard.d.ts +23 -0
  113. package/dist/src/Guards/SessionGuard.d.ts.map +1 -0
  114. package/dist/src/Guards/SessionGuard.js +162 -0
  115. package/dist/src/Guards/SessionGuard.js.map +1 -0
  116. package/dist/src/Guards/TokenGuard.d.ts +17 -0
  117. package/dist/src/Guards/TokenGuard.d.ts.map +1 -0
  118. package/dist/src/Guards/TokenGuard.js +60 -0
  119. package/dist/src/Guards/TokenGuard.js.map +1 -0
  120. package/dist/src/Hasher.d.ts +15 -0
  121. package/dist/src/Hasher.d.ts.map +1 -0
  122. package/dist/src/Hasher.js +59 -0
  123. package/dist/src/Hasher.js.map +1 -0
  124. package/dist/src/Middleware/Authenticate.d.ts +24 -0
  125. package/dist/src/Middleware/Authenticate.d.ts.map +1 -0
  126. package/dist/src/Middleware/Authenticate.js +66 -0
  127. package/dist/src/Middleware/Authenticate.js.map +1 -0
  128. package/dist/src/Middleware/EnsureEmailIsVerified.d.ts +8 -0
  129. package/dist/src/Middleware/EnsureEmailIsVerified.d.ts.map +1 -0
  130. package/dist/src/Middleware/EnsureEmailIsVerified.js +27 -0
  131. package/dist/src/Middleware/EnsureEmailIsVerified.js.map +1 -0
  132. package/dist/src/Passwords/PasswordResetBroker.d.ts +37 -0
  133. package/dist/src/Passwords/PasswordResetBroker.d.ts.map +1 -0
  134. package/dist/src/Passwords/PasswordResetBroker.js +128 -0
  135. package/dist/src/Passwords/PasswordResetBroker.js.map +1 -0
  136. package/dist/src/Providers/EloquentUserProvider.d.ts +30 -0
  137. package/dist/src/Providers/EloquentUserProvider.d.ts.map +1 -0
  138. package/dist/src/Providers/EloquentUserProvider.js +63 -0
  139. package/dist/src/Providers/EloquentUserProvider.js.map +1 -0
  140. package/dist/src/index.d.ts +19 -0
  141. package/dist/src/index.d.ts.map +1 -0
  142. package/dist/src/index.js +35 -0
  143. package/dist/src/index.js.map +1 -0
  144. package/dist/tests/Auth.test.d.ts +2 -0
  145. package/dist/tests/Auth.test.d.ts.map +1 -0
  146. package/dist/tests/Auth.test.js +177 -0
  147. package/dist/tests/Auth.test.js.map +1 -0
  148. package/package.json +51 -47
@@ -0,0 +1,255 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuthManager = void 0;
4
+ const SessionGuard_1 = require("./Guards/SessionGuard");
5
+ const TokenGuard_1 = require("./Guards/TokenGuard");
6
+ const JwtGuard_1 = require("./Guards/JwtGuard");
7
+ const BasicGuard_1 = require("./Guards/BasicGuard");
8
+ const AuthContext_1 = require("./AuthContext");
9
+ const async_hooks_1 = require("async_hooks");
10
+ const EloquentUserProvider_1 = require("./Providers/EloquentUserProvider");
11
+ class AuthManager {
12
+ constructor(config) {
13
+ this.providers = new Map();
14
+ this.eventDispatcher = null;
15
+ this.rateLimiter = null;
16
+ this.als = new async_hooks_1.AsyncLocalStorage();
17
+ this.config = config;
18
+ this.defaultGuard = config.default || 'web';
19
+ }
20
+ setEventDispatcher(dispatcher) {
21
+ this.eventDispatcher = dispatcher;
22
+ }
23
+ setRateLimiter(limiter) {
24
+ this.rateLimiter = limiter;
25
+ }
26
+ registerProvider(name, provider) {
27
+ this.providers.set(name, provider);
28
+ }
29
+ extend(name, callback) {
30
+ // Implementation for custom guards
31
+ }
32
+ getDefaultGuard() {
33
+ return this.defaultGuard;
34
+ }
35
+ createContext(request) {
36
+ const context = new AuthContext_1.AuthContext(this, request);
37
+ // Optionally bind it directly to the request
38
+ if (request) {
39
+ request.auth = context;
40
+ }
41
+ return context;
42
+ }
43
+ resolveGuard(name, request) {
44
+ const config = this.config.guards[name];
45
+ if (!config) {
46
+ throw new Error(`Auth guard [${name}] is not defined.`);
47
+ }
48
+ if (config.driver === 'session') {
49
+ return this.createSessionDriver(name, config, request);
50
+ }
51
+ if (config.driver === 'token') {
52
+ return this.createTokenDriver(name, config, request);
53
+ }
54
+ if (config.driver === 'jwt') {
55
+ return this.createJwtDriver(name, config, request);
56
+ }
57
+ if (config.driver === 'basic') {
58
+ return this.createBasicDriver(name, config, request);
59
+ }
60
+ throw new Error(`Auth driver [${config.driver}] for guard [${name}] is not supported.`);
61
+ }
62
+ createSessionDriver(name, config, request) {
63
+ const provider = this.getProvider(config.provider);
64
+ return new SessionGuard_1.SessionGuard(provider, request.session);
65
+ }
66
+ createTokenDriver(name, config, request) {
67
+ const provider = this.getProvider(config.provider);
68
+ return new TokenGuard_1.TokenGuard(provider, request);
69
+ }
70
+ createJwtDriver(name, config, request) {
71
+ const provider = this.getProvider(config.provider);
72
+ return new JwtGuard_1.JwtGuard(provider, request, config.secret || 'default_secret', config.options || {});
73
+ }
74
+ createBasicDriver(name, config, request) {
75
+ const provider = this.getProvider(config.provider);
76
+ return new BasicGuard_1.BasicGuard(provider, request);
77
+ }
78
+ getProvider(name) {
79
+ // 1. Check if registered manually
80
+ if (this.providers.has(name)) {
81
+ return this.providers.get(name);
82
+ }
83
+ // 2. Resolve from config
84
+ const config = this.config.providers?.[name];
85
+ if (!config) {
86
+ throw new Error(`User provider [${name}] is not defined.`);
87
+ }
88
+ if (config.driver === 'eloquent') {
89
+ const provider = new EloquentUserProvider_1.EloquentUserProvider(config.model);
90
+ this.providers.set(name, provider);
91
+ return provider;
92
+ }
93
+ throw new Error(`User provider driver [${config.driver}] is not supported.`);
94
+ }
95
+ shouldUse(name) {
96
+ this.defaultGuard = name;
97
+ }
98
+ runWithContext(context, fn) {
99
+ return this.als.run(context, fn);
100
+ }
101
+ getContext() {
102
+ const ctx = this.als.getStore();
103
+ if (!ctx) {
104
+ throw new Error('AuthContext not found. Ensure you are running within a request scope or use req.auth instead of the global facade.');
105
+ }
106
+ return ctx;
107
+ }
108
+ // Proxy methods to the context
109
+ guard(name) {
110
+ return this.getContext().guard(name);
111
+ }
112
+ resolve(token) {
113
+ return this.getContext().resolve(token);
114
+ }
115
+ async check() {
116
+ return await this.getContext().check();
117
+ }
118
+ async guest() {
119
+ return await this.getContext().guest();
120
+ }
121
+ async user() {
122
+ return await this.getContext().user();
123
+ }
124
+ async id() {
125
+ return await this.getContext().id();
126
+ }
127
+ async validate(credentials) {
128
+ return await this.getContext().validate(credentials);
129
+ }
130
+ setUser(user) {
131
+ this.getContext().setUser(user);
132
+ }
133
+ async attempt(credentials, remember = false) {
134
+ return await this.getContext().attempt(credentials, remember);
135
+ }
136
+ async login(user, remember = false) {
137
+ return await this.getContext().login(user, remember);
138
+ }
139
+ async logout() {
140
+ return await this.getContext().logout();
141
+ }
142
+ // Called by AuthContext to run attempts
143
+ async attemptForContext(context, credentials, remember = false) {
144
+ this.fireEvent('Auth.Attempting', { credentials, remember, guard: this.defaultGuard });
145
+ const throttleKey = this.getThrottleKey(credentials, context.getRequest());
146
+ if (throttleKey && this.rateLimiter) {
147
+ if (await this.rateLimiter.tooManyAttempts(throttleKey, 5)) {
148
+ this.fireEvent('Auth.Lockout', { credentials });
149
+ throw new Error('Too many login attempts. Please try again later.');
150
+ }
151
+ }
152
+ const guard = context.guard();
153
+ if (typeof guard.attempt === 'function') {
154
+ const successOrToken = await guard.attempt(credentials, remember);
155
+ if (successOrToken) {
156
+ if (throttleKey && this.rateLimiter) {
157
+ await this.rateLimiter.clear(throttleKey);
158
+ }
159
+ const user = await guard.user();
160
+ this.fireEvent('Auth.Login', { user, guard: this.defaultGuard });
161
+ return successOrToken; // Can return boolean true or JWT string
162
+ }
163
+ if (throttleKey && this.rateLimiter) {
164
+ await this.rateLimiter.hit(throttleKey, 1); // 1 minute decay
165
+ }
166
+ this.fireEvent('Auth.Failed', { credentials, guard: this.defaultGuard });
167
+ return false;
168
+ }
169
+ throw new Error(`Guard [${this.defaultGuard}] does not support login attempts.`);
170
+ }
171
+ // Called by AuthContext to log in
172
+ async loginForContext(context, user, remember = false) {
173
+ const guard = context.guard();
174
+ if (typeof guard.login === 'function') {
175
+ await guard.login(user, remember);
176
+ this.fireEvent('Auth.Login', { user, guard: this.defaultGuard });
177
+ return;
178
+ }
179
+ throw new Error(`Guard [${this.defaultGuard}] does not support login.`);
180
+ }
181
+ // Called by AuthContext to log out
182
+ async logoutForContext(context) {
183
+ const guard = context.guard();
184
+ const user = await guard.user();
185
+ if (typeof guard.logout === 'function') {
186
+ guard.logout();
187
+ this.fireEvent('Auth.Logout', { user, guard: this.defaultGuard });
188
+ return;
189
+ }
190
+ throw new Error(`Guard [${this.defaultGuard}] does not support logout.`);
191
+ }
192
+ // ── Email Verification ──────────────────────────────────────────
193
+ async sendVerification(context, user) {
194
+ const targetUser = user || await context.user();
195
+ if (!targetUser) {
196
+ throw new Error('No authenticated user to verify.');
197
+ }
198
+ if (typeof targetUser.hasVerifiedEmail === 'function' && targetUser.hasVerifiedEmail()) {
199
+ return; // Already verified
200
+ }
201
+ if (typeof targetUser.sendEmailVerificationNotification === 'function') {
202
+ await targetUser.sendEmailVerificationNotification();
203
+ this.fireEvent('Auth.VerificationSent', { user: targetUser });
204
+ }
205
+ else {
206
+ throw new Error('User model does not implement sendEmailVerificationNotification().');
207
+ }
208
+ }
209
+ // ── Account Locking ─────────────────────────────────────────────
210
+ get lockoutThreshold() {
211
+ return this.config.lockout?.maxAttempts ?? 5;
212
+ }
213
+ get lockoutDuration() {
214
+ return this.config.lockout?.decayMinutes ?? 15;
215
+ }
216
+ async isLocked(context, credentials) {
217
+ if (!this.rateLimiter)
218
+ return false;
219
+ const throttleKey = this.getLockKey(credentials, context.getRequest());
220
+ if (!throttleKey)
221
+ return false;
222
+ return await this.rateLimiter.tooManyAttempts(throttleKey, this.lockoutThreshold);
223
+ }
224
+ async unlockAccount(context, credentials) {
225
+ if (!this.rateLimiter)
226
+ return;
227
+ const throttleKey = this.getLockKey(credentials, context.getRequest());
228
+ if (throttleKey) {
229
+ await this.rateLimiter.clear(throttleKey);
230
+ this.fireEvent('Auth.AccountUnlocked', { credentials });
231
+ }
232
+ }
233
+ getLockKey(credentials, request) {
234
+ if (credentials.email) {
235
+ const ip = request?.ip || '127.0.0.1';
236
+ return `account_lock:${credentials.email}:${ip}`;
237
+ }
238
+ return null;
239
+ }
240
+ // ── Internals ───────────────────────────────────────────────────
241
+ fireEvent(name, payload) {
242
+ if (this.eventDispatcher) {
243
+ this.eventDispatcher.dispatch(name, payload);
244
+ }
245
+ }
246
+ getThrottleKey(credentials, request) {
247
+ if (credentials.email) {
248
+ const ip = request?.ip || '127.0.0.1';
249
+ return `login_attempts:${credentials.email}:${ip}`;
250
+ }
251
+ return null;
252
+ }
253
+ }
254
+ exports.AuthManager = AuthManager;
255
+ //# sourceMappingURL=AuthManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthManager.js","sourceRoot":"","sources":["../../src/AuthManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export interface CanResetPassword {
2
+ /**
3
+ * Get the email address where password reset links are sent.
4
+ */
5
+ getEmailForPasswordReset(): string;
6
+ /**
7
+ * Send the password reset notification.
8
+ */
9
+ sendPasswordResetNotification(token: string): Promise<void>;
10
+ }
11
+ //# sourceMappingURL=CanResetPassword.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CanResetPassword.d.ts","sourceRoot":"","sources":["../../../src/Contracts/CanResetPassword.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC7B;;OAEG;IACH,wBAAwB,IAAI,MAAM,CAAC;IAEnC;;OAEG;IACH,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=CanResetPassword.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CanResetPassword.js","sourceRoot":"","sources":["../../../src/Contracts/CanResetPassword.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ export interface CanVerifyEmail {
2
+ /**
3
+ * Determine if the user has verified their email address.
4
+ */
5
+ hasVerifiedEmail(): boolean;
6
+ /**
7
+ * Mark the given user's email as verified.
8
+ */
9
+ markEmailAsVerified(): Promise<boolean>;
10
+ /**
11
+ * Get the email address that should be used for verification.
12
+ */
13
+ getEmailForVerification(): string;
14
+ /**
15
+ * Send the email verification notification.
16
+ */
17
+ sendEmailVerificationNotification(): Promise<void>;
18
+ }
19
+ //# sourceMappingURL=CanVerifyEmail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CanVerifyEmail.d.ts","sourceRoot":"","sources":["../../../src/Contracts/CanVerifyEmail.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC3B;;OAEG;IACH,gBAAgB,IAAI,OAAO,CAAC;IAE5B;;OAEG;IACH,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAExC;;OAEG;IACH,uBAAuB,IAAI,MAAM,CAAC;IAElC;;OAEG;IACH,iCAAiC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=CanVerifyEmail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CanVerifyEmail.js","sourceRoot":"","sources":["../../../src/Contracts/CanVerifyEmail.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ export interface EventDispatcher {
2
+ /**
3
+ * Dispatch an event with an optional payload
4
+ */
5
+ dispatch(event: string, payload?: any): void;
6
+ }
7
+ //# sourceMappingURL=EventDispatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventDispatcher.d.ts","sourceRoot":"","sources":["../../../src/Contracts/EventDispatcher.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC5B;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;CAChD"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=EventDispatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventDispatcher.js","sourceRoot":"","sources":["../../../src/Contracts/EventDispatcher.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ export interface PasswordBroker {
2
+ /**
3
+ * Send a password reset link to a user.
4
+ */
5
+ sendResetLink(credentials: Record<string, any>): Promise<string>;
6
+ /**
7
+ * Reset the password for the given token.
8
+ */
9
+ reset(credentials: Record<string, any>, callback: (user: any, password: string) => Promise<void>): Promise<string>;
10
+ }
11
+ export declare const PasswordResetStatus: {
12
+ RESET_LINK_SENT: string;
13
+ RESET_THROTTLED: string;
14
+ INVALID_USER: string;
15
+ INVALID_TOKEN: string;
16
+ PASSWORD_RESET: string;
17
+ };
18
+ //# sourceMappingURL=PasswordBroker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PasswordBroker.d.ts","sourceRoot":"","sources":["../../../src/Contracts/PasswordBroker.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC3B;;OAEG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEjE;;OAEG;IACH,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACtH;AAED,eAAO,MAAM,mBAAmB;;;;;;CAM/B,CAAC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PasswordResetStatus = void 0;
4
+ exports.PasswordResetStatus = {
5
+ RESET_LINK_SENT: 'passwords.sent',
6
+ RESET_THROTTLED: 'passwords.throttled',
7
+ INVALID_USER: 'passwords.user',
8
+ INVALID_TOKEN: 'passwords.token',
9
+ PASSWORD_RESET: 'passwords.reset',
10
+ };
11
+ //# sourceMappingURL=PasswordBroker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PasswordBroker.js","sourceRoot":"","sources":["../../../src/Contracts/PasswordBroker.ts"],"names":[],"mappings":";;;AAYa,QAAA,mBAAmB,GAAG;IAC/B,eAAe,EAAE,gBAAgB;IACjC,eAAe,EAAE,qBAAqB;IACtC,YAAY,EAAE,gBAAgB;IAC9B,aAAa,EAAE,iBAAiB;IAChC,cAAc,EAAE,iBAAiB;CACpC,CAAC"}
@@ -0,0 +1,15 @@
1
+ export interface RateLimiter {
2
+ /**
3
+ * Determine if the key has too many attempts
4
+ */
5
+ tooManyAttempts(key: string, maxAttempts: number): Promise<boolean>;
6
+ /**
7
+ * Hit the rate limiter for a given key
8
+ */
9
+ hit(key: string, decayMinutes?: number): Promise<number>;
10
+ /**
11
+ * Clear the attempts for a given key
12
+ */
13
+ clear(key: string): Promise<void>;
14
+ }
15
+ //# sourceMappingURL=RateLimiter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RateLimiter.d.ts","sourceRoot":"","sources":["../../../src/Contracts/RateLimiter.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IACxB;;OAEG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpE;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEzD;;OAEG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=RateLimiter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RateLimiter.js","sourceRoot":"","sources":["../../../src/Contracts/RateLimiter.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ export interface UserProvider {
2
+ retrieveById(id: string | number): Promise<any>;
3
+ retrieveByToken?(id: string | number, token: string): Promise<any>;
4
+ updateRememberToken?(user: any, token: string | null): Promise<void>;
5
+ updateRefreshToken?(user: any, token: string | null): Promise<void>;
6
+ retrieveByRefreshToken?(token: string): Promise<any>;
7
+ retrieveByCredentials(credentials: Record<string, any>): Promise<any>;
8
+ validateCredentials(user: any, credentials: Record<string, any>): boolean | Promise<boolean>;
9
+ }
10
+ //# sourceMappingURL=UserProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserProvider.d.ts","sourceRoot":"","sources":["../../../src/Contracts/UserProvider.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IACzB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAChD,eAAe,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACnE,mBAAmB,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,kBAAkB,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,sBAAsB,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACrD,qBAAqB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACtE,mBAAmB,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAChG"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=UserProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserProvider.js","sourceRoot":"","sources":["../../../src/Contracts/UserProvider.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ export interface Guard {
2
+ check(): boolean | Promise<boolean>;
3
+ guest(): boolean | Promise<boolean>;
4
+ user(): any | Promise<any>;
5
+ id(): string | number | null | Promise<string | number | null>;
6
+ validate(credentials: Record<string, any>): boolean | Promise<boolean>;
7
+ setUser(user: any): void;
8
+ setRequest?(request: any): void;
9
+ }
10
+ //# sourceMappingURL=Guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Guard.d.ts","sourceRoot":"","sources":["../../src/Guard.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;IAClB,KAAK,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,KAAK,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3B,EAAE,IAAI,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;IAC/D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvE,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC;CACnC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Guard.js","sourceRoot":"","sources":["../../src/Guard.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ import { Guard } from '../Guard';
2
+ import { UserProvider } from '../Contracts/UserProvider';
3
+ export declare class BasicGuard implements Guard {
4
+ private provider;
5
+ private request;
6
+ private loggedUser;
7
+ constructor(provider: UserProvider, request: any);
8
+ check(): Promise<boolean>;
9
+ guest(): Promise<boolean>;
10
+ user(): Promise<any>;
11
+ id(): Promise<string | number | null>;
12
+ validate(credentials: Record<string, any>): Promise<boolean>;
13
+ setRequest(request: any): void;
14
+ setUser(user: any): void;
15
+ private getCredentialsFromRequest;
16
+ }
17
+ //# sourceMappingURL=BasicGuard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BasicGuard.d.ts","sourceRoot":"","sources":["../../../src/Guards/BasicGuard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,qBAAa,UAAW,YAAW,KAAK;IACpC,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,UAAU,CAAa;gBAEnB,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG;IAKnC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAIzB,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAIzB,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC;IAepB,EAAE,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAKrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAOlE,UAAU,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI;IAI9B,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI;IAI/B,OAAO,CAAC,yBAAyB;CAYpC"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BasicGuard = void 0;
4
+ class BasicGuard {
5
+ constructor(provider, request) {
6
+ this.loggedUser = null;
7
+ this.provider = provider;
8
+ this.request = request;
9
+ }
10
+ async check() {
11
+ return !!(await this.user());
12
+ }
13
+ async guest() {
14
+ return !(await this.check());
15
+ }
16
+ async user() {
17
+ if (this.loggedUser)
18
+ return this.loggedUser;
19
+ const credentials = this.getCredentialsFromRequest();
20
+ if (!credentials)
21
+ return null;
22
+ const user = await this.provider.retrieveByCredentials(credentials);
23
+ if (user && await this.provider.validateCredentials(user, credentials)) {
24
+ this.loggedUser = user;
25
+ return user;
26
+ }
27
+ return null;
28
+ }
29
+ async id() {
30
+ const user = await this.user();
31
+ return user ? user.id : null;
32
+ }
33
+ async validate(credentials) {
34
+ const user = await this.provider.retrieveByCredentials(credentials);
35
+ if (!user)
36
+ return false;
37
+ return await this.provider.validateCredentials(user, credentials);
38
+ }
39
+ setRequest(request) {
40
+ this.request = request;
41
+ }
42
+ setUser(user) {
43
+ this.loggedUser = user;
44
+ }
45
+ getCredentialsFromRequest() {
46
+ if (this.request?.headers?.['authorization']) {
47
+ const authHeader = this.request.headers['authorization'];
48
+ if (authHeader.startsWith('Basic ')) {
49
+ const b64 = authHeader.substring(6);
50
+ const decoded = Buffer.from(b64, 'base64').toString('ascii');
51
+ const [email, password] = decoded.split(':');
52
+ return { email, password };
53
+ }
54
+ }
55
+ return null;
56
+ }
57
+ }
58
+ exports.BasicGuard = BasicGuard;
59
+ //# sourceMappingURL=BasicGuard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BasicGuard.js","sourceRoot":"","sources":["../../../src/Guards/BasicGuard.ts"],"names":[],"mappings":";;;AAGA,MAAa,UAAU;IAKnB,YAAY,QAAsB,EAAE,OAAY;QAFxC,eAAU,GAAQ,IAAI,CAAC;QAG3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAEM,KAAK,CAAC,KAAK;QACd,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACjC,CAAC;IAEM,KAAK,CAAC,KAAK;QACd,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACjC,CAAC;IAEM,KAAK,CAAC,IAAI;QACb,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC,UAAU,CAAC;QAE5C,MAAM,WAAW,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACrD,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC;QAE9B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;QACpE,IAAI,IAAI,IAAI,MAAM,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC;YACrE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,EAAE;QACX,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACjC,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,WAAgC;QAClD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;QACpE,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QAExB,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACtE,CAAC;IAEM,UAAU,CAAC,OAAY;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAEM,OAAO,CAAC,IAAS;QACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IAC3B,CAAC;IAEO,yBAAyB;QAC7B,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC;YAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YACzD,IAAI,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAClC,MAAM,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACpC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAC7D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC7C,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;YAC/B,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAjED,gCAiEC"}
@@ -0,0 +1,36 @@
1
+ import { Guard } from '../Guard';
2
+ import { UserProvider } from '../Contracts/UserProvider';
3
+ export declare class JwtGuard implements Guard {
4
+ private provider;
5
+ private request;
6
+ private secret;
7
+ private options;
8
+ private loggedUser;
9
+ constructor(provider: UserProvider, request: any, secret: string, options?: any);
10
+ check(): Promise<boolean>;
11
+ guest(): Promise<boolean>;
12
+ user(): Promise<any>;
13
+ id(): Promise<string | number | null>;
14
+ validate(credentials: Record<string, any>): Promise<boolean>;
15
+ /**
16
+ * Authenticate a user and return a JWT token and refresh token
17
+ */
18
+ attempt(credentials: Record<string, any>): Promise<{
19
+ access_token: string;
20
+ refresh_token?: string;
21
+ } | false>;
22
+ issueTokens(user: any, additionalPayload?: object): Promise<{
23
+ access_token: string;
24
+ refresh_token?: string;
25
+ }>;
26
+ refresh(refreshToken: string): Promise<{
27
+ access_token: string;
28
+ refresh_token?: string;
29
+ }>;
30
+ login(user: any): void;
31
+ logout(): void;
32
+ setUser(user: any): void;
33
+ setRequest(request: any): void;
34
+ protected getTokenForRequest(): string | null;
35
+ }
36
+ //# sourceMappingURL=JwtGuard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JwtGuard.d.ts","sourceRoot":"","sources":["../../../src/Guards/JwtGuard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAIzD,qBAAa,QAAS,YAAW,KAAK;IAClC,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,UAAU,CAAa;gBAEnB,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,GAAQ;IAOtE,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAIzB,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAIzB,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC;IAsBpB,EAAE,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAcrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAOzE;;OAEG;IACU,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,KAAK,CAAC;IAS5G,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,iBAAiB,GAAE,MAAW,GAAG,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAejH,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAa9F,KAAK,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI;IAItB,MAAM,IAAI,IAAI;IAId,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI;IAOxB,UAAU,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI;IAIrC,SAAS,CAAC,kBAAkB,IAAI,MAAM,GAAG,IAAI;CAkBhD"}