@spinajs/rbac 2.0.485 → 2.0.487

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 (59) hide show
  1. package/lib/cjs/actions.d.ts +18 -2
  2. package/lib/cjs/actions.d.ts.map +1 -1
  3. package/lib/cjs/actions.js +193 -13
  4. package/lib/cjs/actions.js.map +1 -1
  5. package/lib/cjs/config/rbac.d.ts +35 -1
  6. package/lib/cjs/config/rbac.d.ts.map +1 -1
  7. package/lib/cjs/config/rbac.js +39 -4
  8. package/lib/cjs/config/rbac.js.map +1 -1
  9. package/lib/cjs/index.d.ts +1 -0
  10. package/lib/cjs/index.d.ts.map +1 -1
  11. package/lib/cjs/index.js +12 -2
  12. package/lib/cjs/index.js.map +1 -1
  13. package/lib/cjs/migrations/RBACRegisteredAt_2026_07_28_00_00_00.d.ts +21 -0
  14. package/lib/cjs/migrations/RBACRegisteredAt_2026_07_28_00_00_00.d.ts.map +1 -0
  15. package/lib/cjs/migrations/RBACRegisteredAt_2026_07_28_00_00_00.js +49 -0
  16. package/lib/cjs/migrations/RBACRegisteredAt_2026_07_28_00_00_00.js.map +1 -0
  17. package/lib/cjs/models/User.d.ts +20 -1
  18. package/lib/cjs/models/User.d.ts.map +1 -1
  19. package/lib/cjs/models/User.js +27 -6
  20. package/lib/cjs/models/User.js.map +1 -1
  21. package/lib/cjs/session.d.ts +82 -0
  22. package/lib/cjs/session.d.ts.map +1 -1
  23. package/lib/cjs/session.js +105 -1
  24. package/lib/cjs/session.js.map +1 -1
  25. package/lib/cjs/util.d.ts +20 -1
  26. package/lib/cjs/util.d.ts.map +1 -1
  27. package/lib/cjs/util.js +50 -9
  28. package/lib/cjs/util.js.map +1 -1
  29. package/lib/mjs/actions.d.ts +18 -2
  30. package/lib/mjs/actions.d.ts.map +1 -1
  31. package/lib/mjs/actions.js +193 -14
  32. package/lib/mjs/actions.js.map +1 -1
  33. package/lib/mjs/config/rbac.d.ts +35 -1
  34. package/lib/mjs/config/rbac.d.ts.map +1 -1
  35. package/lib/mjs/config/rbac.js +39 -4
  36. package/lib/mjs/config/rbac.js.map +1 -1
  37. package/lib/mjs/index.d.ts +1 -0
  38. package/lib/mjs/index.d.ts.map +1 -1
  39. package/lib/mjs/index.js +13 -3
  40. package/lib/mjs/index.js.map +1 -1
  41. package/lib/mjs/migrations/RBACRegisteredAt_2026_07_28_00_00_00.d.ts +21 -0
  42. package/lib/mjs/migrations/RBACRegisteredAt_2026_07_28_00_00_00.d.ts.map +1 -0
  43. package/lib/mjs/migrations/RBACRegisteredAt_2026_07_28_00_00_00.js +46 -0
  44. package/lib/mjs/migrations/RBACRegisteredAt_2026_07_28_00_00_00.js.map +1 -0
  45. package/lib/mjs/models/User.d.ts +20 -1
  46. package/lib/mjs/models/User.d.ts.map +1 -1
  47. package/lib/mjs/models/User.js +26 -5
  48. package/lib/mjs/models/User.js.map +1 -1
  49. package/lib/mjs/session.d.ts +82 -0
  50. package/lib/mjs/session.d.ts.map +1 -1
  51. package/lib/mjs/session.js +99 -0
  52. package/lib/mjs/session.js.map +1 -1
  53. package/lib/mjs/util.d.ts +20 -1
  54. package/lib/mjs/util.d.ts.map +1 -1
  55. package/lib/mjs/util.js +48 -8
  56. package/lib/mjs/util.js.map +1 -1
  57. package/lib/tsconfig.cjs.tsbuildinfo +1 -1
  58. package/lib/tsconfig.mjs.tsbuildinfo +1 -1
  59. package/package.json +11 -11
@@ -104,6 +104,22 @@ export declare function _user(identifier: number | string | User): () => Promise
104
104
  * @returns
105
105
  */
106
106
  export declare function _user_unsafe(identifier: number | string | User): () => Promise<User>;
107
+ /**
108
+ * Destroys every session belonging to a user, on every device.
109
+ *
110
+ * Called from each action that invalidates what a live session was granted on:
111
+ * a password change or reset ( the credential behind the session is gone ), a
112
+ * ban or a deactivation ( the account may no longer act at all ). Without this
113
+ * an attacker who is already inside keeps their session while the victim
114
+ * changes the password that was supposed to lock them out.
115
+ *
116
+ * Errors are NOT swallowed: a session store that cannot be reached means the
117
+ * revocation did not happen, and the caller must learn that rather than be told
118
+ * the account is secure.
119
+ *
120
+ * @param user - the user whose sessions are destroyed, or their numeric id
121
+ */
122
+ export declare function revokeUserSessions(user: User | number): Promise<void>;
107
123
  /**
108
124
  * ===============================================
109
125
  * USER ACTIONS
@@ -159,11 +175,11 @@ export declare function deleteUser(identifier: number | string | User): Promise<
159
175
  * Grants an additional role to a user.
160
176
  * The role is added only if not already present. Emits a {@link UserRoleGranted} event.
161
177
  *
162
- * @param identifier - numeric id or uuid / email / login string
178
+ * @param identifier - numeric id, uuid / email / login string, or an existing {@link User} instance
163
179
  * @param role - role name to grant
164
180
  * @returns the updated {@link User}
165
181
  */
166
- export declare function grant(identifier: number | string, role: string): Promise<User>;
182
+ export declare function grant(identifier: number | string | User, role: string): Promise<User>;
167
183
  /**
168
184
  * Revokes a role from a user.
169
185
  * Removes the role from the user's role list and emits a {@link UserRoleRevoked} event.
@@ -1 +1 @@
1
- {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/actions.ts"],"names":[],"mappings":"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"}
@@ -8,9 +8,10 @@ import { _cfg, _service } from '@spinajs/configuration';
8
8
  import { UserActivated, UserBanned, UserChanged, UserCreated, UserDeactivated, UserDeleted, UserLogged, UserPasswordChangeRequest, UserPasswordChanged, UserRoleGranted, UserRoleRevoked, UserUnbanned } from './events/index.js';
9
9
  import { DI } from '@spinajs/di';
10
10
  import { Configuration } from '@spinajs/configuration';
11
- import { AuthProvider, PasswordProvider, PasswordValidationProvider } from './interfaces.js';
11
+ import { AthenticationErrorCodes, AuthProvider, PasswordProvider, PasswordValidationProvider, SessionProvider } from './interfaces.js';
12
12
  import { DateTime } from 'luxon';
13
13
  import { ErrorCode } from '@spinajs/exceptions';
14
+ import { createHash, timingSafeEqual } from 'crypto';
14
15
  import { v4 as uuidv4 } from 'uuid';
15
16
  import { UserLoginFailed } from './events/UserLoginFailed.js';
16
17
  import { UserMetadataChange } from './events/UserMetadataChange.js';
@@ -46,9 +47,7 @@ export function _get_system_user() {
46
47
  const s = _check_arg(_trim(), _non_empty())(systemRole, 'rbac.systemRole');
47
48
  const c = _check_arg(_trim(), _non_empty())(roleColumn, 'rbac.roleColumn');
48
49
  return [s, c];
49
- }, ([systemRole, roleColumn]) => User.query()
50
- .where(roleColumn, systemRole)
51
- .firstOrFail());
50
+ }, ([systemRole, roleColumn]) => User.query().where(roleColumn, systemRole).firstOrFail());
52
51
  }
53
52
  /**
54
53
  *
@@ -190,7 +189,39 @@ export function _user_unsafe(identifier) {
190
189
  if (id instanceof UserBase) {
191
190
  return () => Promise.resolve(id);
192
191
  }
193
- return () => UserBase.query().whereAnything(id).populate("Metadata").firstOrFail();
192
+ return () => UserBase.query().whereAnything(id).populate('Metadata').firstOrFail();
193
+ }
194
+ /**
195
+ * Destroys every session belonging to a user, on every device.
196
+ *
197
+ * Called from each action that invalidates what a live session was granted on:
198
+ * a password change or reset ( the credential behind the session is gone ), a
199
+ * ban or a deactivation ( the account may no longer act at all ). Without this
200
+ * an attacker who is already inside keeps their session while the victim
201
+ * changes the password that was supposed to lock them out.
202
+ *
203
+ * Errors are NOT swallowed: a session store that cannot be reached means the
204
+ * revocation did not happen, and the caller must learn that rather than be told
205
+ * the account is secure.
206
+ *
207
+ * @param user - the user whose sessions are destroyed, or their numeric id
208
+ */
209
+ export async function revokeUserSessions(user) {
210
+ const userId = _.isNumber(user) ? user : user?.Id;
211
+ if (!userId) {
212
+ return;
213
+ }
214
+ const provider = await _service('rbac.session', SessionProvider)();
215
+ await provider.deleteByUser(userId);
216
+ }
217
+ /**
218
+ * Chain step form of {@link revokeUserSessions} — revokes and forwards the user.
219
+ */
220
+ function _revoke_sessions() {
221
+ return async (u) => {
222
+ await revokeUserSessions(u);
223
+ return u;
224
+ };
194
225
  }
195
226
  /**
196
227
  * ===============================================
@@ -213,7 +244,9 @@ export async function activate(identifier) {
213
244
  * @param identifier - numeric id, uuid / email / login string, or an existing {@link User} instance
214
245
  */
215
246
  export async function deactivate(identifier) {
216
- return _chain(_user(identifier), _user_update({ IsActive: false }), _user_ev(UserDeactivated), _user_email('deactivated'));
247
+ // Sessions go with the account: a deactivated user must stop acting NOW, not
248
+ // whenever their session happens to expire.
249
+ return _chain(_user(identifier), _user_update({ IsActive: false }), _revoke_sessions(), _user_ev(UserDeactivated), _user_email('deactivated'));
217
250
  }
218
251
  /**
219
252
  * Reads a create-middleware list from configuration.
@@ -285,13 +318,19 @@ export async function create(email, login, password, roles, id, metadata) {
285
318
  * @param identifier - numeric id, uuid / email / login string, or an existing {@link User} instance
286
319
  */
287
320
  export async function deleteUser(identifier) {
288
- return _chain(_user(identifier), _tap((u) => u.destroy()), _user_ev(UserDeleted), _user_email('deleted'));
321
+ return _chain(_user(identifier), _tap((u) => u.destroy()),
322
+ // Same reason a deactivation revokes: the account may no longer act. A live
323
+ // session outlasting the deletion is worse here than there — the session
324
+ // middleware resolves its user through `isActiveUser()`, which no longer
325
+ // matches a soft-deleted row, so every request from that session dies in
326
+ // the middleware instead of being cleanly logged out.
327
+ _revoke_sessions(), _user_ev(UserDeleted), _user_email('deleted'));
289
328
  }
290
329
  /**
291
330
  * Grants an additional role to a user.
292
331
  * The role is added only if not already present. Emits a {@link UserRoleGranted} event.
293
332
  *
294
- * @param identifier - numeric id or uuid / email / login string
333
+ * @param identifier - numeric id, uuid / email / login string, or an existing {@link User} instance
295
334
  * @param role - role name to grant
296
335
  * @returns the updated {@link User}
297
336
  */
@@ -333,7 +372,11 @@ export async function ban(identifier, reason, duration) {
333
372
  { key: USER_COMMON_METADATA.USER_BAN_REASON, value: reason },
334
373
  { key: USER_COMMON_METADATA.USER_BAN_IS_BANNED, value: true },
335
374
  { key: USER_COMMON_METADATA.USER_BAN_START_DATE, value: DateTime.now() },
336
- ]), _user_ev(UserBanned), _user_email('banned'));
375
+ ]),
376
+ // A ban that leaves the banned user's session alive bans nothing until that
377
+ // session expires — `isActiveUser` does not filter on the ban flag, so the
378
+ // session would keep resolving happily.
379
+ _revoke_sessions(), _user_ev(UserBanned), _user_email('banned'));
337
380
  }
338
381
  /**
339
382
  *
@@ -383,7 +426,19 @@ export async function passwordChangeRequest(identifier) {
383
426
  * @param token - the reset token that was issued by {@link passwordChangeRequest}
384
427
  */
385
428
  export async function confirmPasswordReset(identifier, newPassword, token) {
386
- return _chain(_user(identifier), _tap((u) => _chain(u, _zip(_get_user_meta(USER_COMMON_METADATA.USER_PWD_RESET_START_DATE), _get_user_meta(USER_COMMON_METADATA.USER_PWD_RESET_WAIT_TIME)), ([dueDate, waitTime]) => {
429
+ return _chain(_user(identifier),
430
+ // A reset must not resurrect an account that is banned, deactivated or
431
+ // deleted — otherwise the reset flow is a way around every one of those
432
+ // states. Same ErrorCode family the caller already collapses into one
433
+ // opaque failure, so this does not become an account-state oracle.
434
+ _tap(async (u) => {
435
+ if (u.Metadata[USER_COMMON_METADATA.USER_BAN_IS_BANNED]) {
436
+ throw new ErrorCode(E_CODES.E_USER_BANNED, `Password reset refused: user is banned`, { user: u });
437
+ }
438
+ if (!u.IsActive || u.DeletedAt) {
439
+ throw new ErrorCode(E_CODES.E_USER_NOT_ACTIVE, `Password reset refused: user is not active`, { user: u });
440
+ }
441
+ }), _tap((u) => _chain(u, _zip(_get_user_meta(USER_COMMON_METADATA.USER_PWD_RESET_START_DATE), _get_user_meta(USER_COMMON_METADATA.USER_PWD_RESET_WAIT_TIME)), ([dueDate, waitTime]) => {
387
442
  if (dueDate.plus({ seconds: waitTime }) < DateTime.now()) {
388
443
  throw new ErrorCode(E_CODES.E_TOKEN_EXPIRED, `Password change token expired, token expiration date is: ${dueDate.toISO()}`, {
389
444
  dueDate,
@@ -393,14 +448,44 @@ export async function confirmPasswordReset(identifier, newPassword, token) {
393
448
  });
394
449
  }
395
450
  })), _tap((u) => _chain(u, _get_user_meta(USER_COMMON_METADATA.USER_PWD_RESET_TOKEN), async (resetToken) => {
396
- if (resetToken !== token) {
451
+ if (!_secure_compare(String(resetToken), token)) {
397
452
  throw new ErrorCode(E_CODES.E_TOKEN_INVALID, `Password change token invalid, operation not permitted`, {
398
453
  token,
399
454
  resetToken,
400
455
  user: u,
401
456
  });
402
457
  }
403
- })), changePassword(newPassword));
458
+ })), changePassword(newPassword),
459
+ // Burn the token. Validating it and leaving it in place made it a
460
+ // multi-use credential for the whole `passwordResetWaitTime` window:
461
+ // anyone who saw the reset mail once could keep re-taking the account.
462
+ _tap(async (u) => {
463
+ await u.Metadata.delete(USER_COMMON_METADATA.USER_PWD_RESET_TOKEN);
464
+ await u.Metadata.delete(USER_COMMON_METADATA.USER_PWD_RESET_START_DATE);
465
+ await u.Metadata.delete(USER_COMMON_METADATA.USER_PWD_RESET_WAIT_TIME);
466
+ await u.Metadata.delete(USER_COMMON_METADATA.USER_PWD_RESET);
467
+ }));
468
+ }
469
+ /**
470
+ * Length-independent, constant-time string comparison for secrets.
471
+ *
472
+ * `!==` on a token leaks how many leading characters matched through timing.
473
+ * The margin is small over a network and the tokens are uuid-shaped, but a
474
+ * comparison of a secret is the wrong place to rely on that.
475
+ *
476
+ * @param a - value read from storage
477
+ * @param b - value supplied by the caller
478
+ */
479
+ function _secure_compare(a, b) {
480
+ const ha = createHash('sha256')
481
+ .update(a ?? '')
482
+ .digest();
483
+ const hb = createHash('sha256')
484
+ .update(b ?? '')
485
+ .digest();
486
+ // hashing first makes both operands the same length, which timingSafeEqual
487
+ // requires and which also stops the length itself from leaking
488
+ return timingSafeEqual(ha, hb);
404
489
  }
405
490
  /**
406
491
  * Returns a function that changes a user's password.
@@ -420,7 +505,18 @@ export function changePassword(password) {
420
505
  }
421
506
  }),
422
507
  // update password
423
- ({ pwd }) => pwd.hash(password), (hPassword) => _chain(u, _update({ Password: hPassword }), _set_user_meta(USER_COMMON_METADATA.USER_PWD_RESET_LAST_ATTEMPT, DateTime.now().toISO()), _user_ev(UserPasswordChanged)));
508
+ ({ pwd }) => pwd.hash(password), (hPassword) => _chain(u, _update({ Password: hPassword }), _set_user_meta([
509
+ { key: USER_COMMON_METADATA.USER_PWD_RESET_LAST_ATTEMPT, value: DateTime.now().toISO() },
510
+ // a successful password change clears the login throttle: the
511
+ // credential the failures were counted against no longer exists
512
+ { key: USER_COMMON_METADATA.USER_LOGIN_ATTEMPTS, value: 0 },
513
+ { key: USER_COMMON_METADATA.USER_LOGIN_LOCKED_UNTIL, value: null },
514
+ ]),
515
+ // Every session was authorized by the OLD password. Whoever holds one
516
+ // — including whoever the user is changing the password because of —
517
+ // loses it here. Callers that want the acting user to stay logged in
518
+ // ( eg. PATCH /user/password ) mint a fresh session afterwards.
519
+ _revoke_sessions(), _user_ev(UserPasswordChanged)));
424
520
  };
425
521
  }
426
522
  /**
@@ -463,9 +559,17 @@ export function passwordMatch(password) {
463
559
  export async function login(identifier, password) {
464
560
  password = _check_arg(_trim(), _non_empty())(password, 'password');
465
561
  return await _chain(_user_unsafe(identifier), _catch((u) => {
466
- return _chain(_service('rbac.auth', AuthProvider), async (sAuth) => sAuth.authenticate(u.Email, password), _update({ LastLoginAt: DateTime.now() }), _user_ev(UserLogged));
562
+ return _chain(async () => {
563
+ // Refuse before the password is even checked, so a locked account
564
+ // cannot be probed at all during the lockout window.
565
+ await _assert_not_locked(u);
566
+ return _service('rbac.auth', AuthProvider)();
567
+ }, async (sAuth) => sAuth.authenticate(u.Email, password), _update({ LastLoginAt: DateTime.now() }), _clear_login_throttle(), _user_ev(UserLogged));
467
568
  }, (err, u) => {
468
569
  return _chain(() => u,
570
+ // count the failure and lock the account once the configured
571
+ // threshold is reached
572
+ _register_failed_login(err),
469
573
  // send event of failed login
470
574
  _user_ev(UserLoginFailed, err),
471
575
  // rethrow error for caller
@@ -474,4 +578,79 @@ export async function login(identifier, password) {
474
578
  });
475
579
  }));
476
580
  }
581
+ /**
582
+ * Throws when the account is inside a lockout window opened by
583
+ * {@link _register_failed_login}.
584
+ *
585
+ * @param u - user attempting to authenticate
586
+ */
587
+ async function _assert_not_locked(u) {
588
+ const raw = u?.Metadata?.[USER_COMMON_METADATA.USER_LOGIN_LOCKED_UNTIL];
589
+ if (!raw) {
590
+ return;
591
+ }
592
+ const lockedUntil = raw instanceof DateTime ? raw : DateTime.fromISO(String(raw));
593
+ if (lockedUntil.isValid && lockedUntil > DateTime.now()) {
594
+ throw new ErrorCode(AthenticationErrorCodes.E_LOGIN_ATTEMPTS_EXCEEDED, `Too many failed login attempts, account is temporarily locked until ${lockedUntil.toISO()}`, {
595
+ user: u,
596
+ lockedUntil,
597
+ });
598
+ }
599
+ }
600
+ /**
601
+ * Clears the failure counter and any expired lock after a successful login.
602
+ */
603
+ function _clear_login_throttle() {
604
+ return async (u) => {
605
+ const meta = u?.Metadata;
606
+ if (!meta) {
607
+ return u;
608
+ }
609
+ const hasAttempts = Number(meta[USER_COMMON_METADATA.USER_LOGIN_ATTEMPTS] ?? 0) > 0;
610
+ const hasLock = Boolean(meta[USER_COMMON_METADATA.USER_LOGIN_LOCKED_UNTIL]);
611
+ if (!hasAttempts && !hasLock) {
612
+ return u;
613
+ }
614
+ await meta.delete(USER_COMMON_METADATA.USER_LOGIN_ATTEMPTS);
615
+ await meta.delete(USER_COMMON_METADATA.USER_LOGIN_LOCKED_UNTIL);
616
+ return u;
617
+ };
618
+ }
619
+ /**
620
+ * Records one failed authentication and, at `rbac.password.blockAfterAttempts`
621
+ * consecutive failures, locks the account for `rbac.password.lockoutTime`
622
+ * seconds.
623
+ *
624
+ * `blockAfterAttempts <= 0` disables throttling entirely. A rejection that was
625
+ * itself the lockout is not counted — otherwise hammering a locked account
626
+ * would keep extending the lock indefinitely.
627
+ *
628
+ * @param err - the error that ended the login attempt
629
+ */
630
+ function _register_failed_login(err) {
631
+ return async (u) => {
632
+ const meta = u?.Metadata;
633
+ if (!meta) {
634
+ return u;
635
+ }
636
+ if (err instanceof ErrorCode && err.code === AthenticationErrorCodes.E_LOGIN_ATTEMPTS_EXCEEDED) {
637
+ return u;
638
+ }
639
+ const blockAfter = await _cfg('rbac.password.blockAfterAttempts', 5)();
640
+ const lockoutTime = await _cfg('rbac.password.lockoutTime', 15 * 60)();
641
+ if (!blockAfter || blockAfter <= 0) {
642
+ return u;
643
+ }
644
+ const attempts = Number(meta[USER_COMMON_METADATA.USER_LOGIN_ATTEMPTS] ?? 0) + 1;
645
+ if (attempts >= blockAfter) {
646
+ meta[USER_COMMON_METADATA.USER_LOGIN_ATTEMPTS] = 0;
647
+ meta[USER_COMMON_METADATA.USER_LOGIN_LOCKED_UNTIL] = DateTime.now().plus({ seconds: lockoutTime }).toISO();
648
+ }
649
+ else {
650
+ meta[USER_COMMON_METADATA.USER_LOGIN_ATTEMPTS] = attempts;
651
+ }
652
+ await meta.update();
653
+ return u;
654
+ };
655
+ }
477
656
  //# sourceMappingURL=actions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/actions.ts"],"names":[],"mappings":"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"}
@@ -178,6 +178,15 @@ declare const rbac: {
178
178
  * How long we should wait to reset password ( after this time reset token is invalid )
179
179
  */
180
180
  passwordResetWaitTime: number;
181
+ /**
182
+ * Consecutive failed logins that lock the account. 0 disables throttling.
183
+ */
184
+ blockAfterAttempts: number;
185
+ /**
186
+ * How long the account stays locked once `blockAfterAttempts` is hit,
187
+ * in seconds.
188
+ */
189
+ lockoutTime: number;
181
190
  };
182
191
  user: {
183
192
  profile: string;
@@ -194,7 +203,32 @@ declare const rbac: {
194
203
  ttl: number;
195
204
  maxLifetime: number;
196
205
  };
197
- cookie: {};
206
+ /**
207
+ * Session cookie. Passed through to express, EXCEPT:
208
+ * - `httpOnly` is forced on and cannot be configured away,
209
+ * - `secure` and `sameSite` default to `true` / `'strict'`,
210
+ * - `name` sets the cookie name ( default `ssid` ),
211
+ * - `hostPrefix: true` emits it as `__Host-<name>`, which additionally
212
+ * forces `secure`, `path: '/'` and drops `domain`.
213
+ *
214
+ * Local http development needs `secure: false`; everything else should be
215
+ * left alone.
216
+ */
217
+ cookie: {
218
+ /**
219
+ * Secure everywhere except local development.
220
+ *
221
+ * `NODE_ENV=production` is what a deployment sets, and there the cookie
222
+ * must never leave over plain http. Anywhere else ( a developer running
223
+ * the app on http://localhost ) the browser would simply drop a Secure
224
+ * cookie and nobody could log in, so it is relaxed there and only
225
+ * there.
226
+ *
227
+ * An application serving https outside production should set this back
228
+ * to `true` in its own config.
229
+ */
230
+ secure: boolean;
231
+ };
198
232
  };
199
233
  /**
200
234
  * System role is used to perform internal operations on users, like password reset, email change etc.
@@ -1 +1 @@
1
- {"version":3,"file":"rbac.d.ts","sourceRoot":"","sources":["../../../src/config/rbac.ts"],"names":[],"mappings":"AAcA,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA2LJ;;eAEG;;;;;YASH;;eAEG;;;;;;;;YASH;;;;eAIG;;;;;;;;QAWL;;WAEG;;QAEH;;;;;eAKO;;;8BAGiB,KAAK,CAAC,QAAQ,CAAC;6BAChB,KAAK,CAAC,QAAQ,CAAC;;;QAMtC;;WAEG;;QAGH;;;WAGG;;YAED;;;eAGG;6BACoB,MAAM,EAAE;;QAGjC;;;;;WAKG;;YAED;;;eAGG;;YAGH;;;eAGG;4BAC2B,MAAM,EAAE;;;CAG3C,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"rbac.d.ts","sourceRoot":"","sources":["../../../src/config/rbac.ts"],"names":[],"mappings":"AAcA,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA2LJ;;eAEG;;;;;YASH;;eAEG;;YAGH;;eAEG;;YAGH;;;eAGG;;;;;;;;YASH;;;;eAIG;;;;;;YAWH;;;;;;;;;;eAUG;;gBAED;;;;;;;;;;;mBAWG;;;;QAKP;;WAEG;;QAEH;;;;;eAKO;;;8BAGiB,KAAK,CAAC,QAAQ,CAAC;6BAChB,KAAK,CAAC,QAAQ,CAAC;;;QAMtC;;WAEG;;QAGH;;;WAGG;;YAED;;;eAGG;6BACoB,MAAM,EAAE;;QAGjC;;;;;WAKG;;YAED;;;eAGG;;YAGH;;;eAGG;4BAC2B,MAAM,EAAE;;;CAG3C,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -185,6 +185,15 @@ const rbac = {
185
185
  * How long we should wait to reset password ( after this time reset token is invalid )
186
186
  */
187
187
  passwordResetWaitTime: 60 * 60,
188
+ /**
189
+ * Consecutive failed logins that lock the account. 0 disables throttling.
190
+ */
191
+ blockAfterAttempts: 5,
192
+ /**
193
+ * How long the account stays locked once `blockAfterAttempts` is hit,
194
+ * in seconds.
195
+ */
196
+ lockoutTime: 15 * 60,
188
197
  },
189
198
  user: {
190
199
  profile: "BasicProfileProvider"
@@ -198,11 +207,37 @@ const rbac = {
198
207
  */
199
208
  expiration: {
200
209
  service: 'SlidingCappedExpiration',
201
- ttl: 120, // minutes
202
- maxLifetime: 1440, // minutes (SlidingCappedExpiration only)
210
+ // idle timeout — OWASP puts a low-risk application at 15-30 minutes
211
+ ttl: 30, // minutes
212
+ // hard ceiling on a single session's life, regardless of activity
213
+ maxLifetime: 480, // minutes (SlidingCappedExpiration only)
214
+ },
215
+ /**
216
+ * Session cookie. Passed through to express, EXCEPT:
217
+ * - `httpOnly` is forced on and cannot be configured away,
218
+ * - `secure` and `sameSite` default to `true` / `'strict'`,
219
+ * - `name` sets the cookie name ( default `ssid` ),
220
+ * - `hostPrefix: true` emits it as `__Host-<name>`, which additionally
221
+ * forces `secure`, `path: '/'` and drops `domain`.
222
+ *
223
+ * Local http development needs `secure: false`; everything else should be
224
+ * left alone.
225
+ */
226
+ cookie: {
227
+ /**
228
+ * Secure everywhere except local development.
229
+ *
230
+ * `NODE_ENV=production` is what a deployment sets, and there the cookie
231
+ * must never leave over plain http. Anywhere else ( a developer running
232
+ * the app on http://localhost ) the browser would simply drop a Secure
233
+ * cookie and nobody could log in, so it is relaxed there and only
234
+ * there.
235
+ *
236
+ * An application serving https outside production should set this back
237
+ * to `true` in its own config.
238
+ */
239
+ secure: process.env.NODE_ENV === 'production',
203
240
  },
204
- // passthrough express cookie options
205
- cookie: {},
206
241
  },
207
242
  /**
208
243
  * System role is used to perform internal operations on users, like password reset, email change etc.
@@ -1 +1 @@
1
- {"version":3,"file":"rbac.js","sourceRoot":"","sources":["../../../src/config/rbac.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rbac.js","sourceRoot":"","sources":["../../../src/config/rbac.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,7 @@ export * from './session-codec.js';
16
16
  export * from './models/User.js';
17
17
  export * from './models/UserMetadata.js';
18
18
  export * from './migrations/RBACInitial_2022_06_28_01_13_00.js';
19
+ export * from './migrations/RBACRegisteredAt_2026_07_28_00_00_00.js';
19
20
  export * from './events/index.js';
20
21
  export * from './actions.js';
21
22
  export * from './middleware.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,eAAe,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAc,YAAY,EAAkB,MAAM,aAAa,CAAC;AAIvE,OAAO,WAAW,CAAC;AACnB,OAAO,eAAe,CAAC;AACvB,OAAO,cAAc,CAAC;AACtB,OAAO,yBAAyB,CAAC;AACjC,OAAO,oBAAoB,CAAC;AAC5B,OAAO,gBAAgB,CAAC;AAGxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iDAAiD,CAAC;AAChE,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAG/B,QAAA,MAAQ,UAAU,sBAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;AAErC,qBACa,gBAAiB,SAAQ,YAAY;IACzC,SAAS,IAAI,IAAI;CAwDzB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,eAAe,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAc,YAAY,EAAkB,MAAM,aAAa,CAAC;AAIvE,OAAO,WAAW,CAAC;AACnB,OAAO,eAAe,CAAC;AACvB,OAAO,cAAc,CAAC;AACtB,OAAO,yBAAyB,CAAC;AACjC,OAAO,oBAAoB,CAAC;AAC5B,OAAO,gBAAgB,CAAC;AAIxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iDAAiD,CAAC;AAChE,cAAc,sDAAsD,CAAC;AACrE,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAG/B,QAAA,MAAQ,UAAU,sBAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;AAErC,qBACa,gBAAiB,SAAQ,YAAY;IACzC,SAAS,IAAI,IAAI;CA8DzB"}
package/lib/mjs/index.js CHANGED
@@ -15,7 +15,8 @@ import './session.js';
15
15
  import './session-expiration.js';
16
16
  import './session-codec.js';
17
17
  import './ownership.js';
18
- import { User } from './models/User.js';
18
+ import { User, USER_SECURITY_METADATA_KEYS } from './models/User.js';
19
+ import { UserMetadataBase } from './models/UserMetadata.js';
19
20
  export * from './interfaces.js';
20
21
  export * from './auth.js';
21
22
  export * from './password.js';
@@ -25,6 +26,7 @@ export * from './session-codec.js';
25
26
  export * from './models/User.js';
26
27
  export * from './models/UserMetadata.js';
27
28
  export * from './migrations/RBACInitial_2022_06_28_01_13_00.js';
29
+ export * from './migrations/RBACRegisteredAt_2026_07_28_00_00_00.js';
28
30
  export * from './events/index.js';
29
31
  export * from './actions.js';
30
32
  export * from './middleware.js';
@@ -38,6 +40,14 @@ const { Permission } = ac;
38
40
  export { AccessControl, Permission };
39
41
  let RbacBootstrapper = class RbacBootstrapper extends Bootstrapper {
40
42
  bootstrap() {
43
+ /**
44
+ * Credential-bearing metadata never leaves the server in a dehydrated user.
45
+ * Seeded here rather than as the field initialiser so an application ( or
46
+ * another package, eg. rbac-http-user adding its 2FA keys ) can append to
47
+ * the list without having to restate this one. De-duplicated because tests
48
+ * run bootstrappers repeatedly against a live static.
49
+ */
50
+ UserMetadataBase._hiddenKeys = [...new Set([...UserMetadataBase._hiddenKeys, ...USER_SECURITY_METADATA_KEYS])];
41
51
  const ac = new AccessControl();
42
52
  DI.register(ac).asValue('AccessControl');
43
53
  DI.once('di.resolved.Configuration', (container, configuration) => {
@@ -58,7 +68,7 @@ let RbacBootstrapper = class RbacBootstrapper extends Bootstrapper {
58
68
  return User.where({
59
69
  Uuid: userUUID,
60
70
  })
61
- .populate("Metadata")
71
+ .populate('Metadata')
62
72
  .isActiveUser()
63
73
  .firstOrFail();
64
74
  }).as('RbacUserFactory');
@@ -73,7 +83,7 @@ let RbacBootstrapper = class RbacBootstrapper extends Bootstrapper {
73
83
  });
74
84
  }).as('RbacGuestUserFactory');
75
85
  DI.register(async (_) => {
76
- const system = await User.select().where("Role", ["system"]).where("Login", "__system__").firstOrFail();
86
+ const system = await User.select().where('Role', ['system']).where('Login', '__system__').firstOrFail();
77
87
  return system;
78
88
  }).as('RbacSystemUserFactory');
79
89
  DI.register(async (_, role) => {