@spotto/contract 1.0.69-alpha.29 → 1.0.69-alpha.30

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.
@@ -68,12 +68,30 @@ export interface SsoEnabledBase<TRoleId = string> {
68
68
  roleMappings: RoleMapping<TRoleId>[];
69
69
  /**
70
70
  * Mixed-mode opt-in: when `true`, the org accepts both SSO-managed users
71
- * (via federation) AND native "guest" users created through `POST /users`
72
- * with password login. Guest emails must be OUTSIDE `emailDomains` — the
73
- * staff-domain space is reserved for the IdP. Defaults to `false`
74
- * (SSO-only) when absent.
71
+ * (via federation) AND password-auth users created through `POST /users`.
72
+ * Password-user emails must be OUTSIDE `emailDomains` — the staff-domain
73
+ * space is reserved for the IdP. Defaults to `false` (SSO-only) when
74
+ * absent.
75
+ *
76
+ * Note: there's no on-disk "guest" type. A password-auth user in a
77
+ * mixed-mode org is the same shape as any other password-auth user
78
+ * (`authProvider: undefined`). What distinguishes federation-managed
79
+ * from password-managed identity is the email-domain rule, not a flag
80
+ * on the user record.
75
81
  */
76
82
  allowGuestUsers?: boolean;
83
+ /**
84
+ * Testing escape hatch: when `true`, federation is allowed for users
85
+ * whose email domain isn't in `emailDomains`. Production orgs should
86
+ * leave this off — without it, the IdP-to-emailDomains contract is
87
+ * enforced and federation is refused for any email outside the
88
+ * configured domains (`SSO_EMAIL_DOMAIN_NOT_ALLOWED`).
89
+ *
90
+ * Even when this flag is on, the bind path still refuses to overwrite
91
+ * an existing password-auth user whose email is outside `emailDomains`
92
+ * (identity-integrity guard) — only fresh JIT-creates proceed.
93
+ */
94
+ allowOutOfDomainEmails?: boolean;
77
95
  }
78
96
  export interface SsoEnabledOidc<TRoleId = string> extends SsoEnabledBase<TRoleId> {
79
97
  mode: 'oidc';
@@ -32,11 +32,17 @@ interface OnboardSsoOrgWireBase {
32
32
  */
33
33
  roleMappings?: RoleMappingInput[];
34
34
  /**
35
- * Opt-in to mixed-mode: allow native "guest" users alongside SSO-managed
36
- * users in the same org. Guests authenticate by password and must use an
37
- * email domain OUTSIDE `emailDomains`. Defaults to `false`.
35
+ * Opt-in to mixed-mode: allow password-auth users alongside SSO-managed
36
+ * users in the same org. Password-user emails must be OUTSIDE
37
+ * `emailDomains`. Defaults to `false`.
38
38
  */
39
39
  allowGuestUsers?: boolean;
40
+ /**
41
+ * Testing escape hatch: when `true`, federation is allowed for users
42
+ * whose email domain isn't in `emailDomains`. See `SsoEnabledBase`.
43
+ * Defaults to `false`.
44
+ */
45
+ allowOutOfDomainEmails?: boolean;
40
46
  }
41
47
  export interface OnboardSsoOrgOidcRequest extends OnboardSsoOrgWireBase {
42
48
  mode: 'oidc';
@@ -5,9 +5,11 @@
5
5
  * their original pre-SSO password.
6
6
  * - `noPriorAccount` — user was JIT-created post-SSO; no native record to
7
7
  * restore. Loses access. Operator must manually re-add.
8
- * - `skippedGuest` — user is a mixed-mode guest (`authProvider: 'native'`).
9
- * They were never IdP-managed; their native Cognito record is intact
10
- * and they retain access. No Mongo write needed.
8
+ * - `skippedGuest` — user's email domain is outside the org's
9
+ * (now-removed) `sso.emailDomains`, so they were never federation-
10
+ * managed in the first place. Their native Cognito record is intact
11
+ * and they retain access. No Mongo write needed. (Name kept for
12
+ * contract stability; semantically "skipped because not SSO-bound".)
11
13
  * - `failed` — Mongo update threw mid-loop; see `error`. The revert as a
12
14
  * whole continues processing other users; an operator can retry the
13
15
  * failed ones.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@spotto/contract",
3
3
  "license": "ISC",
4
- "version": "1.0.69-alpha.29",
4
+ "version": "1.0.69-alpha.30",
5
5
  "description": "Spotto's API Contract type definitions",
6
6
  "main": "./dist/index.js",
7
7
  "files": [
@@ -18,5 +18,5 @@
18
18
  "@types/geojson": "^7946.0.11",
19
19
  "shx": "^0.3.4"
20
20
  },
21
- "gitHead": "a9ff090ef4f24d4067f9ee212ffd0ab458c8af66"
21
+ "gitHead": "d0b13061fc923ffa432a8677206936242fb93958"
22
22
  }