@lenne.tech/nest-server 11.35.1 → 11.36.1

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 (51) hide show
  1. package/.claude/rules/configurable-features.md +3 -0
  2. package/CLAUDE.md +1 -0
  3. package/FRAMEWORK-API.md +3 -2
  4. package/dist/core/common/helpers/logging.helper.js +1 -1
  5. package/dist/core/common/helpers/logging.helper.js.map +1 -1
  6. package/dist/core/common/interfaces/server-options.interface.d.ts +3 -0
  7. package/dist/core/common/services/brevo.service.d.ts +1 -0
  8. package/dist/core/common/services/brevo.service.js +10 -2
  9. package/dist/core/common/services/brevo.service.js.map +1 -1
  10. package/dist/core/modules/better-auth/better-auth.config.d.ts +5 -2
  11. package/dist/core/modules/better-auth/better-auth.config.js +35 -2
  12. package/dist/core/modules/better-auth/better-auth.config.js.map +1 -1
  13. package/dist/core/modules/better-auth/core-better-auth-email-verification.service.d.ts +15 -1
  14. package/dist/core/modules/better-auth/core-better-auth-email-verification.service.js +115 -9
  15. package/dist/core/modules/better-auth/core-better-auth-email-verification.service.js.map +1 -1
  16. package/dist/core/modules/better-auth/core-better-auth-rate-limiter.service.d.ts +1 -1
  17. package/dist/core/modules/better-auth/core-better-auth-rate-limiter.service.js +14 -1
  18. package/dist/core/modules/better-auth/core-better-auth-rate-limiter.service.js.map +1 -1
  19. package/dist/core/modules/better-auth/core-better-auth.controller.js +19 -0
  20. package/dist/core/modules/better-auth/core-better-auth.controller.js.map +1 -1
  21. package/dist/core/modules/better-auth/core-better-auth.module.js +19 -5
  22. package/dist/core/modules/better-auth/core-better-auth.module.js.map +1 -1
  23. package/dist/core/modules/better-auth/core-better-auth.service.js +3 -1
  24. package/dist/core/modules/better-auth/core-better-auth.service.js.map +1 -1
  25. package/dist/core/modules/tenant/core-tenant.service.d.ts +1 -0
  26. package/dist/core/modules/tenant/core-tenant.service.js +11 -2
  27. package/dist/core/modules/tenant/core-tenant.service.js.map +1 -1
  28. package/dist/templates/password-reset-de.ejs +65 -0
  29. package/dist/templates/password-reset-en.ejs +65 -0
  30. package/dist/templates/password-reset.ejs +1 -1
  31. package/dist/tsconfig.build.tsbuildinfo +1 -1
  32. package/docs/security-overrides.md +17 -11
  33. package/migration-guides/11.35.1-to-11.36.0.md +168 -0
  34. package/migration-guides/11.36.0-to-11.36.1.md +283 -0
  35. package/package.json +25 -25
  36. package/src/core/common/helpers/logging.helper.ts +9 -1
  37. package/src/core/common/interfaces/server-options.interface.ts +68 -2
  38. package/src/core/common/services/brevo.service.ts +34 -6
  39. package/src/core/modules/better-auth/CUSTOMIZATION.md +33 -7
  40. package/src/core/modules/better-auth/INTEGRATION-CHECKLIST.md +38 -0
  41. package/src/core/modules/better-auth/README.md +100 -15
  42. package/src/core/modules/better-auth/better-auth.config.ts +142 -9
  43. package/src/core/modules/better-auth/core-better-auth-email-verification.service.ts +265 -20
  44. package/src/core/modules/better-auth/core-better-auth-rate-limiter.service.ts +30 -2
  45. package/src/core/modules/better-auth/core-better-auth.controller.ts +38 -0
  46. package/src/core/modules/better-auth/core-better-auth.module.ts +45 -13
  47. package/src/core/modules/better-auth/core-better-auth.service.ts +10 -2
  48. package/src/core/modules/tenant/core-tenant.service.ts +41 -4
  49. package/src/templates/password-reset-de.ejs +65 -0
  50. package/src/templates/password-reset-en.ejs +65 -0
  51. package/src/templates/password-reset.ejs +1 -1
@@ -255,6 +255,9 @@ This pattern is currently applied to:
255
255
  | BetterAuth Passkey Plugin | `betterAuth.passkey` | Boolean Shorthand | `rpName: 'Nest Server'` |
256
256
  | BetterAuth Cross-Subdomain Cookies | `betterAuth.crossSubDomainCookies` | Boolean Shorthand | `domain: auto (appUrl → baseUrl without api. prefix)` |
257
257
  | BetterAuth Disable Sign-Up | `betterAuth.emailAndPassword.disableSignUp` | Explicit Boolean | `false` (sign-up enabled) |
258
+ | BetterAuth Native Password Reset | `betterAuth.emailAndPassword.passwordReset` | Explicit Boolean | **`true` — ON by default, and there is no other off switch.** Better-Auth treats the PRESENCE of an `emailAndPassword.sendResetPassword` hook as the enable flag, and `CoreBetterAuthModule` always injects one (delegating to `CoreBetterAuthEmailVerificationService.sendPasswordResetEmail()`). So `POST /iam/request-password-reset` is a live, **unauthenticated**, token-minting, mail-sending endpoint on every deployment — before 11.36.1 it answered `RESET_PASSWORD_DISABLED` because no hook was wired. Set `false` to withhold the hook and restore that refusal, for deployments whose reset policy is support-mediated or SSO-primary. **Two things bound the abuse and both need checking:** a per-ADDRESS cooldown in the mailer (reuses `emailVerification.resendCooldownSeconds`, own namespace so a pending verification mail cannot block a reset), and the IP-axis `betterAuth.rateLimit` in front of the route — which is OFF unless configured. `/request-password-reset` is in `strictEndpoints`, so it gets the halved limit. Implementation: `better-auth.config.ts` (graft), `core-better-auth-email-verification.service.ts` (delivery) |
259
+ | BetterAuth Password-Reset Brevo Template | `betterAuth.emailVerification.passwordResetBrevoTemplateId` | Presence Implies Enabled | `undefined` → SMTP/EJS path. When set, the reset mail goes out through the Brevo transactional API with that template id. **Deliberately does NOT fall back to `brevoTemplateId`**: that one is the VERIFICATION mail, and reusing it would tell somebody who asked to reset their password to confirm their address instead. A Brevo send that resolves to `null` (its way of reporting failure unless `brevo.throwOnError` is set) falls THROUGH to SMTP rather than returning, so an outage does not leave a locked-out user with no mail at all. Template variables: `name`, `link`, `appName` |
260
+ | BetterAuth Revoke Sessions on Password Reset | `betterAuth.emailAndPassword.revokeSessionsOnPasswordReset` | Explicit Boolean | `false` (existing sessions survive a reset). Forwarded to Better-Auth's native flag, which honours it on **all three** reset routes (password reset, email-OTP, phone-number). **Off by default because it is a behaviour change for an existing deployment** — after a reset the user is signed out everywhere, including on the devices they still hold. Turn it on where a reset is what somebody reaches for after a suspected takeover: otherwise the attacker keeps their session and the new password changes nothing for them. Matched with `=== true`, so a truthy-but-not-`true` value arriving as JSON through `NSC__*` / `NEST_SERVER_CONFIG` does not silently enable a sign-out-everywhere behaviour. **Prefer the named field over `betterAuth.options`**: it is validated (`=== true`), typed and discoverable. Until 11.36.1 the reason was harsher — `config.options` was spread SHALLOWLY over the resolved config (only `advanced` was deep-merged), so an `options.emailAndPassword` REPLACED the whole block including the scrypt `password.hash` / `password.verify` pair the framework installs, and every credential in the database stopped verifying, at runtime and without a boot error. Since 11.36.1 `emailAndPassword` is deep-merged too, with `password` merged key-by-key on top of the framework's pair (an explicit override still wins; an explicitly-`undefined` half is ignored, because Better-Auth resolves `password?.hash || hashPassword` and would otherwise switch hasher for writes while scrypt still handled reads). That merge is pinned against the REAL `createBetterAuthInstance()` by `tests/unit/better-auth-password-reset-wiring.spec.ts`, with registered mutation `betterauth-emailandpassword-shallow-merge` as its evidence. Implementation: `better-auth.config.ts` (`emailAndPassword` block) |
258
261
  | BetterAuth Server-Managed User Fields | `betterAuth.additionalUserFields[].input` | Explicit Boolean | `true` (Better-Auth default). `input: false` makes Better-Auth reject client-supplied values (`FIELD_NOT_ALLOWED` HTTP 400 on `/iam/update-user`; server default substituted on sign-up). The core fields `roles`, `verified`, `verifiedAt`, `twoFactorEnabled`, `iamId` are hard-locked to `input: false` via `PROTECTED_INPUT_FALSE_KEYS`, **re-asserted after** the `additionalUserFields` merge (and for any shadow field whose `fieldName` maps to a protected column) — a project override cannot re-open them. Closes vertical privilege-escalation (self-granting `roles`), email-verification bypass and 2FA self-toggle via the Better-Auth native input path. nest-server's own role path (`UserService.setRoles` / `CrudService.update` `checkRoles`) is unaffected. `termsAndPrivacyAcceptedAt` is `input: false` by default but intentionally NOT hard-locked (consent timestamp, not a privilege boundary) |
259
262
  | Hub (Operator Cockpit) | `hub` | Presence Implies Enabled — but NEVER implicitly (must be set per environment) | `path: 'hub'`, `roles: [ADMIN]`, `actions: true`, `pollIntervalMs: 5000`, `collectors: { logs: on, traces: on, queries: off }`, `mailbox: off` (when set: `mode: 'capture'`, throws in production/staging), `migrations: { dir: './migrations' }`, `db: on`, `emailPreview: on`. Build-free ADMIN-gated dashboard (dashboard, diagnostics, logs, request traces, query profiler, cron, db, models/ERD, migrations, files, config, auth-migration, error-codes, email preview, mailbox, AI). Query profiler opts the driver into `monitorCommands`. Mailbox is a Mailpit-style capture hooked into `EmailService` via the optional `HUB_EMAIL_CAPTURE` token. Mutating actions require `X-Hub-Request` header + type-to-confirm keyword and write `[HUB-ACTION]` audit logs. Overrides via `CoreModule.forRoot(env, { hub: { controller, actionsController, service, htmlService, actionsService } })` |
260
263
  | System Setup | `systemSetup` | Enabled by Default (when BetterAuth active) | `initialAdmin: undefined` |
package/CLAUDE.md CHANGED
@@ -22,6 +22,7 @@ The following documents must be kept up to date when making changes that affect
22
22
  | `docs/REQUEST-LIFECYCLE.md` | Adding/changing decorators, interceptors, guards, pipes, middleware, plugins, services, modules, or the request/response flow |
23
23
  | `migration-guides/` | Releasing MINOR or MAJOR versions (see `.claude/rules/migration-guides.md`) |
24
24
  | `.claude/rules/configurable-features.md` | Adding new configurable features |
25
+ | `src/templates/*.ejs` + `tests/unit/email-templates.spec.ts` | Changing a mail template — a template is never imported, type-checked or linted, so the only thing binding it to its caller is the variable names inside it. Add the caller's data shape to the spec |
25
26
  | `FRAMEWORK-API.md` | Auto-regenerated by `pnpm run build` — verify after adding interfaces, CrudService methods, or core modules |
26
27
 
27
28
  **Rule:** When a code change adds, removes, or modifies a feature listed in `docs/REQUEST-LIFECYCLE.md` (Features Overview, diagrams, decorator reference, configuration, etc.), update the document in the same commit or PR.
package/FRAMEWORK-API.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @lenne.tech/nest-server — Framework API Reference
2
2
 
3
- > Auto-generated from source code on 2026-08-18 (v11.35.1)
3
+ > Auto-generated from source code on 2026-08-22 (v11.36.1)
4
4
  > File: `FRAMEWORK-API.md` — compact, machine-readable API surface for Claude Code
5
5
 
6
6
  ## CoreModule.forRoot()
@@ -242,12 +242,13 @@ When `passkey` is enabled, `trustedOrigins` is required (compile-time enforcemen
242
242
  - `enabled?`: `boolean | undefined` (default: `true (enabled by default when BetterAuth is active)`) — Whether email verification is enabled.
243
243
  - `expiresIn?`: `number | undefined` (default: `86400 (24 hours)`) — Time in seconds until the verification link expires.
244
244
  - `locale?`: `string | undefined` (default: `'en'`) — Locale for the verification email template.
245
+ - `passwordResetBrevoTemplateId?`: `number | undefined` (default: `undefined (uses SMTP/EJS templates)`) — Brevo transactional template ID for the PASSWORD-RESET mail.
245
246
  - `resendCooldownSeconds?`: `number | undefined` (default: `60`) — Cooldown in seconds between resend requests for the same email address.
246
247
  - `template?`: `string | undefined` (default: `'email-verification'`) — Custom template name for the verification email.
247
248
 
248
249
  ### IBetterAuthRateLimit
249
250
 
250
- - `enabled?`: `boolean | undefined` (default: `false`) — Whether rate limiting is enabled
251
+ - `enabled?`: `boolean | undefined` (default: `true when a `rateLimit` object is present, false when it is absent`) — Whether rate limiting is enabled.
251
252
  - `max?`: `number | undefined` (default: `10`) — Maximum number of requests within the time window
252
253
  - `maxEntries?`: `number | undefined` (default: `10000`) — Maximum number of distinct counters this limiter may hold — the bound on the keyspace a
253
254
  - `message?`: `string | undefined` — Custom message when rate limit is exceeded
@@ -59,7 +59,7 @@ function redactSensitiveText(text) {
59
59
  }
60
60
  return (text
61
61
  .replace(/eyJ[\w-]{6,}\.[\w-]{6,}\.[\w-]{4,}/g, (match) => maskToken(match))
62
- .replace(/(\/(?:verify|reset|confirm|activate|invite|magic-?link|set-password|change-email)\/)([A-Za-z0-9._~-]{16,})/gi, (_m, prefix, token) => `${prefix}${maskToken(token)}`)
62
+ .replace(/(\/(?:request-password-reset|reset-password|forget-password|forgot-password|set-password|change-email|magic-?link|verify|reset|confirm|activate|invite)\/)([A-Za-z0-9._~-]{16,})/gi, (_m, prefix, token) => `${prefix}${maskToken(token)}`)
63
63
  .replace(/(authorization["']?\s*[:=]\s*["']?)(?:Bearer\s+)?([^\s"',;]+)/gi, (_m, prefix, value) => `${prefix}${maskToken(value)}`)
64
64
  .replace(/((?:^|[\s,;])cookie["']?\s*[:=]\s*)([^\n]+)/gi, (_m, prefix, value) => `${prefix}${maskCookieHeader(value)}`)
65
65
  .replace(/((?:password|passwd|pwd|token|secret|api[-_]?key|client[-_]?secret|refresh[-_]?token|access[-_]?token|private[-_]?key)["']?\s*[:=]\s*["']?)([^\s"',;&}]+)/gi, (_m, prefix, value) => `${prefix}${maskSensitive(value)}`));
@@ -1 +1 @@
1
- {"version":3,"file":"logging.helper.js","sourceRoot":"","sources":["../../../../src/core/common/helpers/logging.helper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logging.helper.js","sourceRoot":"","sources":["../../../../src/core/common/helpers/logging.helper.ts"],"names":[],"mappings":"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"}
@@ -48,6 +48,7 @@ export interface IBetterAuthEmailVerificationConfig {
48
48
  enabled?: boolean;
49
49
  expiresIn?: number;
50
50
  locale?: string;
51
+ passwordResetBrevoTemplateId?: number;
51
52
  resendCooldownSeconds?: number;
52
53
  template?: string;
53
54
  }
@@ -433,6 +434,8 @@ interface IBetterAuthBase {
433
434
  emailAndPassword?: {
434
435
  disableSignUp?: boolean;
435
436
  enabled?: boolean;
437
+ passwordReset?: boolean;
438
+ revokeSessionsOnPasswordReset?: boolean;
436
439
  };
437
440
  emailVerification?: boolean | IBetterAuthEmailVerificationConfig;
438
441
  enabled?: boolean;
@@ -12,6 +12,7 @@ export declare class BrevoService {
12
12
  params?: Record<string, string>;
13
13
  }): Promise<unknown>;
14
14
  protected buildIdempotencyHeaders(): Record<string, unknown>;
15
+ protected isExcluded(to: string): boolean;
15
16
  protected getClient(): Promise<BrevoClient>;
16
17
  protected handleSendError(error: unknown, to: string): null;
17
18
  }
@@ -31,7 +31,7 @@ let BrevoService = BrevoService_1 = class BrevoService {
31
31
  if (!to || !templateId) {
32
32
  return false;
33
33
  }
34
- if (this.configService.config?.brevo?.exclude?.test?.(to)) {
34
+ if (this.isExcluded(to)) {
35
35
  return 'TEST_USER!';
36
36
  }
37
37
  const request = {
@@ -52,7 +52,7 @@ let BrevoService = BrevoService_1 = class BrevoService {
52
52
  if (!to || !subject || !html) {
53
53
  return false;
54
54
  }
55
- if (this.configService.config?.brevo?.exclude?.test?.(to)) {
55
+ if (this.isExcluded(to)) {
56
56
  return 'TEST_USER!';
57
57
  }
58
58
  const request = {
@@ -73,6 +73,14 @@ let BrevoService = BrevoService_1 = class BrevoService {
73
73
  buildIdempotencyHeaders() {
74
74
  return { 'Idempotency-Key': (0, node_crypto_1.randomUUID)() };
75
75
  }
76
+ isExcluded(to) {
77
+ const exclude = this.configService.config?.brevo?.exclude;
78
+ if (typeof exclude?.test !== 'function') {
79
+ return false;
80
+ }
81
+ const stateless = exclude.global || exclude.sticky ? new RegExp(exclude.source, exclude.flags.replace(/[gy]/g, '')) : exclude;
82
+ return stateless.test(to);
83
+ }
76
84
  async getClient() {
77
85
  if (!this.client) {
78
86
  const { BrevoClient: BrevoClientCtor } = await Promise.resolve().then(() => require('@getbrevo/brevo'));
@@ -1 +1 @@
1
- {"version":3,"file":"brevo.service.js","sourceRoot":"","sources":["../../../../src/core/common/services/brevo.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"brevo.service.js","sourceRoot":"","sources":["../../../../src/core/common/services/brevo.service.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ export interface CreateBetterAuthOptions {
6
6
  db: any;
7
7
  fallbackSecrets?: (string | undefined)[];
8
8
  onEmailVerified?: OnEmailVerifiedCallback;
9
+ sendResetPasswordEmail?: SendResetPasswordEmailCallback;
9
10
  sendVerificationEmail?: SendVerificationEmailCallback;
10
11
  serverAppUrl?: string;
11
12
  serverBaseUrl?: string;
@@ -13,7 +14,7 @@ export interface CreateBetterAuthOptions {
13
14
  serverEnv?: string;
14
15
  }
15
16
  export type OnEmailVerifiedCallback = (userId: string) => Promise<void>;
16
- export type SendVerificationEmailCallback = (options: {
17
+ export interface AuthEmailCallbackOptions {
17
18
  token: string;
18
19
  url: string;
19
20
  user: {
@@ -21,7 +22,9 @@ export type SendVerificationEmailCallback = (options: {
21
22
  id: string;
22
23
  name?: null | string;
23
24
  };
24
- }) => Promise<void>;
25
+ }
26
+ export type SendVerificationEmailCallback = (options: AuthEmailCallbackOptions) => Promise<void>;
27
+ export type SendResetPasswordEmailCallback = (options: AuthEmailCallbackOptions) => Promise<void>;
25
28
  export declare function sendAuthEmailSafely(send: () => unknown, onError: (error: unknown) => void): void;
26
29
  interface NormalizedPasskeyConfig {
27
30
  authenticatorAttachment?: 'cross-platform' | 'platform';
@@ -63,8 +63,19 @@ function sendAuthEmailSafely(send, onError) {
63
63
  }
64
64
  });
65
65
  }
66
+ function mergeDefined(base, override) {
67
+ const merged = { ...base };
68
+ if (override && typeof override === 'object') {
69
+ for (const [key, value] of Object.entries(override)) {
70
+ if (value !== undefined) {
71
+ merged[key] = value;
72
+ }
73
+ }
74
+ }
75
+ return merged;
76
+ }
66
77
  function createBetterAuthInstance(options) {
67
- const { config, db, fallbackSecrets, onEmailVerified, sendVerificationEmail, serverEnv } = options;
78
+ const { config, db, fallbackSecrets, onEmailVerified, sendResetPasswordEmail, sendVerificationEmail, serverEnv } = options;
68
79
  if (config?.enabled === false) {
69
80
  return null;
70
81
  }
@@ -123,6 +134,13 @@ function createBetterAuthInstance(options) {
123
134
  hash: nativeScryptHash,
124
135
  verify: nativeScryptVerify,
125
136
  },
137
+ revokeSessionsOnPasswordReset: config.emailAndPassword?.revokeSessionsOnPasswordReset === true,
138
+ ...(sendResetPasswordEmail &&
139
+ config.emailAndPassword?.passwordReset !== false && {
140
+ sendResetPassword: async (data) => {
141
+ sendAuthEmailSafely(() => sendResetPasswordEmail(data), (error) => logger.error(`Failed to send password-reset email: ${error instanceof Error ? error.message : String(error)}`));
142
+ },
143
+ }),
126
144
  },
127
145
  plugins,
128
146
  secret: validation.resolvedSecret || config.secret,
@@ -137,11 +155,26 @@ function createBetterAuthInstance(options) {
137
155
  }
138
156
  if (trustedOrigins) {
139
157
  betterAuthConfig.trustedOrigins = trustedOrigins;
158
+ const wildcardOrigins = trustedOrigins.filter((origin) => typeof origin === 'string' && origin.includes('*'));
159
+ if (wildcardOrigins.length) {
160
+ logger.warn(`betterAuth.trustedOrigins contains a wildcard (${wildcardOrigins.join(', ')}). The password-reset ` +
161
+ 'redirect is validated against this list, so any origin it admits can receive a live reset ' +
162
+ 'token. List exact origins instead.');
163
+ }
140
164
  }
141
165
  let finalConfig;
142
166
  if (config.options) {
143
- const { advanced: optionsAdvanced, ...restOptions } = config.options;
167
+ const { advanced: optionsAdvanced, emailAndPassword: optionsEmailAndPassword, ...restOptions } = config.options;
144
168
  finalConfig = { ...betterAuthConfig, ...restOptions };
169
+ if (optionsEmailAndPassword && typeof optionsEmailAndPassword === 'object') {
170
+ const base = betterAuthConfig.emailAndPassword;
171
+ const override = optionsEmailAndPassword;
172
+ finalConfig.emailAndPassword = {
173
+ ...base,
174
+ ...override,
175
+ password: mergeDefined(base.password, override.password),
176
+ };
177
+ }
145
178
  if (optionsAdvanced && typeof optionsAdvanced === 'object') {
146
179
  const driftWarning = (0, better_auth_cookie_prefix_helper_1.detectCookiePrefixDrift)(cookiePrefix, optionsAdvanced);
147
180
  if (driftWarning)
@@ -1 +1 @@
1
- {"version":3,"file":"better-auth.config.js","sourceRoot":"","sources":["../../../../src/core/modules/better-auth/better-auth.config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"better-auth.config.js","sourceRoot":"","sources":["../../../../src/core/modules/better-auth/better-auth.config.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,13 @@
1
1
  import { Logger } from '@nestjs/common';
2
+ import ejs = require('ejs');
2
3
  import { IBetterAuthEmailVerificationConfig } from '../../common/interfaces/server-options.interface';
3
4
  import { BrevoService } from '../../common/services/brevo.service';
4
5
  import { ConfigService } from '../../common/services/config.service';
5
6
  import { CoreRedisService } from '../../common/services/core-redis.service';
6
7
  import { EmailService } from '../../common/services/email.service';
7
8
  import { TemplateService } from '../../common/services/template.service';
8
- type ResolvedEmailVerificationConfig = Pick<IBetterAuthEmailVerificationConfig, 'brevoTemplateId' | 'callbackURL'> & Required<Omit<IBetterAuthEmailVerificationConfig, 'brevoTemplateId' | 'callbackURL' | 'resendCooldownSeconds'>> & {
9
+ import { AuthEmailCallbackOptions } from './better-auth.config';
10
+ type ResolvedEmailVerificationConfig = Pick<IBetterAuthEmailVerificationConfig, 'brevoTemplateId' | 'callbackURL' | 'passwordResetBrevoTemplateId'> & Required<Omit<IBetterAuthEmailVerificationConfig, 'brevoTemplateId' | 'callbackURL' | 'passwordResetBrevoTemplateId' | 'resendCooldownSeconds'>> & {
9
11
  resendCooldownSeconds: number;
10
12
  };
11
13
  export interface SendVerificationEmailOptions {
@@ -17,6 +19,7 @@ export interface SendVerificationEmailOptions {
17
19
  name?: null | string;
18
20
  };
19
21
  }
22
+ export type SendPasswordResetEmailOptions = AuthEmailCallbackOptions;
20
23
  export declare class CoreBetterAuthEmailVerificationService {
21
24
  protected readonly configService: ConfigService;
22
25
  protected readonly emailService?: EmailService;
@@ -24,6 +27,12 @@ export declare class CoreBetterAuthEmailVerificationService {
24
27
  protected readonly brevoService?: BrevoService | null;
25
28
  protected readonly coreRedisService?: CoreRedisService;
26
29
  protected readonly logger: Logger;
30
+ protected cachedAppName?: string;
31
+ protected readonly compiledTemplates: Map<string, ejs.TemplateFunction>;
32
+ protected readonly resolvedTemplatePaths: Map<string, {
33
+ isAbsolute: boolean;
34
+ path: string;
35
+ }>;
27
36
  protected config: ResolvedEmailVerificationConfig;
28
37
  protected readonly lastSendTimes: Map<string, number>;
29
38
  protected readonly sendTimers: Map<string, NodeJS.Timeout>;
@@ -34,6 +43,7 @@ export declare class CoreBetterAuthEmailVerificationService {
34
43
  getExpiresIn(): number;
35
44
  shouldAutoSignIn(): boolean;
36
45
  sendVerificationEmail(options: SendVerificationEmailOptions): Promise<void>;
46
+ sendPasswordResetEmail(options: SendPasswordResetEmailOptions): Promise<void>;
37
47
  protected acquireSendSlot(email: string): Promise<null | string>;
38
48
  protected releaseSendSlot(email: string, token?: null | string): Promise<void>;
39
49
  protected cooldownKey(email: string): string;
@@ -43,9 +53,13 @@ export declare class CoreBetterAuthEmailVerificationService {
43
53
  isAbsolute: boolean;
44
54
  path: string;
45
55
  }>;
56
+ protected renderFrameworkTemplate(pathWithoutExtension: string, data: Record<string, unknown>): string;
57
+ protected logAuthUrlForDevelopment(label: string, email: string, url: string): void;
46
58
  protected getAppName(): string;
59
+ protected resolveAppName(): string;
47
60
  protected formatProjectName(name: string): string;
48
61
  protected getEmailSubject(appName: string): string;
62
+ protected getPasswordResetSubject(appName: string): string;
49
63
  protected formatExpiresIn(seconds: number): string;
50
64
  protected isInCooldown(email: string): boolean;
51
65
  private static readonly MAX_SEND_TIMES_ENTRIES;
@@ -19,6 +19,7 @@ const node_crypto_1 = require("node:crypto");
19
19
  const ejs = require("ejs");
20
20
  const fs = require("fs");
21
21
  const path = require("path");
22
+ const cookies_helper_1 = require("../../common/helpers/cookies.helper");
22
23
  const logging_helper_1 = require("../../common/helpers/logging.helper");
23
24
  const brevo_service_1 = require("../../common/services/brevo.service");
24
25
  const config_service_1 = require("../../common/services/config.service");
@@ -36,6 +37,7 @@ const DEFAULT_CONFIG = {
36
37
  template: 'email-verification',
37
38
  };
38
39
  const LOCAL_SLOT_TOKEN = 'local';
40
+ const PASSWORD_RESET_TEMPLATE = 'password-reset';
39
41
  let CoreBetterAuthEmailVerificationService = class CoreBetterAuthEmailVerificationService {
40
42
  static { CoreBetterAuthEmailVerificationService_1 = this; }
41
43
  configService;
@@ -44,6 +46,9 @@ let CoreBetterAuthEmailVerificationService = class CoreBetterAuthEmailVerificati
44
46
  brevoService;
45
47
  coreRedisService;
46
48
  logger = new common_1.Logger(CoreBetterAuthEmailVerificationService_1.name);
49
+ cachedAppName;
50
+ compiledTemplates = new Map();
51
+ resolvedTemplatePaths = new Map();
47
52
  config = DEFAULT_CONFIG;
48
53
  lastSendTimes = new Map();
49
54
  sendTimers = new Map();
@@ -81,9 +86,7 @@ let CoreBetterAuthEmailVerificationService = class CoreBetterAuthEmailVerificati
81
86
  if (this.config.callbackURL) {
82
87
  url = this.buildFrontendVerificationUrl(token);
83
88
  }
84
- if (process.env.NODE_ENV !== 'production') {
85
- console.log(`[EMAIL VERIFICATION] User: ${user.email}, URL: ${url}`);
86
- }
89
+ this.logAuthUrlForDevelopment('EMAIL VERIFICATION', user.email, url);
87
90
  if (this.config.brevoTemplateId && this.brevoService) {
88
91
  try {
89
92
  const appName = this.getAppName();
@@ -121,8 +124,7 @@ let CoreBetterAuthEmailVerificationService = class CoreBetterAuthEmailVerificati
121
124
  name: user.name || user.email.split('@')[0],
122
125
  };
123
126
  if (resolved.isAbsolute) {
124
- const templateContent = fs.readFileSync(`${resolved.path}.ejs`, 'utf-8');
125
- const html = ejs.render(templateContent, templateData);
127
+ const html = this.renderFrameworkTemplate(resolved.path, templateData);
126
128
  await this.emailService.sendMail(user.email, this.getEmailSubject(appName), { html });
127
129
  }
128
130
  else {
@@ -145,6 +147,71 @@ let CoreBetterAuthEmailVerificationService = class CoreBetterAuthEmailVerificati
145
147
  }
146
148
  }
147
149
  }
150
+ async sendPasswordResetEmail(options) {
151
+ const { url, user } = options;
152
+ this.logAuthUrlForDevelopment('PASSWORD RESET', user.email, url);
153
+ const slotKey = `${PASSWORD_RESET_TEMPLATE}:${user.email}`;
154
+ const slotToken = await this.acquireSendSlot(slotKey);
155
+ if (!slotToken) {
156
+ this.logger.debug(`Password-reset cooldown active for ${this.maskEmail(user.email)}, skipping email send`);
157
+ return;
158
+ }
159
+ let sent = false;
160
+ try {
161
+ const appName = this.getAppName();
162
+ const templateData = {
163
+ appName,
164
+ link: url,
165
+ name: user.name || user.email.split('@')[0],
166
+ };
167
+ if (this.config.passwordResetBrevoTemplateId && this.brevoService) {
168
+ try {
169
+ const result = await this.brevoService.sendMail(user.email, this.config.passwordResetBrevoTemplateId, templateData);
170
+ if (result === null) {
171
+ this.logger.error(`Brevo password-reset send failed for ${this.maskEmail(user.email)} — falling back to SMTP`);
172
+ }
173
+ else {
174
+ sent = true;
175
+ this.logger.debug(`Password-reset email sent via Brevo to ${this.maskEmail(user.email)}`);
176
+ return;
177
+ }
178
+ }
179
+ catch (error) {
180
+ this.logger.error(`Failed to send password-reset email via Brevo to ${this.maskEmail(user.email)}: ${error instanceof Error ? error.message : 'Unknown error'}`);
181
+ throw error;
182
+ }
183
+ }
184
+ if (!this.emailService) {
185
+ this.logger.warn('EmailService not available, cannot send password-reset email');
186
+ return;
187
+ }
188
+ try {
189
+ const resolved = await this.resolveTemplatePath(PASSWORD_RESET_TEMPLATE, this.config.locale);
190
+ const subject = this.getPasswordResetSubject(appName);
191
+ if (resolved.isAbsolute) {
192
+ const html = this.renderFrameworkTemplate(resolved.path, templateData);
193
+ await this.emailService.sendMail(user.email, subject, { html });
194
+ }
195
+ else {
196
+ await this.emailService.sendMail(user.email, subject, {
197
+ htmlTemplate: resolved.path,
198
+ templateData,
199
+ });
200
+ }
201
+ sent = true;
202
+ this.logger.debug(`Password-reset email sent to ${this.maskEmail(user.email)}`);
203
+ }
204
+ catch (error) {
205
+ this.logger.error(`Failed to send password-reset email to ${this.maskEmail(user.email)}: ${error instanceof Error ? error.message : 'Unknown error'}`);
206
+ throw error;
207
+ }
208
+ }
209
+ finally {
210
+ if (!sent) {
211
+ await this.releaseSendSlot(slotKey, slotToken);
212
+ }
213
+ }
214
+ }
148
215
  async acquireSendSlot(email) {
149
216
  const cooldown = this.config.resendCooldownSeconds;
150
217
  if (cooldown <= 0) {
@@ -221,6 +288,11 @@ let CoreBetterAuthEmailVerificationService = class CoreBetterAuthEmailVerificati
221
288
  return `${baseUrl}${separator}token=${token}`;
222
289
  }
223
290
  async resolveTemplatePath(templateName, locale) {
291
+ const cacheKey = `${templateName}:${locale}`;
292
+ const cached = this.resolvedTemplatePaths.get(cacheKey);
293
+ if (cached) {
294
+ return cached;
295
+ }
224
296
  const projectTemplatesPath = this.configService.getFastButReadOnly('templates.path');
225
297
  const nestServerTemplatesPath = path.join(__dirname, '..', '..', '..', 'templates');
226
298
  const candidates = [
@@ -234,16 +306,43 @@ let CoreBetterAuthEmailVerificationService = class CoreBetterAuthEmailVerificati
234
306
  continue;
235
307
  const fullPath = path.join(candidate.base, `${candidate.name}.ejs`);
236
308
  if (fs.existsSync(fullPath)) {
237
- if (candidate.isNestServer) {
238
- return { isAbsolute: true, path: fullPath.replace('.ejs', '') };
239
- }
240
- return { isAbsolute: false, path: candidate.name };
309
+ const resolved = candidate.isNestServer
310
+ ?
311
+ { isAbsolute: true, path: fullPath.replace('.ejs', '') }
312
+ :
313
+ { isAbsolute: false, path: candidate.name };
314
+ this.resolvedTemplatePaths.set(cacheKey, resolved);
315
+ return resolved;
241
316
  }
242
317
  }
243
318
  this.logger.warn(`Template '${templateName}' not found in any location, using fallback`);
244
319
  return { isAbsolute: false, path: templateName };
245
320
  }
321
+ renderFrameworkTemplate(pathWithoutExtension, data) {
322
+ let compiled = this.compiledTemplates.get(pathWithoutExtension);
323
+ if (!compiled) {
324
+ compiled = ejs.compile(fs.readFileSync(`${pathWithoutExtension}.ejs`, 'utf-8'));
325
+ this.compiledTemplates.set(pathWithoutExtension, compiled);
326
+ }
327
+ return compiled(data);
328
+ }
329
+ logAuthUrlForDevelopment(label, email, url) {
330
+ if (process.env.LT_LOG_AUTH_URLS === '0') {
331
+ return;
332
+ }
333
+ if ((0, cookies_helper_1.isProductionLikeEnv)(this.configService?.getFastButReadOnly('env'))) {
334
+ return;
335
+ }
336
+ console.log(`[${label}] User: ${this.maskEmail(email)}, URL: ${url}`);
337
+ }
246
338
  getAppName() {
339
+ if (this.cachedAppName !== undefined) {
340
+ return this.cachedAppName;
341
+ }
342
+ this.cachedAppName = this.resolveAppName();
343
+ return this.cachedAppName;
344
+ }
345
+ resolveAppName() {
247
346
  try {
248
347
  const packageJsonPath = path.join(process.cwd(), 'package.json');
249
348
  const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
@@ -265,6 +364,13 @@ let CoreBetterAuthEmailVerificationService = class CoreBetterAuthEmailVerificati
265
364
  }
266
365
  return `${appName} - Verify your email address`;
267
366
  }
367
+ getPasswordResetSubject(appName) {
368
+ const subjects = {
369
+ de: `${appName} - Passwort zurücksetzen`,
370
+ en: `${appName} - Reset your password`,
371
+ };
372
+ return subjects[this.config.locale] ?? subjects.en;
373
+ }
268
374
  formatExpiresIn(seconds) {
269
375
  const hours = Math.floor(seconds / 3600);
270
376
  const locale = this.config.locale;