@robelest/convex-auth 0.0.4-preview.2 → 0.0.4-preview.21
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.
- package/README.md +67 -26
- package/dist/authorization/index.d.ts +63 -0
- package/dist/authorization/index.d.ts.map +1 -0
- package/dist/authorization/index.js +63 -0
- package/dist/authorization/index.js.map +1 -0
- package/dist/bin.js +6185 -0
- package/dist/client/core/types.d.ts +20 -0
- package/dist/client/core/types.d.ts.map +1 -0
- package/dist/client/index.d.ts +2 -299
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +407 -534
- package/dist/client/index.js.map +1 -1
- package/dist/component/_generated/api.d.ts +42 -0
- package/dist/component/_generated/api.d.ts.map +1 -1
- package/dist/component/_generated/api.js.map +1 -1
- package/dist/component/_generated/component.d.ts +2546 -90
- package/dist/component/_generated/component.d.ts.map +1 -1
- package/dist/component/client/core/types.d.ts +2 -0
- package/dist/component/client/index.d.ts +2 -0
- package/dist/component/convex.config.d.ts +2 -2
- package/dist/component/functions.d.ts +11 -9
- package/dist/component/functions.d.ts.map +1 -1
- package/dist/component/functions.js.map +1 -1
- package/dist/component/index.d.ts +7 -11
- package/dist/component/index.js +2 -3
- package/dist/component/model.d.ts +153 -0
- package/dist/component/model.d.ts.map +1 -0
- package/dist/component/model.js +349 -0
- package/dist/component/model.js.map +1 -0
- package/dist/component/providers/anonymous.d.ts +54 -0
- package/dist/component/providers/anonymous.d.ts.map +1 -0
- package/dist/component/providers/credentials.d.ts +5 -5
- package/dist/component/providers/credentials.d.ts.map +1 -1
- package/dist/component/providers/device.d.ts +67 -0
- package/dist/component/providers/device.d.ts.map +1 -0
- package/dist/component/providers/email.d.ts +62 -0
- package/dist/component/providers/email.d.ts.map +1 -0
- package/dist/component/providers/oauth.d.ts.map +1 -1
- package/dist/component/providers/oauth.js.map +1 -1
- package/dist/component/providers/passkey.d.ts +57 -0
- package/dist/component/providers/passkey.d.ts.map +1 -0
- package/dist/component/providers/password.d.ts +88 -0
- package/dist/component/providers/password.d.ts.map +1 -0
- package/dist/component/providers/phone.d.ts +48 -0
- package/dist/component/providers/phone.d.ts.map +1 -0
- package/dist/component/providers/sso.d.ts +50 -0
- package/dist/component/providers/sso.d.ts.map +1 -0
- package/dist/component/providers/totp.d.ts +45 -0
- package/dist/component/providers/totp.d.ts.map +1 -0
- package/dist/component/public/enterprise/audit.d.ts +73 -0
- package/dist/component/public/enterprise/audit.d.ts.map +1 -0
- package/dist/component/public/enterprise/audit.js +108 -0
- package/dist/component/public/enterprise/audit.js.map +1 -0
- package/dist/component/public/enterprise/core.d.ts +176 -0
- package/dist/component/public/enterprise/core.d.ts.map +1 -0
- package/dist/component/public/enterprise/core.js +292 -0
- package/dist/component/public/enterprise/core.js.map +1 -0
- package/dist/component/public/enterprise/domains.d.ts +174 -0
- package/dist/component/public/enterprise/domains.d.ts.map +1 -0
- package/dist/component/public/enterprise/domains.js +271 -0
- package/dist/component/public/enterprise/domains.js.map +1 -0
- package/dist/component/public/enterprise/scim.d.ts +245 -0
- package/dist/component/public/enterprise/scim.d.ts.map +1 -0
- package/dist/component/public/enterprise/scim.js +344 -0
- package/dist/component/public/enterprise/scim.js.map +1 -0
- package/dist/component/public/enterprise/secrets.d.ts +78 -0
- package/dist/component/public/enterprise/secrets.d.ts.map +1 -0
- package/dist/component/public/enterprise/secrets.js +118 -0
- package/dist/component/public/enterprise/secrets.js.map +1 -0
- package/dist/component/public/enterprise/webhooks.d.ts +211 -0
- package/dist/component/public/enterprise/webhooks.d.ts.map +1 -0
- package/dist/component/public/enterprise/webhooks.js +300 -0
- package/dist/component/public/enterprise/webhooks.js.map +1 -0
- package/dist/component/public/factors/devices.d.ts +157 -0
- package/dist/component/public/factors/devices.d.ts.map +1 -0
- package/dist/component/public/factors/devices.js +216 -0
- package/dist/component/public/factors/devices.js.map +1 -0
- package/dist/component/public/factors/passkeys.d.ts +175 -0
- package/dist/component/public/factors/passkeys.d.ts.map +1 -0
- package/dist/component/public/factors/passkeys.js +238 -0
- package/dist/component/public/factors/passkeys.js.map +1 -0
- package/dist/component/public/factors/totp.d.ts +189 -0
- package/dist/component/public/factors/totp.d.ts.map +1 -0
- package/dist/component/public/factors/totp.js +254 -0
- package/dist/component/public/factors/totp.js.map +1 -0
- package/dist/component/public/groups/core.d.ts +137 -0
- package/dist/component/public/groups/core.d.ts.map +1 -0
- package/dist/component/public/groups/core.js +321 -0
- package/dist/component/public/groups/core.js.map +1 -0
- package/dist/component/public/groups/invites.d.ts +217 -0
- package/dist/component/public/groups/invites.d.ts.map +1 -0
- package/dist/component/public/groups/invites.js +457 -0
- package/dist/component/public/groups/invites.js.map +1 -0
- package/dist/component/public/groups/members.d.ts +204 -0
- package/dist/component/public/groups/members.d.ts.map +1 -0
- package/dist/component/public/groups/members.js +355 -0
- package/dist/component/public/groups/members.js.map +1 -0
- package/dist/component/public/identity/accounts.d.ts +147 -0
- package/dist/component/public/identity/accounts.d.ts.map +1 -0
- package/dist/component/public/identity/accounts.js +200 -0
- package/dist/component/public/identity/accounts.js.map +1 -0
- package/dist/component/public/identity/codes.d.ts +104 -0
- package/dist/component/public/identity/codes.d.ts.map +1 -0
- package/dist/component/public/identity/codes.js +140 -0
- package/dist/component/public/identity/codes.js.map +1 -0
- package/dist/component/public/identity/sessions.d.ts +128 -0
- package/dist/component/public/identity/sessions.d.ts.map +1 -0
- package/dist/component/public/identity/sessions.js +192 -0
- package/dist/component/public/identity/sessions.js.map +1 -0
- package/dist/component/public/identity/tokens.d.ts +169 -0
- package/dist/component/public/identity/tokens.d.ts.map +1 -0
- package/dist/component/public/identity/tokens.js +227 -0
- package/dist/component/public/identity/tokens.js.map +1 -0
- package/dist/component/public/identity/users.d.ts +212 -0
- package/dist/component/public/identity/users.d.ts.map +1 -0
- package/dist/component/public/identity/users.js +311 -0
- package/dist/component/public/identity/users.js.map +1 -0
- package/dist/component/public/identity/verifiers.d.ts +116 -0
- package/dist/component/public/identity/verifiers.d.ts.map +1 -0
- package/dist/component/public/identity/verifiers.js +154 -0
- package/dist/component/public/identity/verifiers.js.map +1 -0
- package/dist/component/public/security/keys.d.ts +209 -0
- package/dist/component/public/security/keys.d.ts.map +1 -0
- package/dist/component/public/security/keys.js +319 -0
- package/dist/component/public/security/keys.js.map +1 -0
- package/dist/component/public/security/limits.d.ts +114 -0
- package/dist/component/public/security/limits.d.ts.map +1 -0
- package/dist/component/public/security/limits.js +169 -0
- package/dist/component/public/security/limits.js.map +1 -0
- package/dist/component/public.d.ts +24 -271
- package/dist/component/public.d.ts.map +1 -1
- package/dist/component/public.js +21 -1229
- package/dist/component/schema.d.ts +473 -110
- package/dist/component/schema.js +162 -73
- package/dist/component/schema.js.map +1 -1
- package/dist/component/server/auth.d.ts +318 -373
- package/dist/component/server/auth.d.ts.map +1 -1
- package/dist/component/server/auth.js +204 -123
- package/dist/component/server/auth.js.map +1 -1
- package/dist/component/server/authError.js +34 -0
- package/dist/component/server/authError.js.map +1 -0
- package/dist/component/server/{providers.js → config.js} +43 -12
- package/dist/component/server/config.js.map +1 -0
- package/dist/component/server/cookies.js +3 -0
- package/dist/component/server/cookies.js.map +1 -1
- package/dist/component/server/core.js +713 -0
- package/dist/component/server/core.js.map +1 -0
- package/dist/component/server/crypto.js +38 -0
- package/dist/component/server/crypto.js.map +1 -0
- package/dist/component/server/{implementation/db.js → db.js} +2 -1
- package/dist/component/server/db.js.map +1 -0
- package/dist/component/server/device.js +109 -0
- package/dist/component/server/device.js.map +1 -0
- package/dist/component/server/enterprise/config.js +46 -0
- package/dist/component/server/enterprise/config.js.map +1 -0
- package/dist/component/server/enterprise/domain.js +885 -0
- package/dist/component/server/enterprise/domain.js.map +1 -0
- package/dist/component/server/enterprise/http.js +766 -0
- package/dist/component/server/enterprise/http.js.map +1 -0
- package/dist/component/server/enterprise/oidc.js +248 -0
- package/dist/component/server/enterprise/oidc.js.map +1 -0
- package/dist/component/server/enterprise/policy.js +85 -0
- package/dist/component/server/enterprise/policy.js.map +1 -0
- package/dist/component/server/enterprise/saml.js +338 -0
- package/dist/component/server/enterprise/saml.js.map +1 -0
- package/dist/component/server/enterprise/scim.js +97 -0
- package/dist/component/server/enterprise/scim.js.map +1 -0
- package/dist/component/server/enterprise/shared.js +51 -0
- package/dist/component/server/enterprise/shared.js.map +1 -0
- package/dist/component/server/errors.d.ts +1 -0
- package/dist/component/server/errors.js +24 -16
- package/dist/component/server/errors.js.map +1 -1
- package/dist/component/server/http.js +288 -0
- package/dist/component/server/http.js.map +1 -0
- package/dist/component/server/identity.js +13 -0
- package/dist/component/server/identity.js.map +1 -0
- package/dist/{server/implementation → component/server}/keys.js +9 -31
- package/dist/component/server/keys.js.map +1 -0
- package/dist/component/server/limits.js +61 -0
- package/dist/component/server/limits.js.map +1 -0
- package/dist/component/server/mutations/account.js +44 -0
- package/dist/component/server/mutations/account.js.map +1 -0
- package/dist/component/server/{implementation/mutations → mutations}/code.js +7 -4
- package/dist/component/server/mutations/code.js.map +1 -0
- package/dist/component/server/mutations/invalidate.js +32 -0
- package/dist/component/server/mutations/invalidate.js.map +1 -0
- package/dist/component/server/mutations/oauth.js +110 -0
- package/dist/component/server/mutations/oauth.js.map +1 -0
- package/dist/component/server/mutations/refresh.js +119 -0
- package/dist/component/server/mutations/refresh.js.map +1 -0
- package/dist/component/server/mutations/register.js +83 -0
- package/dist/component/server/mutations/register.js.map +1 -0
- package/dist/component/server/mutations/retrieve.js +65 -0
- package/dist/component/server/mutations/retrieve.js.map +1 -0
- package/dist/component/server/mutations/signature.js +32 -0
- package/dist/component/server/mutations/signature.js.map +1 -0
- package/dist/component/server/{implementation/mutations → mutations}/signin.js +2 -2
- package/dist/component/server/mutations/signin.js.map +1 -0
- package/dist/component/server/mutations/signout.js +27 -0
- package/dist/component/server/mutations/signout.js.map +1 -0
- package/dist/component/server/mutations/store/refs.js +15 -0
- package/dist/component/server/mutations/store/refs.js.map +1 -0
- package/dist/component/server/mutations/store.js +85 -0
- package/dist/component/server/mutations/store.js.map +1 -0
- package/dist/component/server/mutations/verifier.js +18 -0
- package/dist/component/server/mutations/verifier.js.map +1 -0
- package/dist/component/server/mutations/verify.js +98 -0
- package/dist/component/server/mutations/verify.js.map +1 -0
- package/dist/component/server/oauth.js +106 -60
- package/dist/component/server/oauth.js.map +1 -1
- package/dist/component/server/passkey.js +328 -0
- package/dist/component/server/passkey.js.map +1 -0
- package/dist/{server/implementation → component/server}/redirects.js +13 -11
- package/dist/component/server/redirects.js.map +1 -0
- package/dist/component/server/refresh.js +96 -0
- package/dist/component/server/refresh.js.map +1 -0
- package/dist/component/server/runtime.d.ts +136 -0
- package/dist/component/server/runtime.d.ts.map +1 -0
- package/dist/component/server/runtime.js +413 -0
- package/dist/component/server/runtime.js.map +1 -0
- package/dist/{server/implementation → component/server}/sessions.js +14 -8
- package/dist/component/server/sessions.js.map +1 -0
- package/dist/component/server/signin.js +201 -0
- package/dist/component/server/signin.js.map +1 -0
- package/dist/component/server/tokens.js +17 -0
- package/dist/component/server/tokens.js.map +1 -0
- package/dist/component/server/totp.js +148 -0
- package/dist/component/server/totp.js.map +1 -0
- package/dist/component/server/types.d.ts +387 -298
- package/dist/component/server/types.d.ts.map +1 -1
- package/dist/component/server/{implementation/types.js → types.js} +1 -1
- package/dist/component/server/types.js.map +1 -0
- package/dist/component/server/{implementation/users.js → users.js} +54 -35
- package/dist/component/server/users.js.map +1 -0
- package/dist/component/server/utils.js +110 -4
- package/dist/component/server/utils.js.map +1 -1
- package/dist/core/types.d.ts +369 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/factors/device.js +105 -0
- package/dist/factors/device.js.map +1 -0
- package/dist/factors/passkey.js +181 -0
- package/dist/factors/passkey.js.map +1 -0
- package/dist/factors/totp.js +122 -0
- package/dist/factors/totp.js.map +1 -0
- package/dist/providers/anonymous.d.ts +3 -9
- package/dist/providers/anonymous.d.ts.map +1 -1
- package/dist/providers/anonymous.js +1 -18
- package/dist/providers/anonymous.js.map +1 -1
- package/dist/providers/credentials.d.ts +8 -10
- package/dist/providers/credentials.d.ts.map +1 -1
- package/dist/providers/credentials.js +3 -5
- package/dist/providers/credentials.js.map +1 -1
- package/dist/providers/device.d.ts +18 -10
- package/dist/providers/device.d.ts.map +1 -1
- package/dist/providers/device.js +4 -8
- package/dist/providers/device.js.map +1 -1
- package/dist/providers/email.d.ts +50 -23
- package/dist/providers/email.d.ts.map +1 -1
- package/dist/providers/email.js +58 -34
- package/dist/providers/email.js.map +1 -1
- package/dist/providers/index.d.ts +7 -3
- package/dist/providers/index.js +4 -1
- package/dist/providers/oauth.d.ts.map +1 -1
- package/dist/providers/oauth.js.map +1 -1
- package/dist/providers/passkey.d.ts +12 -9
- package/dist/providers/passkey.d.ts.map +1 -1
- package/dist/providers/passkey.js +1 -7
- package/dist/providers/passkey.js.map +1 -1
- package/dist/providers/password.d.ts +6 -12
- package/dist/providers/password.d.ts.map +1 -1
- package/dist/providers/password.js +189 -89
- package/dist/providers/password.js.map +1 -1
- package/dist/providers/phone.d.ts +40 -11
- package/dist/providers/phone.d.ts.map +1 -1
- package/dist/providers/phone.js +52 -21
- package/dist/providers/phone.js.map +1 -1
- package/dist/providers/sso.d.ts +50 -0
- package/dist/providers/sso.d.ts.map +1 -0
- package/dist/providers/sso.js +34 -0
- package/dist/providers/sso.js.map +1 -0
- package/dist/providers/totp.d.ts +12 -9
- package/dist/providers/totp.d.ts.map +1 -1
- package/dist/providers/totp.js +1 -7
- package/dist/providers/totp.js.map +1 -1
- package/dist/runtime/browser.js +68 -0
- package/dist/runtime/browser.js.map +1 -0
- package/dist/runtime/invite.js +51 -0
- package/dist/runtime/invite.js.map +1 -0
- package/dist/runtime/proxy.js +70 -0
- package/dist/runtime/proxy.js.map +1 -0
- package/dist/runtime/storage.js +37 -0
- package/dist/runtime/storage.js.map +1 -0
- package/dist/server/auth.d.ts +335 -370
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +204 -123
- package/dist/server/auth.js.map +1 -1
- package/dist/server/authError.d.ts +46 -0
- package/dist/server/authError.d.ts.map +1 -0
- package/dist/server/authError.js +34 -0
- package/dist/server/authError.js.map +1 -0
- package/dist/server/config.d.ts +1 -0
- package/dist/server/{providers.js → config.js} +43 -12
- package/dist/server/config.js.map +1 -0
- package/dist/server/cookies.d.ts +1 -38
- package/dist/server/cookies.js +3 -0
- package/dist/server/cookies.js.map +1 -1
- package/dist/server/core.d.ts +1436 -0
- package/dist/server/core.d.ts.map +1 -0
- package/dist/server/core.js +713 -0
- package/dist/server/core.js.map +1 -0
- package/dist/server/crypto.d.ts +8 -0
- package/dist/server/crypto.d.ts.map +1 -0
- package/dist/server/crypto.js +38 -0
- package/dist/server/crypto.js.map +1 -0
- package/dist/server/db.d.ts +1 -0
- package/dist/server/{implementation/db.js → db.js} +2 -1
- package/dist/server/db.js.map +1 -0
- package/dist/server/device.d.ts +1 -0
- package/dist/server/device.js +109 -0
- package/dist/server/device.js.map +1 -0
- package/dist/server/enterprise/config.d.ts +1 -0
- package/dist/server/enterprise/config.js +46 -0
- package/dist/server/enterprise/config.js.map +1 -0
- package/dist/server/enterprise/domain.d.ts +409 -0
- package/dist/server/enterprise/domain.d.ts.map +1 -0
- package/dist/server/enterprise/domain.js +885 -0
- package/dist/server/enterprise/domain.js.map +1 -0
- package/dist/server/enterprise/http.d.ts +26 -0
- package/dist/server/enterprise/http.d.ts.map +1 -0
- package/dist/server/enterprise/http.js +766 -0
- package/dist/server/enterprise/http.js.map +1 -0
- package/dist/server/enterprise/oidc.d.ts +1 -0
- package/dist/server/enterprise/oidc.js +248 -0
- package/dist/server/enterprise/oidc.js.map +1 -0
- package/dist/server/enterprise/policy.d.ts +1 -0
- package/dist/server/enterprise/policy.js +85 -0
- package/dist/server/enterprise/policy.js.map +1 -0
- package/dist/server/enterprise/saml.d.ts +1 -0
- package/dist/server/enterprise/saml.js +338 -0
- package/dist/server/enterprise/saml.js.map +1 -0
- package/dist/server/enterprise/scim.d.ts +1 -0
- package/dist/server/enterprise/scim.js +97 -0
- package/dist/server/enterprise/scim.js.map +1 -0
- package/dist/server/enterprise/shared.d.ts +5 -0
- package/dist/server/enterprise/shared.d.ts.map +1 -0
- package/dist/server/enterprise/shared.js +51 -0
- package/dist/server/enterprise/shared.js.map +1 -0
- package/dist/server/enterprise/validators.d.ts +1 -0
- package/dist/server/enterprise/validators.js +60 -0
- package/dist/server/enterprise/validators.js.map +1 -0
- package/dist/server/errors.d.ts +33 -1
- package/dist/server/errors.d.ts.map +1 -1
- package/dist/server/errors.js +44 -1
- package/dist/server/errors.js.map +1 -1
- package/dist/server/http.d.ts +59 -0
- package/dist/server/http.d.ts.map +1 -0
- package/dist/server/http.js +288 -0
- package/dist/server/http.js.map +1 -0
- package/dist/server/identity.d.ts +1 -0
- package/dist/server/identity.js +13 -0
- package/dist/server/identity.js.map +1 -0
- package/dist/server/index.d.ts +4 -182
- package/dist/server/index.js +4 -376
- package/dist/server/keys.d.ts +1 -0
- package/dist/{component/server/implementation → server}/keys.js +9 -31
- package/dist/server/keys.js.map +1 -0
- package/dist/server/limits.d.ts +1 -0
- package/dist/server/limits.js +61 -0
- package/dist/server/limits.js.map +1 -0
- package/dist/server/mounts.d.ts +647 -0
- package/dist/server/mounts.d.ts.map +1 -0
- package/dist/server/mounts.js +643 -0
- package/dist/server/mounts.js.map +1 -0
- package/dist/server/mutations/account.d.ts +30 -0
- package/dist/server/mutations/account.d.ts.map +1 -0
- package/dist/server/mutations/account.js +44 -0
- package/dist/server/mutations/account.js.map +1 -0
- package/dist/server/mutations/code.d.ts +30 -0
- package/dist/server/mutations/code.d.ts.map +1 -0
- package/dist/server/{implementation/mutations → mutations}/code.js +7 -4
- package/dist/server/mutations/code.js.map +1 -0
- package/dist/server/mutations/index.d.ts +14 -0
- package/dist/server/mutations/index.js +15 -0
- package/dist/server/mutations/invalidate.d.ts +20 -0
- package/dist/server/mutations/invalidate.d.ts.map +1 -0
- package/dist/server/mutations/invalidate.js +32 -0
- package/dist/server/mutations/invalidate.js.map +1 -0
- package/dist/server/mutations/oauth.d.ts +28 -0
- package/dist/server/mutations/oauth.d.ts.map +1 -0
- package/dist/server/mutations/oauth.js +110 -0
- package/dist/server/mutations/oauth.js.map +1 -0
- package/dist/server/mutations/refresh.d.ts +21 -0
- package/dist/server/mutations/refresh.d.ts.map +1 -0
- package/dist/server/mutations/refresh.js +119 -0
- package/dist/server/mutations/refresh.js.map +1 -0
- package/dist/server/mutations/register.d.ts +38 -0
- package/dist/server/mutations/register.d.ts.map +1 -0
- package/dist/server/mutations/register.js +83 -0
- package/dist/server/mutations/register.js.map +1 -0
- package/dist/server/mutations/retrieve.d.ts +33 -0
- package/dist/server/mutations/retrieve.d.ts.map +1 -0
- package/dist/server/mutations/retrieve.js +65 -0
- package/dist/server/mutations/retrieve.js.map +1 -0
- package/dist/server/mutations/signature.d.ts +22 -0
- package/dist/server/mutations/signature.d.ts.map +1 -0
- package/dist/server/mutations/signature.js +32 -0
- package/dist/server/mutations/signature.js.map +1 -0
- package/dist/server/mutations/signin.d.ts +22 -0
- package/dist/server/mutations/signin.d.ts.map +1 -0
- package/dist/server/{implementation/mutations → mutations}/signin.js +2 -2
- package/dist/server/mutations/signin.js.map +1 -0
- package/dist/server/mutations/signout.d.ts +16 -0
- package/dist/server/mutations/signout.d.ts.map +1 -0
- package/dist/server/mutations/signout.js +27 -0
- package/dist/server/mutations/signout.js.map +1 -0
- package/dist/server/mutations/store/refs.d.ts +12 -0
- package/dist/server/mutations/store/refs.d.ts.map +1 -0
- package/dist/server/mutations/store/refs.js +15 -0
- package/dist/server/mutations/store/refs.js.map +1 -0
- package/dist/server/mutations/store.d.ts +306 -0
- package/dist/server/mutations/store.d.ts.map +1 -0
- package/dist/server/mutations/store.js +85 -0
- package/dist/server/mutations/store.js.map +1 -0
- package/dist/server/mutations/verifier.d.ts +13 -0
- package/dist/server/mutations/verifier.d.ts.map +1 -0
- package/dist/server/mutations/verifier.js +18 -0
- package/dist/server/mutations/verifier.js.map +1 -0
- package/dist/server/mutations/verify.d.ts +26 -0
- package/dist/server/mutations/verify.d.ts.map +1 -0
- package/dist/server/mutations/verify.js +98 -0
- package/dist/server/mutations/verify.js.map +1 -0
- package/dist/server/oauth.d.ts +1 -48
- package/dist/server/oauth.js +107 -64
- package/dist/server/oauth.js.map +1 -1
- package/dist/server/passkey.d.ts +27 -0
- package/dist/server/passkey.d.ts.map +1 -0
- package/dist/server/passkey.js +328 -0
- package/dist/server/passkey.js.map +1 -0
- package/dist/server/redirects.d.ts +1 -0
- package/dist/{component/server/implementation → server}/redirects.js +13 -11
- package/dist/server/redirects.js.map +1 -0
- package/dist/server/refresh.d.ts +1 -0
- package/dist/server/refresh.js +96 -0
- package/dist/server/refresh.js.map +1 -0
- package/dist/server/runtime.d.ts +136 -0
- package/dist/server/runtime.d.ts.map +1 -0
- package/dist/server/runtime.js +413 -0
- package/dist/server/runtime.js.map +1 -0
- package/dist/server/sessions.d.ts +1 -0
- package/dist/{component/server/implementation → server}/sessions.js +14 -8
- package/dist/server/sessions.js.map +1 -0
- package/dist/server/signin.d.ts +1 -0
- package/dist/server/signin.js +201 -0
- package/dist/server/signin.js.map +1 -0
- package/dist/server/ssr.d.ts +226 -0
- package/dist/server/ssr.d.ts.map +1 -0
- package/dist/server/ssr.js +786 -0
- package/dist/server/ssr.js.map +1 -0
- package/dist/server/templates.d.ts +1 -21
- package/dist/server/templates.js +2 -1
- package/dist/server/templates.js.map +1 -1
- package/dist/server/tokens.d.ts +1 -0
- package/dist/server/tokens.js +17 -0
- package/dist/server/tokens.js.map +1 -0
- package/dist/server/totp.d.ts +1 -0
- package/dist/server/totp.js +148 -0
- package/dist/server/totp.js.map +1 -0
- package/dist/server/types.d.ts +498 -306
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/types.js +108 -1
- package/dist/server/types.js.map +1 -0
- package/dist/server/users.d.ts +1 -0
- package/dist/server/{implementation/users.js → users.js} +54 -35
- package/dist/server/users.js.map +1 -0
- package/dist/server/utils.d.ts +1 -6
- package/dist/server/utils.js +110 -4
- package/dist/server/utils.js.map +1 -1
- package/package.json +49 -46
- package/src/authorization/index.ts +83 -0
- package/src/cli/bin.ts +5 -0
- package/src/cli/command.ts +6 -5
- package/src/cli/index.ts +456 -248
- package/src/cli/keys.ts +3 -0
- package/src/client/core/types.ts +437 -0
- package/src/client/factors/device.ts +160 -0
- package/src/client/factors/passkey.ts +282 -0
- package/src/client/factors/totp.ts +150 -0
- package/src/client/index.ts +745 -989
- package/src/client/runtime/browser.ts +112 -0
- package/src/client/runtime/invite.ts +65 -0
- package/src/client/runtime/proxy.ts +111 -0
- package/src/client/runtime/storage.ts +79 -0
- package/src/component/_generated/api.ts +42 -0
- package/src/component/_generated/component.ts +3123 -102
- package/src/component/functions.ts +38 -22
- package/src/component/index.ts +10 -20
- package/src/component/model.ts +449 -0
- package/src/component/public/enterprise/audit.ts +120 -0
- package/src/component/public/enterprise/core.ts +354 -0
- package/src/component/public/enterprise/domains.ts +323 -0
- package/src/component/public/enterprise/scim.ts +396 -0
- package/src/component/public/enterprise/secrets.ts +132 -0
- package/src/component/public/enterprise/webhooks.ts +306 -0
- package/src/component/public/factors/devices.ts +223 -0
- package/src/component/public/factors/passkeys.ts +242 -0
- package/src/component/public/factors/totp.ts +258 -0
- package/src/component/public/groups/core.ts +481 -0
- package/src/component/public/groups/invites.ts +602 -0
- package/src/component/public/groups/members.ts +409 -0
- package/src/component/public/identity/accounts.ts +206 -0
- package/src/component/public/identity/codes.ts +148 -0
- package/src/component/public/identity/sessions.ts +209 -0
- package/src/component/public/identity/tokens.ts +250 -0
- package/src/component/public/identity/users.ts +354 -0
- package/src/component/public/identity/verifiers.ts +157 -0
- package/src/component/public/security/keys.ts +365 -0
- package/src/component/public/security/limits.ts +173 -0
- package/src/component/public.ts +26 -1766
- package/src/component/schema.ts +273 -100
- package/src/providers/anonymous.ts +10 -20
- package/src/providers/credentials.ts +14 -22
- package/src/providers/device.ts +3 -14
- package/src/providers/email.ts +83 -47
- package/src/providers/index.ts +7 -0
- package/src/providers/oauth.ts +5 -3
- package/src/providers/passkey.ts +0 -13
- package/src/providers/password.ts +307 -130
- package/src/providers/phone.ts +81 -37
- package/src/providers/sso.ts +54 -0
- package/src/providers/totp.ts +0 -13
- package/src/samlify.d.ts +53 -0
- package/src/server/auth.ts +701 -247
- package/src/server/authError.ts +44 -0
- package/src/server/{providers.ts → config.ts} +84 -15
- package/src/server/cookies.ts +8 -1
- package/src/server/core.ts +2095 -0
- package/src/server/crypto.ts +88 -0
- package/src/server/{implementation/db.ts → db.ts} +90 -15
- package/src/server/device.ts +221 -0
- package/src/server/enterprise/config.ts +51 -0
- package/src/server/enterprise/domain.ts +1751 -0
- package/src/server/enterprise/http.ts +1324 -0
- package/src/server/enterprise/oidc.ts +500 -0
- package/src/server/enterprise/policy.ts +128 -0
- package/src/server/enterprise/saml.ts +578 -0
- package/src/server/enterprise/scim.ts +135 -0
- package/src/server/enterprise/shared.ts +134 -0
- package/src/server/enterprise/validators.ts +93 -0
- package/src/server/errors.ts +130 -119
- package/src/server/http.ts +531 -0
- package/src/server/identity.ts +18 -0
- package/src/server/index.ts +32 -650
- package/src/server/{implementation/keys.ts → keys.ts} +16 -44
- package/src/server/limits.ts +134 -0
- package/src/server/mounts.ts +948 -0
- package/src/server/mutations/account.ts +76 -0
- package/src/server/{implementation/mutations → mutations}/code.ts +22 -11
- package/src/server/mutations/index.ts +13 -0
- package/src/server/mutations/invalidate.ts +50 -0
- package/src/server/mutations/oauth.ts +237 -0
- package/src/server/mutations/refresh.ts +298 -0
- package/src/server/mutations/register.ts +200 -0
- package/src/server/mutations/retrieve.ts +109 -0
- package/src/server/mutations/signature.ts +50 -0
- package/src/server/{implementation/mutations → mutations}/signin.ts +9 -7
- package/src/server/mutations/signout.ts +43 -0
- package/src/server/mutations/store/refs.ts +10 -0
- package/src/server/mutations/store.ts +138 -0
- package/src/server/mutations/verifier.ts +34 -0
- package/src/server/mutations/verify.ts +202 -0
- package/src/server/oauth.ts +243 -131
- package/src/server/passkey.ts +784 -0
- package/src/server/{implementation/redirects.ts → redirects.ts} +21 -16
- package/src/server/refresh.ts +222 -0
- package/src/server/runtime.ts +880 -0
- package/src/server/{implementation/sessions.ts → sessions.ts} +33 -25
- package/src/server/signin.ts +438 -0
- package/src/server/ssr.ts +1764 -0
- package/src/server/templates.ts +8 -3
- package/src/server/{implementation/tokens.ts → tokens.ts} +11 -5
- package/src/server/totp.ts +349 -0
- package/src/server/types.ts +972 -207
- package/src/server/{implementation/users.ts → users.ts} +129 -75
- package/src/server/utils.ts +192 -5
- package/src/test.ts +28 -4
- package/dist/bin.cjs +0 -27757
- package/dist/component/providers/email.js +0 -47
- package/dist/component/providers/email.js.map +0 -1
- package/dist/component/public.js.map +0 -1
- package/dist/component/server/implementation/db.js.map +0 -1
- package/dist/component/server/implementation/device.js +0 -135
- package/dist/component/server/implementation/device.js.map +0 -1
- package/dist/component/server/implementation/index.d.ts +0 -870
- package/dist/component/server/implementation/index.d.ts.map +0 -1
- package/dist/component/server/implementation/index.js +0 -610
- package/dist/component/server/implementation/index.js.map +0 -1
- package/dist/component/server/implementation/keys.js.map +0 -1
- package/dist/component/server/implementation/mutations/account.js +0 -39
- package/dist/component/server/implementation/mutations/account.js.map +0 -1
- package/dist/component/server/implementation/mutations/code.js.map +0 -1
- package/dist/component/server/implementation/mutations/index.js +0 -70
- package/dist/component/server/implementation/mutations/index.js.map +0 -1
- package/dist/component/server/implementation/mutations/invalidate.js +0 -29
- package/dist/component/server/implementation/mutations/invalidate.js.map +0 -1
- package/dist/component/server/implementation/mutations/oauth.js +0 -51
- package/dist/component/server/implementation/mutations/oauth.js.map +0 -1
- package/dist/component/server/implementation/mutations/refresh.js +0 -85
- package/dist/component/server/implementation/mutations/refresh.js.map +0 -1
- package/dist/component/server/implementation/mutations/register.js +0 -65
- package/dist/component/server/implementation/mutations/register.js.map +0 -1
- package/dist/component/server/implementation/mutations/retrieve.js +0 -50
- package/dist/component/server/implementation/mutations/retrieve.js.map +0 -1
- package/dist/component/server/implementation/mutations/signature.js +0 -27
- package/dist/component/server/implementation/mutations/signature.js.map +0 -1
- package/dist/component/server/implementation/mutations/signin.js.map +0 -1
- package/dist/component/server/implementation/mutations/signout.js +0 -27
- package/dist/component/server/implementation/mutations/signout.js.map +0 -1
- package/dist/component/server/implementation/mutations/store.js +0 -12
- package/dist/component/server/implementation/mutations/store.js.map +0 -1
- package/dist/component/server/implementation/mutations/verifier.js +0 -16
- package/dist/component/server/implementation/mutations/verifier.js.map +0 -1
- package/dist/component/server/implementation/mutations/verify.js +0 -105
- package/dist/component/server/implementation/mutations/verify.js.map +0 -1
- package/dist/component/server/implementation/passkey.js +0 -307
- package/dist/component/server/implementation/passkey.js.map +0 -1
- package/dist/component/server/implementation/provider.js +0 -19
- package/dist/component/server/implementation/provider.js.map +0 -1
- package/dist/component/server/implementation/ratelimit.js +0 -48
- package/dist/component/server/implementation/ratelimit.js.map +0 -1
- package/dist/component/server/implementation/redirects.js.map +0 -1
- package/dist/component/server/implementation/refresh.js +0 -109
- package/dist/component/server/implementation/refresh.js.map +0 -1
- package/dist/component/server/implementation/sessions.js.map +0 -1
- package/dist/component/server/implementation/signin.js +0 -148
- package/dist/component/server/implementation/signin.js.map +0 -1
- package/dist/component/server/implementation/tokens.js +0 -15
- package/dist/component/server/implementation/tokens.js.map +0 -1
- package/dist/component/server/implementation/totp.js +0 -142
- package/dist/component/server/implementation/totp.js.map +0 -1
- package/dist/component/server/implementation/types.d.ts +0 -42
- package/dist/component/server/implementation/types.d.ts.map +0 -1
- package/dist/component/server/implementation/types.js.map +0 -1
- package/dist/component/server/implementation/users.js.map +0 -1
- package/dist/component/server/implementation/utils.js +0 -56
- package/dist/component/server/implementation/utils.js.map +0 -1
- package/dist/component/server/providers.js.map +0 -1
- package/dist/component/server/templates.js +0 -84
- package/dist/component/server/templates.js.map +0 -1
- package/dist/server/cookies.d.ts.map +0 -1
- package/dist/server/implementation/db.d.ts +0 -86
- package/dist/server/implementation/db.d.ts.map +0 -1
- package/dist/server/implementation/db.js.map +0 -1
- package/dist/server/implementation/device.d.ts +0 -30
- package/dist/server/implementation/device.d.ts.map +0 -1
- package/dist/server/implementation/device.js +0 -135
- package/dist/server/implementation/device.js.map +0 -1
- package/dist/server/implementation/index.d.ts +0 -870
- package/dist/server/implementation/index.d.ts.map +0 -1
- package/dist/server/implementation/index.js +0 -610
- package/dist/server/implementation/index.js.map +0 -1
- package/dist/server/implementation/keys.d.ts +0 -66
- package/dist/server/implementation/keys.d.ts.map +0 -1
- package/dist/server/implementation/keys.js.map +0 -1
- package/dist/server/implementation/mutations/account.d.ts +0 -27
- package/dist/server/implementation/mutations/account.d.ts.map +0 -1
- package/dist/server/implementation/mutations/account.js +0 -39
- package/dist/server/implementation/mutations/account.js.map +0 -1
- package/dist/server/implementation/mutations/code.d.ts +0 -29
- package/dist/server/implementation/mutations/code.d.ts.map +0 -1
- package/dist/server/implementation/mutations/code.js.map +0 -1
- package/dist/server/implementation/mutations/index.d.ts +0 -310
- package/dist/server/implementation/mutations/index.d.ts.map +0 -1
- package/dist/server/implementation/mutations/index.js +0 -70
- package/dist/server/implementation/mutations/index.js.map +0 -1
- package/dist/server/implementation/mutations/invalidate.d.ts +0 -18
- package/dist/server/implementation/mutations/invalidate.d.ts.map +0 -1
- package/dist/server/implementation/mutations/invalidate.js +0 -29
- package/dist/server/implementation/mutations/invalidate.js.map +0 -1
- package/dist/server/implementation/mutations/oauth.d.ts +0 -23
- package/dist/server/implementation/mutations/oauth.d.ts.map +0 -1
- package/dist/server/implementation/mutations/oauth.js +0 -51
- package/dist/server/implementation/mutations/oauth.js.map +0 -1
- package/dist/server/implementation/mutations/refresh.d.ts +0 -20
- package/dist/server/implementation/mutations/refresh.d.ts.map +0 -1
- package/dist/server/implementation/mutations/refresh.js +0 -85
- package/dist/server/implementation/mutations/refresh.js.map +0 -1
- package/dist/server/implementation/mutations/register.d.ts +0 -37
- package/dist/server/implementation/mutations/register.d.ts.map +0 -1
- package/dist/server/implementation/mutations/register.js +0 -65
- package/dist/server/implementation/mutations/register.js.map +0 -1
- package/dist/server/implementation/mutations/retrieve.d.ts +0 -31
- package/dist/server/implementation/mutations/retrieve.d.ts.map +0 -1
- package/dist/server/implementation/mutations/retrieve.js +0 -50
- package/dist/server/implementation/mutations/retrieve.js.map +0 -1
- package/dist/server/implementation/mutations/signature.d.ts +0 -19
- package/dist/server/implementation/mutations/signature.d.ts.map +0 -1
- package/dist/server/implementation/mutations/signature.js +0 -27
- package/dist/server/implementation/mutations/signature.js.map +0 -1
- package/dist/server/implementation/mutations/signin.d.ts +0 -21
- package/dist/server/implementation/mutations/signin.d.ts.map +0 -1
- package/dist/server/implementation/mutations/signin.js.map +0 -1
- package/dist/server/implementation/mutations/signout.d.ts +0 -14
- package/dist/server/implementation/mutations/signout.d.ts.map +0 -1
- package/dist/server/implementation/mutations/signout.js +0 -27
- package/dist/server/implementation/mutations/signout.js.map +0 -1
- package/dist/server/implementation/mutations/store.d.ts +0 -11
- package/dist/server/implementation/mutations/store.d.ts.map +0 -1
- package/dist/server/implementation/mutations/store.js +0 -12
- package/dist/server/implementation/mutations/store.js.map +0 -1
- package/dist/server/implementation/mutations/verifier.d.ts +0 -11
- package/dist/server/implementation/mutations/verifier.d.ts.map +0 -1
- package/dist/server/implementation/mutations/verifier.js +0 -16
- package/dist/server/implementation/mutations/verifier.js.map +0 -1
- package/dist/server/implementation/mutations/verify.d.ts +0 -25
- package/dist/server/implementation/mutations/verify.d.ts.map +0 -1
- package/dist/server/implementation/mutations/verify.js +0 -105
- package/dist/server/implementation/mutations/verify.js.map +0 -1
- package/dist/server/implementation/passkey.d.ts +0 -24
- package/dist/server/implementation/passkey.d.ts.map +0 -1
- package/dist/server/implementation/passkey.js +0 -307
- package/dist/server/implementation/passkey.js.map +0 -1
- package/dist/server/implementation/provider.d.ts +0 -10
- package/dist/server/implementation/provider.d.ts.map +0 -1
- package/dist/server/implementation/provider.js +0 -19
- package/dist/server/implementation/provider.js.map +0 -1
- package/dist/server/implementation/ratelimit.d.ts +0 -10
- package/dist/server/implementation/ratelimit.d.ts.map +0 -1
- package/dist/server/implementation/ratelimit.js +0 -48
- package/dist/server/implementation/ratelimit.js.map +0 -1
- package/dist/server/implementation/redirects.d.ts +0 -10
- package/dist/server/implementation/redirects.d.ts.map +0 -1
- package/dist/server/implementation/redirects.js.map +0 -1
- package/dist/server/implementation/refresh.d.ts +0 -37
- package/dist/server/implementation/refresh.d.ts.map +0 -1
- package/dist/server/implementation/refresh.js +0 -109
- package/dist/server/implementation/refresh.js.map +0 -1
- package/dist/server/implementation/sessions.d.ts +0 -29
- package/dist/server/implementation/sessions.d.ts.map +0 -1
- package/dist/server/implementation/sessions.js.map +0 -1
- package/dist/server/implementation/signin.d.ts +0 -55
- package/dist/server/implementation/signin.d.ts.map +0 -1
- package/dist/server/implementation/signin.js +0 -148
- package/dist/server/implementation/signin.js.map +0 -1
- package/dist/server/implementation/tokens.d.ts +0 -11
- package/dist/server/implementation/tokens.d.ts.map +0 -1
- package/dist/server/implementation/tokens.js +0 -15
- package/dist/server/implementation/tokens.js.map +0 -1
- package/dist/server/implementation/totp.d.ts +0 -31
- package/dist/server/implementation/totp.d.ts.map +0 -1
- package/dist/server/implementation/totp.js +0 -142
- package/dist/server/implementation/totp.js.map +0 -1
- package/dist/server/implementation/types.d.ts +0 -189
- package/dist/server/implementation/types.d.ts.map +0 -1
- package/dist/server/implementation/types.js +0 -97
- package/dist/server/implementation/types.js.map +0 -1
- package/dist/server/implementation/users.d.ts +0 -30
- package/dist/server/implementation/users.d.ts.map +0 -1
- package/dist/server/implementation/users.js.map +0 -1
- package/dist/server/implementation/utils.d.ts +0 -19
- package/dist/server/implementation/utils.d.ts.map +0 -1
- package/dist/server/implementation/utils.js +0 -56
- package/dist/server/implementation/utils.js.map +0 -1
- package/dist/server/index.d.ts.map +0 -1
- package/dist/server/index.js.map +0 -1
- package/dist/server/oauth.d.ts.map +0 -1
- package/dist/server/providers.d.ts +0 -72
- package/dist/server/providers.d.ts.map +0 -1
- package/dist/server/providers.js.map +0 -1
- package/dist/server/templates.d.ts.map +0 -1
- package/dist/server/utils.d.ts.map +0 -1
- package/dist/server/version.d.ts +0 -5
- package/dist/server/version.d.ts.map +0 -1
- package/dist/server/version.js +0 -6
- package/dist/server/version.js.map +0 -1
- package/src/cli/utils.ts +0 -248
- package/src/server/implementation/device.ts +0 -307
- package/src/server/implementation/index.ts +0 -1583
- package/src/server/implementation/mutations/account.ts +0 -50
- package/src/server/implementation/mutations/index.ts +0 -157
- package/src/server/implementation/mutations/invalidate.ts +0 -42
- package/src/server/implementation/mutations/oauth.ts +0 -73
- package/src/server/implementation/mutations/refresh.ts +0 -175
- package/src/server/implementation/mutations/register.ts +0 -100
- package/src/server/implementation/mutations/retrieve.ts +0 -79
- package/src/server/implementation/mutations/signature.ts +0 -39
- package/src/server/implementation/mutations/signout.ts +0 -35
- package/src/server/implementation/mutations/store.ts +0 -7
- package/src/server/implementation/mutations/verifier.ts +0 -24
- package/src/server/implementation/mutations/verify.ts +0 -194
- package/src/server/implementation/passkey.ts +0 -620
- package/src/server/implementation/provider.ts +0 -36
- package/src/server/implementation/ratelimit.ts +0 -79
- package/src/server/implementation/refresh.ts +0 -172
- package/src/server/implementation/signin.ts +0 -296
- package/src/server/implementation/totp.ts +0 -342
- package/src/server/implementation/types.ts +0 -444
- package/src/server/implementation/utils.ts +0 -91
- package/src/server/version.ts +0 -2
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
import { v } from "convex/values";
|
|
2
|
+
import { mutation, query } from "../../functions";
|
|
3
|
+
import {
|
|
4
|
+
vEnterpriseScimConfigDoc,
|
|
5
|
+
vEnterpriseScimIdentityDoc,
|
|
6
|
+
vScimResourceType,
|
|
7
|
+
vScimStatus,
|
|
8
|
+
} from "../../model";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Create or update the SCIM provisioning configuration for an enterprise.
|
|
12
|
+
*
|
|
13
|
+
* If a SCIM config already exists for the given enterprise, all fields are
|
|
14
|
+
* patched in place (useful for rotating the bearer token). Otherwise a new
|
|
15
|
+
* config document is created. Only one SCIM config is allowed per enterprise.
|
|
16
|
+
*
|
|
17
|
+
* @param args.enterpriseId - The ID of the enterprise to configure SCIM for.
|
|
18
|
+
* @param args.groupId - The ID of the root group that owns the enterprise.
|
|
19
|
+
* @param args.status - The SCIM config lifecycle status: `"draft"`, `"active"`, or `"disabled"`.
|
|
20
|
+
* @param args.basePath - The base URL path for the SCIM endpoint (e.g. `"/scim/v2"`).
|
|
21
|
+
* @param args.tokenHash - A hash of the bearer token used to authenticate SCIM requests.
|
|
22
|
+
* @param args.lastRotatedAt - An optional epoch timestamp (ms) recording when the token was last rotated.
|
|
23
|
+
* @param args.extend - An optional arbitrary extension object for custom SCIM settings.
|
|
24
|
+
* @returns The ID of the created or updated `EnterpriseScimConfig` document.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```ts
|
|
28
|
+
* const configId = await ctx.runMutation(
|
|
29
|
+
* components.auth.enterprise.enterpriseScimConfigUpsert,
|
|
30
|
+
* {
|
|
31
|
+
* enterpriseId,
|
|
32
|
+
* groupId: orgGroupId,
|
|
33
|
+
* status: "active",
|
|
34
|
+
* basePath: "/scim/v2",
|
|
35
|
+
* tokenHash: "sha256:abc123...",
|
|
36
|
+
* lastRotatedAt: Date.now(),
|
|
37
|
+
* },
|
|
38
|
+
* );
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export const enterpriseScimConfigUpsert = mutation({
|
|
42
|
+
args: {
|
|
43
|
+
enterpriseId: v.id("Enterprise"),
|
|
44
|
+
groupId: v.id("Group"),
|
|
45
|
+
status: vScimStatus,
|
|
46
|
+
basePath: v.string(),
|
|
47
|
+
tokenHash: v.string(),
|
|
48
|
+
lastRotatedAt: v.optional(v.number()),
|
|
49
|
+
extend: v.optional(v.any()),
|
|
50
|
+
},
|
|
51
|
+
returns: v.id("EnterpriseScimConfig"),
|
|
52
|
+
handler: async (ctx, args) => {
|
|
53
|
+
const existing = await ctx.db
|
|
54
|
+
.query("EnterpriseScimConfig")
|
|
55
|
+
.withIndex("enterprise_id", (idx) =>
|
|
56
|
+
idx.eq("enterpriseId", args.enterpriseId),
|
|
57
|
+
)
|
|
58
|
+
.first();
|
|
59
|
+
if (existing) {
|
|
60
|
+
await ctx.db.patch(existing._id, args);
|
|
61
|
+
return existing._id;
|
|
62
|
+
}
|
|
63
|
+
return await ctx.db.insert("EnterpriseScimConfig", args);
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Retrieve the SCIM configuration for a specific enterprise.
|
|
69
|
+
*
|
|
70
|
+
* Looks up the SCIM config document by enterprise ID using the
|
|
71
|
+
* `enterprise_id` index. Returns `null` if SCIM has not been configured.
|
|
72
|
+
*
|
|
73
|
+
* @param args.enterpriseId - The ID of the enterprise whose SCIM config to retrieve.
|
|
74
|
+
* @returns The SCIM configuration document, or `null` if not configured.
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```ts
|
|
78
|
+
* const config = await ctx.runQuery(
|
|
79
|
+
* components.auth.enterprise.enterpriseScimConfigGetByEnterprise,
|
|
80
|
+
* { enterpriseId },
|
|
81
|
+
* );
|
|
82
|
+
* if (config) {
|
|
83
|
+
* console.log(config.status, config.basePath);
|
|
84
|
+
* }
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
export const enterpriseScimConfigGetByEnterprise = query({
|
|
88
|
+
args: { enterpriseId: v.id("Enterprise") },
|
|
89
|
+
returns: v.union(vEnterpriseScimConfigDoc, v.null()),
|
|
90
|
+
handler: async (ctx, { enterpriseId }) => {
|
|
91
|
+
return await ctx.db
|
|
92
|
+
.query("EnterpriseScimConfig")
|
|
93
|
+
.withIndex("enterprise_id", (idx) => idx.eq("enterpriseId", enterpriseId))
|
|
94
|
+
.first();
|
|
95
|
+
},
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Look up a SCIM configuration by its bearer token hash.
|
|
100
|
+
*
|
|
101
|
+
* Used during SCIM request authentication to resolve which enterprise a
|
|
102
|
+
* given bearer token belongs to. Returns `null` if no config matches.
|
|
103
|
+
*
|
|
104
|
+
* @param args.tokenHash - The hash of the bearer token from the incoming SCIM request.
|
|
105
|
+
* @returns The matching SCIM configuration document, or `null` if not found.
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```ts
|
|
109
|
+
* const config = await ctx.runQuery(
|
|
110
|
+
* components.auth.enterprise.enterpriseScimConfigGetByTokenHash,
|
|
111
|
+
* { tokenHash: "sha256:abc123..." },
|
|
112
|
+
* );
|
|
113
|
+
* if (config) {
|
|
114
|
+
* console.log("Authenticated enterprise:", config.enterpriseId);
|
|
115
|
+
* }
|
|
116
|
+
* ```
|
|
117
|
+
*/
|
|
118
|
+
export const enterpriseScimConfigGetByTokenHash = query({
|
|
119
|
+
args: { tokenHash: v.string() },
|
|
120
|
+
returns: v.union(vEnterpriseScimConfigDoc, v.null()),
|
|
121
|
+
handler: async (ctx, { tokenHash }) => {
|
|
122
|
+
return await ctx.db
|
|
123
|
+
.query("EnterpriseScimConfig")
|
|
124
|
+
.withIndex("token_hash", (idx) => idx.eq("tokenHash", tokenHash))
|
|
125
|
+
.first();
|
|
126
|
+
},
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Retrieve a SCIM identity by enterprise, resource type, and external ID.
|
|
131
|
+
*
|
|
132
|
+
* Looks up a SCIM-provisioned identity using the composite index on
|
|
133
|
+
* `(enterpriseId, resourceType, externalId)`. This is the primary lookup
|
|
134
|
+
* used when processing incoming SCIM user or group operations.
|
|
135
|
+
*
|
|
136
|
+
* @param args.enterpriseId - The ID of the enterprise that owns the SCIM identity.
|
|
137
|
+
* @param args.resourceType - The SCIM resource type: `"user"` or `"group"`.
|
|
138
|
+
* @param args.externalId - The external identifier assigned by the identity provider.
|
|
139
|
+
* @returns The SCIM identity document, or `null` if not found.
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
* ```ts
|
|
143
|
+
* const identity = await ctx.runQuery(
|
|
144
|
+
* components.auth.enterprise.enterpriseScimIdentityGet,
|
|
145
|
+
* {
|
|
146
|
+
* enterpriseId,
|
|
147
|
+
* resourceType: "user",
|
|
148
|
+
* externalId: "okta-user-abc123",
|
|
149
|
+
* },
|
|
150
|
+
* );
|
|
151
|
+
* ```
|
|
152
|
+
*/
|
|
153
|
+
export const enterpriseScimIdentityGet = query({
|
|
154
|
+
args: {
|
|
155
|
+
enterpriseId: v.id("Enterprise"),
|
|
156
|
+
resourceType: vScimResourceType,
|
|
157
|
+
externalId: v.string(),
|
|
158
|
+
},
|
|
159
|
+
returns: v.union(vEnterpriseScimIdentityDoc, v.null()),
|
|
160
|
+
handler: async (ctx, args) => {
|
|
161
|
+
return await ctx.db
|
|
162
|
+
.query("EnterpriseScimIdentity")
|
|
163
|
+
.withIndex("enterprise_id_resource_type_external_id", (idx) =>
|
|
164
|
+
idx
|
|
165
|
+
.eq("enterpriseId", args.enterpriseId)
|
|
166
|
+
.eq("resourceType", args.resourceType)
|
|
167
|
+
.eq("externalId", args.externalId),
|
|
168
|
+
)
|
|
169
|
+
.first();
|
|
170
|
+
},
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Retrieve the SCIM identity linked to a specific user.
|
|
175
|
+
*
|
|
176
|
+
* Looks up the first SCIM identity document associated with the given user ID
|
|
177
|
+
* via the `user_id` index. Useful for checking whether a user was provisioned
|
|
178
|
+
* through SCIM.
|
|
179
|
+
*
|
|
180
|
+
* @param args.userId - The document ID of the user whose SCIM identity to retrieve.
|
|
181
|
+
* @returns The SCIM identity document, or `null` if the user has no SCIM identity.
|
|
182
|
+
*
|
|
183
|
+
* @example
|
|
184
|
+
* ```ts
|
|
185
|
+
* const scimIdentity = await ctx.runQuery(
|
|
186
|
+
* components.auth.enterprise.enterpriseScimIdentityGetByUser,
|
|
187
|
+
* { userId },
|
|
188
|
+
* );
|
|
189
|
+
* if (scimIdentity) {
|
|
190
|
+
* console.log("User provisioned via SCIM:", scimIdentity.externalId);
|
|
191
|
+
* }
|
|
192
|
+
* ```
|
|
193
|
+
*/
|
|
194
|
+
export const enterpriseScimIdentityGetByUser = query({
|
|
195
|
+
args: { userId: v.id("User") },
|
|
196
|
+
returns: v.union(vEnterpriseScimIdentityDoc, v.null()),
|
|
197
|
+
handler: async (ctx, { userId }) => {
|
|
198
|
+
return await ctx.db
|
|
199
|
+
.query("EnterpriseScimIdentity")
|
|
200
|
+
.withIndex("user_id", (idx) => idx.eq("userId", userId))
|
|
201
|
+
.first();
|
|
202
|
+
},
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Retrieve the SCIM identity for a specific user within a specific enterprise.
|
|
207
|
+
*
|
|
208
|
+
* Uses the composite `(enterpriseId, userId)` index to find the SCIM identity
|
|
209
|
+
* that links a user to a particular enterprise. This is useful when a user may
|
|
210
|
+
* belong to multiple enterprises.
|
|
211
|
+
*
|
|
212
|
+
* @param args.enterpriseId - The ID of the enterprise to scope the lookup to.
|
|
213
|
+
* @param args.userId - The document ID of the user.
|
|
214
|
+
* @returns The SCIM identity document, or `null` if not found.
|
|
215
|
+
*
|
|
216
|
+
* @example
|
|
217
|
+
* ```ts
|
|
218
|
+
* const identity = await ctx.runQuery(
|
|
219
|
+
* components.auth.enterprise.enterpriseScimIdentityGetByEnterpriseAndUser,
|
|
220
|
+
* { enterpriseId, userId },
|
|
221
|
+
* );
|
|
222
|
+
* ```
|
|
223
|
+
*/
|
|
224
|
+
export const enterpriseScimIdentityGetByEnterpriseAndUser = query({
|
|
225
|
+
args: {
|
|
226
|
+
enterpriseId: v.id("Enterprise"),
|
|
227
|
+
userId: v.id("User"),
|
|
228
|
+
},
|
|
229
|
+
returns: v.union(vEnterpriseScimIdentityDoc, v.null()),
|
|
230
|
+
handler: async (ctx, { enterpriseId, userId }) => {
|
|
231
|
+
return await ctx.db
|
|
232
|
+
.query("EnterpriseScimIdentity")
|
|
233
|
+
.withIndex("enterprise_id_user_id", (idx) =>
|
|
234
|
+
idx.eq("enterpriseId", enterpriseId).eq("userId", userId),
|
|
235
|
+
)
|
|
236
|
+
.first();
|
|
237
|
+
},
|
|
238
|
+
});
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Retrieve the SCIM identity that is mapped to a specific group.
|
|
242
|
+
*
|
|
243
|
+
* Looks up a SCIM identity by its `mappedGroupId` field. This is used when
|
|
244
|
+
* a SCIM group resource has been mapped to an internal group, and you need
|
|
245
|
+
* to find the corresponding SCIM identity record.
|
|
246
|
+
*
|
|
247
|
+
* @param args.mappedGroupId - The document ID of the internal group that a SCIM group is mapped to.
|
|
248
|
+
* @returns The SCIM identity document, or `null` if no mapping exists.
|
|
249
|
+
*
|
|
250
|
+
* @example
|
|
251
|
+
* ```ts
|
|
252
|
+
* const scimGroup = await ctx.runQuery(
|
|
253
|
+
* components.auth.enterprise.enterpriseScimIdentityGetByMappedGroup,
|
|
254
|
+
* { mappedGroupId: teamGroupId },
|
|
255
|
+
* );
|
|
256
|
+
* if (scimGroup) {
|
|
257
|
+
* console.log("SCIM external group ID:", scimGroup.externalId);
|
|
258
|
+
* }
|
|
259
|
+
* ```
|
|
260
|
+
*/
|
|
261
|
+
export const enterpriseScimIdentityGetByMappedGroup = query({
|
|
262
|
+
args: { mappedGroupId: v.id("Group") },
|
|
263
|
+
returns: v.union(vEnterpriseScimIdentityDoc, v.null()),
|
|
264
|
+
handler: async (ctx, { mappedGroupId }) => {
|
|
265
|
+
return await ctx.db
|
|
266
|
+
.query("EnterpriseScimIdentity")
|
|
267
|
+
.withIndex("mapped_group_id", (idx) =>
|
|
268
|
+
idx.eq("mappedGroupId", mappedGroupId),
|
|
269
|
+
)
|
|
270
|
+
.first();
|
|
271
|
+
},
|
|
272
|
+
});
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* List all SCIM identities belonging to a specific enterprise.
|
|
276
|
+
*
|
|
277
|
+
* Returns all `EnterpriseScimIdentity` documents for the given enterprise,
|
|
278
|
+
* including both user and group resource types. Useful for displaying all
|
|
279
|
+
* SCIM-provisioned resources or for bulk operations.
|
|
280
|
+
*
|
|
281
|
+
* @param args.enterpriseId - The ID of the enterprise whose SCIM identities to list.
|
|
282
|
+
* @returns An array of SCIM identity documents.
|
|
283
|
+
*
|
|
284
|
+
* @example
|
|
285
|
+
* ```ts
|
|
286
|
+
* const identities = await ctx.runQuery(
|
|
287
|
+
* components.auth.enterprise.enterpriseScimIdentityListByEnterprise,
|
|
288
|
+
* { enterpriseId },
|
|
289
|
+
* );
|
|
290
|
+
* const users = identities.filter((i) => i.resourceType === "user");
|
|
291
|
+
* const groups = identities.filter((i) => i.resourceType === "group");
|
|
292
|
+
* ```
|
|
293
|
+
*/
|
|
294
|
+
export const enterpriseScimIdentityListByEnterprise = query({
|
|
295
|
+
args: { enterpriseId: v.id("Enterprise") },
|
|
296
|
+
returns: v.array(vEnterpriseScimIdentityDoc),
|
|
297
|
+
handler: async (ctx, { enterpriseId }) => {
|
|
298
|
+
return await ctx.db
|
|
299
|
+
.query("EnterpriseScimIdentity")
|
|
300
|
+
.withIndex("enterprise_id", (idx) => idx.eq("enterpriseId", enterpriseId))
|
|
301
|
+
.collect();
|
|
302
|
+
},
|
|
303
|
+
});
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* Create or update a SCIM-provisioned identity record.
|
|
307
|
+
*
|
|
308
|
+
* If a SCIM identity with the same `(enterpriseId, resourceType, externalId)`
|
|
309
|
+
* already exists, its fields are patched in place. Otherwise a new record is
|
|
310
|
+
* created. This is the core upsert used by the SCIM provisioning handler to
|
|
311
|
+
* sync users and groups from external identity providers.
|
|
312
|
+
*
|
|
313
|
+
* @param args.enterpriseId - The ID of the enterprise the identity belongs to.
|
|
314
|
+
* @param args.groupId - The ID of the root group that owns the enterprise.
|
|
315
|
+
* @param args.resourceType - The SCIM resource type: `"user"` or `"group"`.
|
|
316
|
+
* @param args.externalId - The external identifier assigned by the identity provider.
|
|
317
|
+
* @param args.userId - An optional link to the internal user document (for user resources).
|
|
318
|
+
* @param args.mappedGroupId - An optional link to an internal group document (for group resources).
|
|
319
|
+
* @param args.lastProvisionedAt - An optional epoch timestamp (ms) of the last sync.
|
|
320
|
+
* @param args.active - An optional flag indicating whether the identity is active.
|
|
321
|
+
* @param args.raw - An optional raw SCIM payload stored for debugging or re-processing.
|
|
322
|
+
* @returns The ID of the created or updated `EnterpriseScimIdentity` document.
|
|
323
|
+
*
|
|
324
|
+
* @example
|
|
325
|
+
* ```ts
|
|
326
|
+
* const identityId = await ctx.runMutation(
|
|
327
|
+
* components.auth.enterprise.enterpriseScimIdentityUpsert,
|
|
328
|
+
* {
|
|
329
|
+
* enterpriseId,
|
|
330
|
+
* groupId: orgGroupId,
|
|
331
|
+
* resourceType: "user",
|
|
332
|
+
* externalId: "okta-user-abc123",
|
|
333
|
+
* userId,
|
|
334
|
+
* active: true,
|
|
335
|
+
* lastProvisionedAt: Date.now(),
|
|
336
|
+
* raw: { schemas: ["urn:ietf:params:scim:schemas:core:2.0:User"], userName: "jane@acme.com" },
|
|
337
|
+
* },
|
|
338
|
+
* );
|
|
339
|
+
* ```
|
|
340
|
+
*/
|
|
341
|
+
export const enterpriseScimIdentityUpsert = mutation({
|
|
342
|
+
args: {
|
|
343
|
+
enterpriseId: v.id("Enterprise"),
|
|
344
|
+
groupId: v.id("Group"),
|
|
345
|
+
resourceType: vScimResourceType,
|
|
346
|
+
externalId: v.string(),
|
|
347
|
+
userId: v.optional(v.id("User")),
|
|
348
|
+
mappedGroupId: v.optional(v.id("Group")),
|
|
349
|
+
lastProvisionedAt: v.optional(v.number()),
|
|
350
|
+
active: v.optional(v.boolean()),
|
|
351
|
+
raw: v.optional(v.any()),
|
|
352
|
+
},
|
|
353
|
+
returns: v.id("EnterpriseScimIdentity"),
|
|
354
|
+
handler: async (ctx, args) => {
|
|
355
|
+
const existing = await ctx.db
|
|
356
|
+
.query("EnterpriseScimIdentity")
|
|
357
|
+
.withIndex("enterprise_id_resource_type_external_id", (idx) =>
|
|
358
|
+
idx
|
|
359
|
+
.eq("enterpriseId", args.enterpriseId)
|
|
360
|
+
.eq("resourceType", args.resourceType)
|
|
361
|
+
.eq("externalId", args.externalId),
|
|
362
|
+
)
|
|
363
|
+
.first();
|
|
364
|
+
if (existing) {
|
|
365
|
+
await ctx.db.patch(existing._id, args);
|
|
366
|
+
return existing._id;
|
|
367
|
+
}
|
|
368
|
+
return await ctx.db.insert("EnterpriseScimIdentity", args);
|
|
369
|
+
},
|
|
370
|
+
});
|
|
371
|
+
|
|
372
|
+
/**
|
|
373
|
+
* Permanently delete a SCIM identity record.
|
|
374
|
+
*
|
|
375
|
+
* Removes the `EnterpriseScimIdentity` document. This is typically called
|
|
376
|
+
* when a SCIM DELETE request is received for a user or group resource.
|
|
377
|
+
*
|
|
378
|
+
* @param args.identityId - The document ID of the SCIM identity to delete.
|
|
379
|
+
* @returns `null` on success.
|
|
380
|
+
*
|
|
381
|
+
* @example
|
|
382
|
+
* ```ts
|
|
383
|
+
* await ctx.runMutation(
|
|
384
|
+
* components.auth.enterprise.enterpriseScimIdentityDelete,
|
|
385
|
+
* { identityId: scimIdentity._id },
|
|
386
|
+
* );
|
|
387
|
+
* ```
|
|
388
|
+
*/
|
|
389
|
+
export const enterpriseScimIdentityDelete = mutation({
|
|
390
|
+
args: { identityId: v.id("EnterpriseScimIdentity") },
|
|
391
|
+
returns: v.null(),
|
|
392
|
+
handler: async (ctx, { identityId }) => {
|
|
393
|
+
await ctx.db.delete(identityId);
|
|
394
|
+
return null;
|
|
395
|
+
},
|
|
396
|
+
});
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { v } from "convex/values";
|
|
2
|
+
import { mutation, query } from "../../functions";
|
|
3
|
+
import { vEnterpriseSecretDoc, vEnterpriseSecretKind } from "../../model";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Create or update an encrypted secret for an enterprise.
|
|
7
|
+
*
|
|
8
|
+
* Stores a secret identified by the combination of `(enterpriseId, kind)`.
|
|
9
|
+
* If a secret of the same kind already exists for the enterprise, it is
|
|
10
|
+
* updated with the new ciphertext and timestamp. Otherwise a new secret
|
|
11
|
+
* document is created. Only one secret per kind is allowed per enterprise.
|
|
12
|
+
*
|
|
13
|
+
* @param args.enterpriseId - The ID of the enterprise the secret belongs to.
|
|
14
|
+
* @param args.groupId - The ID of the root group that owns the enterprise.
|
|
15
|
+
* @param args.kind - The type of secret being stored (e.g. `"oidc_client_secret"`).
|
|
16
|
+
* @param args.ciphertext - The encrypted secret value.
|
|
17
|
+
* @param args.updatedAt - Epoch timestamp (ms) when the secret was last updated.
|
|
18
|
+
* @returns The ID of the created or updated `EnterpriseSecret` document.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```ts
|
|
22
|
+
* const secretId = await ctx.runMutation(
|
|
23
|
+
* components.auth.enterprise.enterpriseSecretUpsert,
|
|
24
|
+
* {
|
|
25
|
+
* enterpriseId,
|
|
26
|
+
* groupId: orgGroupId,
|
|
27
|
+
* kind: "oidc_client_secret",
|
|
28
|
+
* ciphertext: "encrypted:aes256:...",
|
|
29
|
+
* updatedAt: Date.now(),
|
|
30
|
+
* },
|
|
31
|
+
* );
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export const enterpriseSecretUpsert = mutation({
|
|
35
|
+
args: {
|
|
36
|
+
enterpriseId: v.id("Enterprise"),
|
|
37
|
+
groupId: v.id("Group"),
|
|
38
|
+
kind: vEnterpriseSecretKind,
|
|
39
|
+
ciphertext: v.string(),
|
|
40
|
+
updatedAt: v.number(),
|
|
41
|
+
},
|
|
42
|
+
returns: v.id("EnterpriseSecret"),
|
|
43
|
+
handler: async (ctx, args) => {
|
|
44
|
+
const existing = await ctx.db
|
|
45
|
+
.query("EnterpriseSecret")
|
|
46
|
+
.withIndex("enterprise_id_kind", (idx) =>
|
|
47
|
+
idx.eq("enterpriseId", args.enterpriseId).eq("kind", args.kind),
|
|
48
|
+
)
|
|
49
|
+
.first();
|
|
50
|
+
if (existing) {
|
|
51
|
+
await ctx.db.patch(existing._id, args);
|
|
52
|
+
return existing._id;
|
|
53
|
+
}
|
|
54
|
+
return await ctx.db.insert("EnterpriseSecret", args);
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Retrieve an encrypted secret for an enterprise by kind.
|
|
60
|
+
*
|
|
61
|
+
* Looks up the secret using the composite `(enterpriseId, kind)` index.
|
|
62
|
+
* Returns the full document including the ciphertext, or `null` if no secret
|
|
63
|
+
* of that kind has been stored for the enterprise.
|
|
64
|
+
*
|
|
65
|
+
* @param args.enterpriseId - The ID of the enterprise whose secret to retrieve.
|
|
66
|
+
* @param args.kind - The type of secret to look up (e.g. `"oidc_client_secret"`).
|
|
67
|
+
* @returns The enterprise secret document, or `null` if not found.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```ts
|
|
71
|
+
* const secret = await ctx.runQuery(
|
|
72
|
+
* components.auth.enterprise.enterpriseSecretGet,
|
|
73
|
+
* { enterpriseId, kind: "oidc_client_secret" },
|
|
74
|
+
* );
|
|
75
|
+
* if (secret) {
|
|
76
|
+
* const plaintext = decrypt(secret.ciphertext);
|
|
77
|
+
* }
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
export const enterpriseSecretGet = query({
|
|
81
|
+
args: {
|
|
82
|
+
enterpriseId: v.id("Enterprise"),
|
|
83
|
+
kind: vEnterpriseSecretKind,
|
|
84
|
+
},
|
|
85
|
+
returns: v.union(vEnterpriseSecretDoc, v.null()),
|
|
86
|
+
handler: async (ctx, { enterpriseId, kind }) => {
|
|
87
|
+
return await ctx.db
|
|
88
|
+
.query("EnterpriseSecret")
|
|
89
|
+
.withIndex("enterprise_id_kind", (idx) =>
|
|
90
|
+
idx.eq("enterpriseId", enterpriseId).eq("kind", kind),
|
|
91
|
+
)
|
|
92
|
+
.first();
|
|
93
|
+
},
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Delete an encrypted secret for an enterprise by kind.
|
|
98
|
+
*
|
|
99
|
+
* Removes the secret document matching the `(enterpriseId, kind)` pair.
|
|
100
|
+
* If no such secret exists, this is a no-op.
|
|
101
|
+
*
|
|
102
|
+
* @param args.enterpriseId - The ID of the enterprise whose secret to delete.
|
|
103
|
+
* @param args.kind - The type of secret to remove (e.g. `"oidc_client_secret"`).
|
|
104
|
+
* @returns `null` on success.
|
|
105
|
+
*
|
|
106
|
+
* @example
|
|
107
|
+
* ```ts
|
|
108
|
+
* await ctx.runMutation(
|
|
109
|
+
* components.auth.enterprise.enterpriseSecretDelete,
|
|
110
|
+
* { enterpriseId, kind: "oidc_client_secret" },
|
|
111
|
+
* );
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
export const enterpriseSecretDelete = mutation({
|
|
115
|
+
args: {
|
|
116
|
+
enterpriseId: v.id("Enterprise"),
|
|
117
|
+
kind: vEnterpriseSecretKind,
|
|
118
|
+
},
|
|
119
|
+
returns: v.null(),
|
|
120
|
+
handler: async (ctx, { enterpriseId, kind }) => {
|
|
121
|
+
const existing = await ctx.db
|
|
122
|
+
.query("EnterpriseSecret")
|
|
123
|
+
.withIndex("enterprise_id_kind", (idx) =>
|
|
124
|
+
idx.eq("enterpriseId", enterpriseId).eq("kind", kind),
|
|
125
|
+
)
|
|
126
|
+
.first();
|
|
127
|
+
if (existing) {
|
|
128
|
+
await ctx.db.delete(existing._id);
|
|
129
|
+
}
|
|
130
|
+
return null;
|
|
131
|
+
},
|
|
132
|
+
});
|