You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
auth follow-ups of #30922: an org admin cannot read the judged client address before saving an IP list, and the console MFA notices over sys_organization.require_mfa are inert #31030
S7:GET /admin/client-address, or a sibling read, gated by setup.write in the organization, so an org admin sees the judged address before saving access_policy IP ranges.
S6:ui/packages/app-shell/src/console/organizationMfaNotices.ts (with AppContent.tsx:969 and its i18n strings) is removed, or re-pointed at access_policy.mfa_required.
Acceptance
An org admin reads their judged address; a plain member is refused.
Raised to p1: S7 is a new served read (「协议新增定 p1」), on the Enterprise access-policy work the maintainer prioritized. Lane domain:server (S6 touches ui/packages/app-shell; the seat posts a cross-seat note for it).
Carried from objectstack#31013's delta contract review 6695328434 (should-fix) · 2026-11-07T00:49Z
D1:ip_not_allowed is a new sys_session.revoke_reason value. Add it to the field description's published vocabulary in sys-session.object.ts, which calls itself the only contract a consumer can read.
D2: "no heartbeat before the switch judgement" is pinned only by calling hooks.session.update.before. Pin it through the real /organization/set-active route as well; if better-auth's session middleware ever ran customSession first, the switch idle rule would be silently defeated.
Carried from objectstack#31013's delta review 6702665651 (D3, should-fix) · 2026-11-07T05:14Z · The organization IP list is re-judged on a session read only when ctx.request is present: the better-auth-served door (auth-manager-plugin-list.ts, whose door comes from readRequestClientAddress()). An objectstack-mount route that reads the session in-process (gateAdmin at auth-plugin.ts:3731, plus main's six new routes) judges the organization's limits but not its list. The deployment list still gates them. Either pass the mount's established address as door, or narrow the sentence in the PR body, the manifest and the changeset.
Activity
objectstack-fleet commentedon Nov 6, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: audit · p2 → p1 ·
domain:server·pm:blocked· 2026-11-06T18:58Z⛔ Not a claim.
setup.write; S6 removes or re-points the inertrequire_mfaconsole notices.domain:server(S6 touchesui/packages/app-shell; the seat posts a cross-seat note for it).Blocked-by:line; PR feat(plugin-auth, service-settings)!: the access policy is set per organization, with three MFA levels #31013 fixes Access policy per organization: allowed IP ranges, session idle/absolute/concurrent limits and an MFA requirement of off / administrators / everyone, with the deployment value as default and floor #30922.Generated by Claude Code
objectstack-fleet commentedon Nov 7, 2026
repo:cloud#3 · hotlong · session_01Q4EjjRhUZjdy8VXs6Kkur2
Carried from objectstack#31013's delta contract review 6695328434 (should-fix) · 2026-11-07T00:49Z
ip_not_allowedis a newsys_session.revoke_reasonvalue. Add it to the field description's published vocabulary insys-session.object.ts, which calls itself the only contract a consumer can read.hooks.session.update.before. Pin it through the real/organization/set-activeroute as well; if better-auth's session middleware ever rancustomSessionfirst, the switch idle rule would be silently defeated.objectstack-fleet commentedon Nov 7, 2026
repo:cloud#3 · hotlong · session_01Q4EjjRhUZjdy8VXs6Kkur2
Carried from objectstack#31013's delta review 6702665651 (D3, should-fix) · 2026-11-07T05:14Z · The organization IP list is re-judged on a session read only when
ctx.requestis present: the better-auth-served door (auth-manager-plugin-list.ts, whosedoorcomes fromreadRequestClientAddress()). An objectstack-mount route that reads the session in-process (gateAdminatauth-plugin.ts:3731, plus main's six new routes) judges the organization's limits but not its list. The deployment list still gates them. Either pass the mount's established address asdoor, or narrow the sentence in the PR body, the manifest and the changeset.