Skip to content

plugin-auth: auth SMS (OTP / invite texts) and request-less auth mail keep the deployment locale — sys_user.locale exists now and is not read #14762

Description

@os-sam

Blocked-by: #13881

Observation (found while implementing #13881; not fixed there — scope fence)

#13881 lands sys_user.locale as a first-class column and moves the notification locale (service-messaging: email / inbox / SMS channels) to a per-recipient resolution: sys_user.locale → deployment default. It deliberately does NOT touch plugin-auth's own sends, which keep their existing ladders:

Why it is its own card

The 2026-09-01 ruling on #13881 names the messaging seam (email-channel.ts) as the insertion point and the triage fence says the messaging path ends with exactly one per-recipient read point. Adding rungs to plugin-auth's ladders is a second surface with its own precedence question (does the user's stored locale outrank the request's Accept-Language for a signed-in user's own sends?) that the ruling did not decide.

Suggested shape (for triage, not a ruling)

  • OTP SMS: the recipient IS the user; read sys_user.locale off the row sendPhoneOtp already has, fall to the deployment default (same normalizer as @objectstack/service-messaging's normalizeRecipientLocale — refuse the literal undefined shape).
  • Request-less mail to an existing user: same rung, between request and deployment.
  • Both keep the documented en-US floor; nothing dead-letters.

Refs: #13881 (column + messaging chain) · #14641 (invitation rung) · #14319 (request rung) · #2815 (closed; original SMS locale card).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions