masks-server 0.7.0
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.
- checksums.yaml +7 -0
- data/app/controllers/concerns/masks/server/client_authentication.rb +65 -0
- data/app/controllers/concerns/masks/server/holds_login.rb +49 -0
- data/app/controllers/concerns/masks/server/manage_endpoint.rb +34 -0
- data/app/controllers/concerns/masks/server/rack_oauth2_endpoint.rb +45 -0
- data/app/controllers/concerns/masks/server/resource_token.rb +145 -0
- data/app/controllers/concerns/masks/server/saml_farewells.rb +53 -0
- data/app/controllers/concerns/masks/server/scim_endpoint.rb +100 -0
- data/app/controllers/concerns/masks/server/serves_pictures.rb +27 -0
- data/app/controllers/concerns/masks/server/token_presented.rb +47 -0
- data/app/controllers/masks/server/account_controller.rb +73 -0
- data/app/controllers/masks/server/account_exports_controller.rb +25 -0
- data/app/controllers/masks/server/addresses_controller.rb +78 -0
- data/app/controllers/masks/server/application_controller.rb +322 -0
- data/app/controllers/masks/server/apps_controller.rb +37 -0
- data/app/controllers/masks/server/authenticator_apps_controller.rb +53 -0
- data/app/controllers/masks/server/authorize_controller.rb +197 -0
- data/app/controllers/masks/server/avatars_controller.rb +118 -0
- data/app/controllers/masks/server/backup_codes_controller.rb +29 -0
- data/app/controllers/masks/server/client_logos_controller.rb +22 -0
- data/app/controllers/masks/server/code_factors_controller.rb +38 -0
- data/app/controllers/masks/server/connections_controller.rb +43 -0
- data/app/controllers/masks/server/delegations_controller.rb +24 -0
- data/app/controllers/masks/server/device_authorizations_controller.rb +74 -0
- data/app/controllers/masks/server/device_verifications_controller.rb +78 -0
- data/app/controllers/masks/server/devices_controller.rb +50 -0
- data/app/controllers/masks/server/discovery_controller.rb +18 -0
- data/app/controllers/masks/server/forward_auth_controller.rb +90 -0
- data/app/controllers/masks/server/handshakes_controller.rb +178 -0
- data/app/controllers/masks/server/introspections_controller.rb +51 -0
- data/app/controllers/masks/server/links_controller.rb +41 -0
- data/app/controllers/masks/server/logins_controller.rb +239 -0
- data/app/controllers/masks/server/manage/exports_controller.rb +22 -0
- data/app/controllers/masks/server/manage/graphql_controller.rb +70 -0
- data/app/controllers/masks/server/manage_controller.rb +19 -0
- data/app/controllers/masks/server/notifications_controller.rb +23 -0
- data/app/controllers/masks/server/organization_members_controller.rb +118 -0
- data/app/controllers/masks/server/passkeys_controller.rb +80 -0
- data/app/controllers/masks/server/passwords_controller.rb +67 -0
- data/app/controllers/masks/server/profiles_controller.rb +34 -0
- data/app/controllers/masks/server/provider_metadata_controller.rb +13 -0
- data/app/controllers/masks/server/pushed_authorizations_controller.rb +69 -0
- data/app/controllers/masks/server/received_signals_controller.rb +19 -0
- data/app/controllers/masks/server/registrations_controller.rb +137 -0
- data/app/controllers/masks/server/revocations_controller.rb +33 -0
- data/app/controllers/masks/server/saml_controller.rb +195 -0
- data/app/controllers/masks/server/scim/groups_controller.rb +157 -0
- data/app/controllers/masks/server/scim/metadata_controller.rb +123 -0
- data/app/controllers/masks/server/scim/users_controller.rb +128 -0
- data/app/controllers/masks/server/sessions_controller.rb +60 -0
- data/app/controllers/masks/server/sign_in_approvals_controller.rb +48 -0
- data/app/controllers/masks/server/signal_streams_controller.rb +162 -0
- data/app/controllers/masks/server/tenant_logos_controller.rb +21 -0
- data/app/controllers/masks/server/themes_controller.rb +21 -0
- data/app/controllers/masks/server/tokens_controller.rb +360 -0
- data/app/controllers/masks/server/userinfo_controller.rb +30 -0
- data/app/controllers/masks/server/verifications_controller.rb +32 -0
- data/app/graphql/masks/server/manage/mutations/activate_signing_key.rb +26 -0
- data/app/graphql/masks/server/manage/mutations/add_app.rb +64 -0
- data/app/graphql/masks/server/manage/mutations/add_group_member.rb +25 -0
- data/app/graphql/masks/server/manage/mutations/add_member.rb +36 -0
- data/app/graphql/masks/server/manage/mutations/approve_actor.rb +25 -0
- data/app/graphql/masks/server/manage/mutations/archive_client.rb +30 -0
- data/app/graphql/masks/server/manage/mutations/archive_event_stream.rb +28 -0
- data/app/graphql/masks/server/manage/mutations/archive_organization.rb +27 -0
- data/app/graphql/masks/server/manage/mutations/archive_provider.rb +28 -0
- data/app/graphql/masks/server/manage/mutations/archive_sender.rb +28 -0
- data/app/graphql/masks/server/manage/mutations/archive_sign_in_policy.rb +31 -0
- data/app/graphql/masks/server/manage/mutations/base_mutation.rb +139 -0
- data/app/graphql/masks/server/manage/mutations/block_device.rb +24 -0
- data/app/graphql/masks/server/manage/mutations/block_devices.rb +62 -0
- data/app/graphql/masks/server/manage/mutations/check_domain.rb +30 -0
- data/app/graphql/masks/server/manage/mutations/claim_domain.rb +26 -0
- data/app/graphql/masks/server/manage/mutations/create_actor.rb +50 -0
- data/app/graphql/masks/server/manage/mutations/create_client.rb +53 -0
- data/app/graphql/masks/server/manage/mutations/create_event_stream.rb +33 -0
- data/app/graphql/masks/server/manage/mutations/create_group.rb +25 -0
- data/app/graphql/masks/server/manage/mutations/create_organization.rb +34 -0
- data/app/graphql/masks/server/manage/mutations/create_provider.rb +117 -0
- data/app/graphql/masks/server/manage/mutations/create_saml_application.rb +53 -0
- data/app/graphql/masks/server/manage/mutations/create_sender.rb +35 -0
- data/app/graphql/masks/server/manage/mutations/create_sign_in_policy.rb +24 -0
- data/app/graphql/masks/server/manage/mutations/delete_actor.rb +31 -0
- data/app/graphql/masks/server/manage/mutations/delete_group.rb +24 -0
- data/app/graphql/masks/server/manage/mutations/disable_authenticator.rb +32 -0
- data/app/graphql/masks/server/manage/mutations/disable_code_factor.rb +27 -0
- data/app/graphql/masks/server/manage/mutations/discard_signing_key.rb +26 -0
- data/app/graphql/masks/server/manage/mutations/discover_provider.rb +39 -0
- data/app/graphql/masks/server/manage/mutations/dismiss_recovery.rb +25 -0
- data/app/graphql/masks/server/manage/mutations/domain_mutation.rb +24 -0
- data/app/graphql/masks/server/manage/mutations/export_events.rb +41 -0
- data/app/graphql/masks/server/manage/mutations/generate_backup_codes.rb +31 -0
- data/app/graphql/masks/server/manage/mutations/invite_actors.rb +46 -0
- data/app/graphql/masks/server/manage/mutations/issue_ldap_credential.rb +28 -0
- data/app/graphql/masks/server/manage/mutations/issue_provisioning_token.rb +33 -0
- data/app/graphql/masks/server/manage/mutations/organization_mutation.rb +26 -0
- data/app/graphql/masks/server/manage/mutations/read_saml_application_metadata.rb +39 -0
- data/app/graphql/masks/server/manage/mutations/read_saml_metadata.rb +43 -0
- data/app/graphql/masks/server/manage/mutations/register_provider.rb +30 -0
- data/app/graphql/masks/server/manage/mutations/release_domain.rb +25 -0
- data/app/graphql/masks/server/manage/mutations/release_namespace.rb +28 -0
- data/app/graphql/masks/server/manage/mutations/remove_avatar.rb +27 -0
- data/app/graphql/masks/server/manage/mutations/remove_group_member.rb +25 -0
- data/app/graphql/masks/server/manage/mutations/remove_member.rb +26 -0
- data/app/graphql/masks/server/manage/mutations/remove_tenant_logo.rb +19 -0
- data/app/graphql/masks/server/manage/mutations/resend_invitation.rb +25 -0
- data/app/graphql/masks/server/manage/mutations/resend_organization_invitation.rb +31 -0
- data/app/graphql/masks/server/manage/mutations/reset_password.rb +26 -0
- data/app/graphql/masks/server/manage/mutations/reset_second_factors.rb +23 -0
- data/app/graphql/masks/server/manage/mutations/restore_actor.rb +26 -0
- data/app/graphql/masks/server/manage/mutations/restore_client.rb +45 -0
- data/app/graphql/masks/server/manage/mutations/restore_event_stream.rb +28 -0
- data/app/graphql/masks/server/manage/mutations/restore_organization.rb +27 -0
- data/app/graphql/masks/server/manage/mutations/restore_provider.rb +28 -0
- data/app/graphql/masks/server/manage/mutations/restore_sender.rb +28 -0
- data/app/graphql/masks/server/manage/mutations/restore_sign_in_policy.rb +28 -0
- data/app/graphql/masks/server/manage/mutations/revoke_connection.rb +29 -0
- data/app/graphql/masks/server/manage/mutations/revoke_consent.rb +36 -0
- data/app/graphql/masks/server/manage/mutations/revoke_delegation.rb +24 -0
- data/app/graphql/masks/server/manage/mutations/revoke_ldap_credential.rb +26 -0
- data/app/graphql/masks/server/manage/mutations/revoke_passkey.rb +28 -0
- data/app/graphql/masks/server/manage/mutations/revoke_provisioning_token.rb +24 -0
- data/app/graphql/masks/server/manage/mutations/revoke_session.rb +25 -0
- data/app/graphql/masks/server/manage/mutations/revoke_token.rb +34 -0
- data/app/graphql/masks/server/manage/mutations/rotate_client_secret.rb +32 -0
- data/app/graphql/masks/server/manage/mutations/rotate_event_stream_secret.rb +28 -0
- data/app/graphql/masks/server/manage/mutations/rotate_signing_key.rb +21 -0
- data/app/graphql/masks/server/manage/mutations/serve_domain.rb +34 -0
- data/app/graphql/masks/server/manage/mutations/set_actor_scopes.rb +33 -0
- data/app/graphql/masks/server/manage/mutations/set_member_role.rb +26 -0
- data/app/graphql/masks/server/manage/mutations/set_provider_organization.rb +49 -0
- data/app/graphql/masks/server/manage/mutations/sign_in_policy_mutation.rb +57 -0
- data/app/graphql/masks/server/manage/mutations/sign_out_actor.rb +24 -0
- data/app/graphql/masks/server/manage/mutations/sign_out_device.rb +24 -0
- data/app/graphql/masks/server/manage/mutations/stage_signing_key.rb +27 -0
- data/app/graphql/masks/server/manage/mutations/suspend_actor.rb +27 -0
- data/app/graphql/masks/server/manage/mutations/test_event_stream.rb +33 -0
- data/app/graphql/masks/server/manage/mutations/test_sender.rb +31 -0
- data/app/graphql/masks/server/manage/mutations/unblock_device.rb +24 -0
- data/app/graphql/masks/server/manage/mutations/unblock_devices.rb +31 -0
- data/app/graphql/masks/server/manage/mutations/update_actor.rb +49 -0
- data/app/graphql/masks/server/manage/mutations/update_client.rb +105 -0
- data/app/graphql/masks/server/manage/mutations/update_domain_claim.rb +26 -0
- data/app/graphql/masks/server/manage/mutations/update_event_stream.rb +37 -0
- data/app/graphql/masks/server/manage/mutations/update_group.rb +24 -0
- data/app/graphql/masks/server/manage/mutations/update_mail_template.rb +37 -0
- data/app/graphql/masks/server/manage/mutations/update_organization.rb +34 -0
- data/app/graphql/masks/server/manage/mutations/update_provider.rb +87 -0
- data/app/graphql/masks/server/manage/mutations/update_sender.rb +35 -0
- data/app/graphql/masks/server/manage/mutations/update_sign_in_policy.rb +28 -0
- data/app/graphql/masks/server/manage/mutations/update_tenant.rb +122 -0
- data/app/graphql/masks/server/manage/mutations/upload_avatar.rb +27 -0
- data/app/graphql/masks/server/manage/mutations/upload_tenant_logo.rb +23 -0
- data/app/graphql/masks/server/manage/mutations/verify_email.rb +26 -0
- data/app/graphql/masks/server/manage/sources/membership_counts.rb +29 -0
- data/app/graphql/masks/server/manage/types/activity_day_type.rb +12 -0
- data/app/graphql/masks/server/manage/types/actor_type.rb +151 -0
- data/app/graphql/masks/server/manage/types/app_preset_type.rb +18 -0
- data/app/graphql/masks/server/manage/types/app_setting_type.rb +14 -0
- data/app/graphql/masks/server/manage/types/avatars_type.rb +13 -0
- data/app/graphql/masks/server/manage/types/base_object.rb +10 -0
- data/app/graphql/masks/server/manage/types/client_type.rb +121 -0
- data/app/graphql/masks/server/manage/types/connection_type.rb +37 -0
- data/app/graphql/masks/server/manage/types/consent_type.rb +30 -0
- data/app/graphql/masks/server/manage/types/delegation_type.rb +32 -0
- data/app/graphql/masks/server/manage/types/device_type.rb +35 -0
- data/app/graphql/masks/server/manage/types/domain_claim_type.rb +17 -0
- data/app/graphql/masks/server/manage/types/event_action_type.rb +20 -0
- data/app/graphql/masks/server/manage/types/event_stream_type.rb +21 -0
- data/app/graphql/masks/server/manage/types/event_type.rb +27 -0
- data/app/graphql/masks/server/manage/types/group_type.rb +25 -0
- data/app/graphql/masks/server/manage/types/invitation_outcome_type.rb +18 -0
- data/app/graphql/masks/server/manage/types/ldap_credential_type.rb +20 -0
- data/app/graphql/masks/server/manage/types/mail_preview_type.rb +19 -0
- data/app/graphql/masks/server/manage/types/mail_template_type.rb +20 -0
- data/app/graphql/masks/server/manage/types/membership_type.rb +24 -0
- data/app/graphql/masks/server/manage/types/mutation_type.rb +103 -0
- data/app/graphql/masks/server/manage/types/namespace_type.rb +26 -0
- data/app/graphql/masks/server/manage/types/organization_type.rb +70 -0
- data/app/graphql/masks/server/manage/types/passkey_type.rb +22 -0
- data/app/graphql/masks/server/manage/types/provider_preset_type.rb +21 -0
- data/app/graphql/masks/server/manage/types/provider_type.rb +108 -0
- data/app/graphql/masks/server/manage/types/provisioning_token_type.rb +18 -0
- data/app/graphql/masks/server/manage/types/query_type.rb +536 -0
- data/app/graphql/masks/server/manage/types/sender_field_type.rb +18 -0
- data/app/graphql/masks/server/manage/types/sender_service_type.rb +14 -0
- data/app/graphql/masks/server/manage/types/sender_type.rb +29 -0
- data/app/graphql/masks/server/manage/types/session_type.rb +19 -0
- data/app/graphql/masks/server/manage/types/sign_in_policy_type.rb +54 -0
- data/app/graphql/masks/server/manage/types/signing_key_type.rb +23 -0
- data/app/graphql/masks/server/manage/types/tally_type.rb +14 -0
- data/app/graphql/masks/server/manage/types/tenant_type.rb +64 -0
- data/app/graphql/masks/server/manage/types/token_type.rb +42 -0
- data/app/graphql/masks/server/manage/types/upload_type.rb +21 -0
- data/app/graphql/masks/server/manage_schema.rb +23 -0
- data/app/helpers/masks/server/account_helper.rb +59 -0
- data/app/helpers/masks/server/application_helper.rb +39 -0
- data/app/helpers/masks/server/avatars_helper.rb +20 -0
- data/app/helpers/masks/server/events_helper.rb +19 -0
- data/app/helpers/masks/server/scopes_helper.rb +15 -0
- data/app/jobs/masks/server/application_job.rb +7 -0
- data/app/jobs/masks/server/backchannel_logout_job.rb +38 -0
- data/app/jobs/masks/server/check_domain_claims_job.rb +31 -0
- data/app/jobs/masks/server/cleanup_job.rb +53 -0
- data/app/jobs/masks/server/client_logo_job.rb +20 -0
- data/app/jobs/masks/server/event_stream_job.rb +40 -0
- data/app/jobs/masks/server/idle_accounts_job.rb +14 -0
- data/app/jobs/masks/server/mail_delivery_job.rb +7 -0
- data/app/jobs/masks/server/notification_job.rb +17 -0
- data/app/jobs/masks/server/refresh_authenticators_job.rb +14 -0
- data/app/jobs/masks/server/refresh_saml_metadata_job.rb +24 -0
- data/app/jobs/masks/server/rotate_signing_keys_job.rb +37 -0
- data/app/jobs/masks/server/saml_logout_job.rb +38 -0
- data/app/jobs/masks/server/signal_job.rb +45 -0
- data/app/jobs/masks/server/text_job.rb +17 -0
- data/app/ldap/masks/server/ldap/ber.rb +202 -0
- data/app/ldap/masks/server/ldap/connection.rb +149 -0
- data/app/ldap/masks/server/ldap/directory.rb +175 -0
- data/app/ldap/masks/server/ldap/dn.rb +185 -0
- data/app/ldap/masks/server/ldap/entry.rb +30 -0
- data/app/ldap/masks/server/ldap/filter.rb +239 -0
- data/app/ldap/masks/server/ldap/gate.rb +169 -0
- data/app/ldap/masks/server/ldap/listener.rb +113 -0
- data/app/ldap/masks/server/ldap/protocol.rb +174 -0
- data/app/logins/masks/server/login_state.rb +153 -0
- data/app/logins/masks/server/login_states/app_access.rb +18 -0
- data/app/logins/masks/server/login_states/backup_code.rb +69 -0
- data/app/logins/masks/server/login_states/code_factor.rb +100 -0
- data/app/logins/masks/server/login_states/configure.rb +43 -0
- data/app/logins/masks/server/login_states/confirmation.rb +193 -0
- data/app/logins/masks/server/login_states/consent.rb +90 -0
- data/app/logins/masks/server/login_states/delegation.rb +172 -0
- data/app/logins/masks/server/login_states/email_code.rb +108 -0
- data/app/logins/masks/server/login_states/enrolment.rb +268 -0
- data/app/logins/masks/server/login_states/first_factor.rb +17 -0
- data/app/logins/masks/server/login_states/identifier.rb +48 -0
- data/app/logins/masks/server/login_states/inbox.rb +159 -0
- data/app/logins/masks/server/login_states/invitation.rb +80 -0
- data/app/logins/masks/server/login_states/one_time_password.rb +30 -0
- data/app/logins/masks/server/login_states/organization_choice.rb +108 -0
- data/app/logins/masks/server/login_states/passkey.rb +113 -0
- data/app/logins/masks/server/login_states/password.rb +40 -0
- data/app/logins/masks/server/login_states/password_reset.rb +88 -0
- data/app/logins/masks/server/login_states/provider.rb +181 -0
- data/app/logins/masks/server/login_states/risk_check.rb +79 -0
- data/app/logins/masks/server/login_states/second_factor.rb +55 -0
- data/app/logins/masks/server/login_states/signup.rb +351 -0
- data/app/logins/masks/server/login_states/suspension.rb +18 -0
- data/app/logins/masks/server/login_states/trusted_device.rb +84 -0
- data/app/mailers/masks/server/actor_mailer.rb +184 -0
- data/app/mailers/masks/server/application_mailer.rb +66 -0
- data/app/mailers/masks/server/sender_mailer.rb +13 -0
- data/app/models/concerns/masks/server/archivable.rb +22 -0
- data/app/models/concerns/masks/server/carries_authorization.rb +75 -0
- data/app/models/concerns/masks/server/mailed_link.rb +47 -0
- data/app/models/concerns/masks/server/paged.rb +18 -0
- data/app/models/concerns/masks/server/tenant_scoped.rb +13 -0
- data/app/models/masks/server/access_token.rb +69 -0
- data/app/models/masks/server/account_export.rb +144 -0
- data/app/models/masks/server/actor.rb +523 -0
- data/app/models/masks/server/addresses.rb +65 -0
- data/app/models/masks/server/app_preset.rb +251 -0
- data/app/models/masks/server/application_record.rb +17 -0
- data/app/models/masks/server/apps.rb +56 -0
- data/app/models/masks/server/authenticator.rb +57 -0
- data/app/models/masks/server/authenticator_app.rb +51 -0
- data/app/models/masks/server/authenticators.rb +78 -0
- data/app/models/masks/server/authorization.rb +200 -0
- data/app/models/masks/server/authorization_code.rb +32 -0
- data/app/models/masks/server/authorization_details.rb +235 -0
- data/app/models/masks/server/authorize_request.rb +57 -0
- data/app/models/masks/server/avatar.rb +52 -0
- data/app/models/masks/server/avatars.rb +99 -0
- data/app/models/masks/server/backchannel_logout.rb +67 -0
- data/app/models/masks/server/breached_passwords.rb +29 -0
- data/app/models/masks/server/client.rb +604 -0
- data/app/models/masks/server/client_assertion.rb +59 -0
- data/app/models/masks/server/client_keys.rb +130 -0
- data/app/models/masks/server/client_logo.rb +55 -0
- data/app/models/masks/server/client_metadata_document.rb +178 -0
- data/app/models/masks/server/code_factors.rb +103 -0
- data/app/models/masks/server/confirmation_code.rb +110 -0
- data/app/models/masks/server/confirmations.rb +51 -0
- data/app/models/masks/server/connection.rb +140 -0
- data/app/models/masks/server/consent.rb +70 -0
- data/app/models/masks/server/current.rb +8 -0
- data/app/models/masks/server/declared.rb +127 -0
- data/app/models/masks/server/delegation.rb +94 -0
- data/app/models/masks/server/device.rb +145 -0
- data/app/models/masks/server/device_factor.rb +39 -0
- data/app/models/masks/server/device_grant.rb +93 -0
- data/app/models/masks/server/domain_claim.rb +85 -0
- data/app/models/masks/server/email_verification.rb +22 -0
- data/app/models/masks/server/event.rb +251 -0
- data/app/models/masks/server/event_export.rb +73 -0
- data/app/models/masks/server/event_stream.rb +131 -0
- data/app/models/masks/server/exchange.rb +240 -0
- data/app/models/masks/server/federation/mcp.rb +29 -0
- data/app/models/masks/server/federation/oauth2.rb +27 -0
- data/app/models/masks/server/federation/oidc.rb +146 -0
- data/app/models/masks/server/federation/protocol.rb +114 -0
- data/app/models/masks/server/federation/saml.rb +120 -0
- data/app/models/masks/server/forward_code.rb +13 -0
- data/app/models/masks/server/forward_session.rb +14 -0
- data/app/models/masks/server/forwarded.rb +40 -0
- data/app/models/masks/server/group.rb +31 -0
- data/app/models/masks/server/group_member.rb +10 -0
- data/app/models/masks/server/handshake.rb +172 -0
- data/app/models/masks/server/help_requests.rb +50 -0
- data/app/models/masks/server/identicon.rb +71 -0
- data/app/models/masks/server/idle_accounts.rb +96 -0
- data/app/models/masks/server/initial_access_token.rb +14 -0
- data/app/models/masks/server/initials.rb +75 -0
- data/app/models/masks/server/invitation.rb +29 -0
- data/app/models/masks/server/invitations.rb +24 -0
- data/app/models/masks/server/issuer.rb +205 -0
- data/app/models/masks/server/journey.rb +97 -0
- data/app/models/masks/server/ldap_credential.rb +51 -0
- data/app/models/masks/server/linking.rb +81 -0
- data/app/models/masks/server/locales.rb +55 -0
- data/app/models/masks/server/localized.rb +42 -0
- data/app/models/masks/server/locked_out.rb +30 -0
- data/app/models/masks/server/login.rb +469 -0
- data/app/models/masks/server/logout.rb +99 -0
- data/app/models/masks/server/mail_previews.rb +90 -0
- data/app/models/masks/server/mail_template.rb +77 -0
- data/app/models/masks/server/manage_roles.rb +48 -0
- data/app/models/masks/server/master_key.rb +44 -0
- data/app/models/masks/server/members.rb +166 -0
- data/app/models/masks/server/membership.rb +105 -0
- data/app/models/masks/server/namespace.rb +85 -0
- data/app/models/masks/server/notifications.rb +156 -0
- data/app/models/masks/server/organization.rb +74 -0
- data/app/models/masks/server/outbound.rb +165 -0
- data/app/models/masks/server/passkey.rb +83 -0
- data/app/models/masks/server/password_reset.rb +30 -0
- data/app/models/masks/server/passwords.rb +21 -0
- data/app/models/masks/server/pending_handshake.rb +36 -0
- data/app/models/masks/server/pending_login.rb +23 -0
- data/app/models/masks/server/pending_request.rb +69 -0
- data/app/models/masks/server/pictures.rb +84 -0
- data/app/models/masks/server/presented_token.rb +106 -0
- data/app/models/masks/server/proof.rb +170 -0
- data/app/models/masks/server/proof_of_work.rb +43 -0
- data/app/models/masks/server/provider.rb +576 -0
- data/app/models/masks/server/provider_domains.rb +9 -0
- data/app/models/masks/server/provider_preset.rb +234 -0
- data/app/models/masks/server/provisioning_token.rb +35 -0
- data/app/models/masks/server/pushed_request.rb +39 -0
- data/app/models/masks/server/received_signal.rb +131 -0
- data/app/models/masks/server/recoveries.rb +40 -0
- data/app/models/masks/server/refresh_token.rb +19 -0
- data/app/models/masks/server/relying_party.rb +76 -0
- data/app/models/masks/server/replay.rb +11 -0
- data/app/models/masks/server/request_object.rb +84 -0
- data/app/models/masks/server/resource_metadata.rb +70 -0
- data/app/models/masks/server/risk.rb +110 -0
- data/app/models/masks/server/saml_identity/farewells.rb +51 -0
- data/app/models/masks/server/saml_identity/logout_reply.rb +31 -0
- data/app/models/masks/server/saml_identity/logout_request.rb +51 -0
- data/app/models/masks/server/saml_identity/message.rb +171 -0
- data/app/models/masks/server/saml_identity/metadata.rb +43 -0
- data/app/models/masks/server/saml_identity/request.rb +57 -0
- data/app/models/masks/server/saml_identity/response.rb +137 -0
- data/app/models/masks/server/saml_identity/sign_off.rb +46 -0
- data/app/models/masks/server/saml_identity.rb +87 -0
- data/app/models/masks/server/saml_participation.rb +35 -0
- data/app/models/masks/server/scim/directory.rb +57 -0
- data/app/models/masks/server/scim/filter.rb +124 -0
- data/app/models/masks/server/scim/group.rb +142 -0
- data/app/models/masks/server/scim/organization_directory.rb +70 -0
- data/app/models/masks/server/scim/user.rb +149 -0
- data/app/models/masks/server/scim.rb +41 -0
- data/app/models/masks/server/scopes.rb +128 -0
- data/app/models/masks/server/sector_identifier.rb +50 -0
- data/app/models/masks/server/sender.rb +173 -0
- data/app/models/masks/server/senders/click_send.rb +21 -0
- data/app/models/masks/server/senders/infobip.rb +34 -0
- data/app/models/masks/server/senders/mail.rb +36 -0
- data/app/models/masks/server/senders/message_bird.rb +20 -0
- data/app/models/masks/server/senders/plivo.rb +19 -0
- data/app/models/masks/server/senders/sinch.rb +22 -0
- data/app/models/masks/server/senders/sms.rb +76 -0
- data/app/models/masks/server/senders/sms_log.rb +19 -0
- data/app/models/masks/server/senders/smtp.rb +60 -0
- data/app/models/masks/server/senders/sns.rb +72 -0
- data/app/models/masks/server/senders/telnyx.rb +18 -0
- data/app/models/masks/server/senders/twilio.rb +21 -0
- data/app/models/masks/server/senders/vonage.rb +25 -0
- data/app/models/masks/server/session.rb +134 -0
- data/app/models/masks/server/sign_in_approval.rb +70 -0
- data/app/models/masks/server/sign_in_policy.rb +202 -0
- data/app/models/masks/server/signal_stream.rb +147 -0
- data/app/models/masks/server/signals.rb +72 -0
- data/app/models/masks/server/signing_key.rb +112 -0
- data/app/models/masks/server/single_sign_on.rb +262 -0
- data/app/models/masks/server/subject.rb +14 -0
- data/app/models/masks/server/subjects.rb +39 -0
- data/app/models/masks/server/tenant.rb +476 -0
- data/app/models/masks/server/tenant_logo.rb +44 -0
- data/app/models/masks/server/texting.rb +16 -0
- data/app/models/masks/server/themes.rb +64 -0
- data/app/models/masks/server/token.rb +183 -0
- data/app/models/masks/server/user_codes.rb +32 -0
- data/app/models/masks/server/verifications.rb +26 -0
- data/app/policies/masks/server/authorization_policy.rb +55 -0
- data/app/policies/masks/server/client_policy.rb +21 -0
- data/app/policies/masks/server/device_policy.rb +22 -0
- data/app/policies/masks/server/exchange_policy.rb +155 -0
- data/app/policies/masks/server/grant_checks.rb +45 -0
- data/app/policies/masks/server/policy.rb +64 -0
- data/app/views/layouts/masks/server/application.html.erb +40 -0
- data/app/views/layouts/masks/server/mailer.html.erb +263 -0
- data/app/views/layouts/masks/server/mailer.text.erb +7 -0
- data/app/views/layouts/masks/server/manage.html.erb +22 -0
- data/app/views/masks/server/account/_activity.html.erb +44 -0
- data/app/views/masks/server/account/_address.html.erb +42 -0
- data/app/views/masks/server/account/_approve.html.erb +56 -0
- data/app/views/masks/server/account/_apps.html.erb +129 -0
- data/app/views/masks/server/account/_delete.html.erb +40 -0
- data/app/views/masks/server/account/_devices.html.erb +57 -0
- data/app/views/masks/server/account/_export.html.erb +29 -0
- data/app/views/masks/server/account/_head.html.erb +58 -0
- data/app/views/masks/server/account/_info.html.erb +81 -0
- data/app/views/masks/server/account/_launcher.html.erb +18 -0
- data/app/views/masks/server/account/_organizations.html.erb +171 -0
- data/app/views/masks/server/account/_signing_in.html.erb +339 -0
- data/app/views/masks/server/account/index.html.erb +41 -0
- data/app/views/masks/server/actor_mailer/_action.html.erb +18 -0
- data/app/views/masks/server/actor_mailer/_message.html.erb +7 -0
- data/app/views/masks/server/actor_mailer/_message.text.erb +1 -0
- data/app/views/masks/server/actor_mailer/approval_requested.html.erb +7 -0
- data/app/views/masks/server/actor_mailer/approval_requested.text.erb +7 -0
- data/app/views/masks/server/actor_mailer/approved.html.erb +7 -0
- data/app/views/masks/server/actor_mailer/approved.text.erb +7 -0
- data/app/views/masks/server/actor_mailer/confirmation_code.html.erb +9 -0
- data/app/views/masks/server/actor_mailer/confirmation_code.text.erb +7 -0
- data/app/views/masks/server/actor_mailer/email_verification.html.erb +11 -0
- data/app/views/masks/server/actor_mailer/email_verification.text.erb +7 -0
- data/app/views/masks/server/actor_mailer/idle.html.erb +9 -0
- data/app/views/masks/server/actor_mailer/idle.text.erb +9 -0
- data/app/views/masks/server/actor_mailer/invitation.html.erb +19 -0
- data/app/views/masks/server/actor_mailer/invitation.text.erb +13 -0
- data/app/views/masks/server/actor_mailer/notification.html.erb +20 -0
- data/app/views/masks/server/actor_mailer/notification.text.erb +15 -0
- data/app/views/masks/server/actor_mailer/organization_invitation.html.erb +11 -0
- data/app/views/masks/server/actor_mailer/organization_invitation.text.erb +11 -0
- data/app/views/masks/server/actor_mailer/password_reset.html.erb +15 -0
- data/app/views/masks/server/actor_mailer/password_reset.text.erb +11 -0
- data/app/views/masks/server/actor_mailer/recovery_requested.html.erb +7 -0
- data/app/views/masks/server/actor_mailer/recovery_requested.text.erb +7 -0
- data/app/views/masks/server/application/_flashes.html.erb +8 -0
- data/app/views/masks/server/application/_person.html.erb +27 -0
- data/app/views/masks/server/authorize/error.html.erb +12 -0
- data/app/views/masks/server/device_verifications/approved.html.erb +8 -0
- data/app/views/masks/server/device_verifications/show.html.erb +23 -0
- data/app/views/masks/server/handshakes/refused.html.erb +20 -0
- data/app/views/masks/server/handshakes/show.html.erb +141 -0
- data/app/views/masks/server/links/expired.html.erb +10 -0
- data/app/views/masks/server/links/verified.html.erb +8 -0
- data/app/views/masks/server/logins/_accept_invitation.html.erb +31 -0
- data/app/views/masks/server/logins/_add_phone.html.erb +14 -0
- data/app/views/masks/server/logins/_awaiting_approval.html.erb +7 -0
- data/app/views/masks/server/logins/_backup_code.html.erb +23 -0
- data/app/views/masks/server/logins/_choose_organization.html.erb +21 -0
- data/app/views/masks/server/logins/_code_form.html.erb +12 -0
- data/app/views/masks/server/logins/_confirm_email.html.erb +19 -0
- data/app/views/masks/server/logins/_confirm_head.html.erb +12 -0
- data/app/views/masks/server/logins/_confirm_phone.html.erb +16 -0
- data/app/views/masks/server/logins/_consent.html.erb +109 -0
- data/app/views/masks/server/logins/_email_code.html.erb +7 -0
- data/app/views/masks/server/logins/_enrol.html.erb +103 -0
- data/app/views/masks/server/logins/_enrol_code_form.html.erb +9 -0
- data/app/views/masks/server/logins/_first_factor.html.erb +41 -0
- data/app/views/masks/server/logins/_head.html.erb +15 -0
- data/app/views/masks/server/logins/_header.html.erb +3 -0
- data/app/views/masks/server/logins/_hint.html.erb +6 -0
- data/app/views/masks/server/logins/_identified.html.erb +6 -0
- data/app/views/masks/server/logins/_identify.html.erb +24 -0
- data/app/views/masks/server/logins/_prove_email.html.erb +12 -0
- data/app/views/masks/server/logins/_providers.html.erb +21 -0
- data/app/views/masks/server/logins/_resend.html.erb +5 -0
- data/app/views/masks/server/logins/_reset_password.html.erb +23 -0
- data/app/views/masks/server/logins/_second_factor.html.erb +102 -0
- data/app/views/masks/server/logins/_setup_configure.html.erb +32 -0
- data/app/views/masks/server/logins/_signup.html.erb +85 -0
- data/app/views/masks/server/logins/_signup_credentials.html.erb +54 -0
- data/app/views/masks/server/logins/_signup_head.html.erb +20 -0
- data/app/views/masks/server/logins/_steps.html.erb +7 -0
- data/app/views/masks/server/logins/_warnings.html.erb +3 -0
- data/app/views/masks/server/logins/show.html.erb +14 -0
- data/app/views/masks/server/manage/index.html.erb +1 -0
- data/app/views/masks/server/refusals/show.html.erb +16 -0
- data/app/views/masks/server/saml/post.html.erb +16 -0
- data/app/views/masks/server/sender_mailer/trial.html.erb +1 -0
- data/app/views/masks/server/sender_mailer/trial.text.erb +1 -0
- data/app/views/masks/server/sessions/confirm.html.erb +29 -0
- data/config/initializers/fido_metadata.rb +5 -0
- data/config/initializers/inflections.rb +3 -0
- data/config/initializers/premailer.rb +7 -0
- data/config/initializers/rack_oauth2.rb +3 -0
- data/config/locales/de/account.yml +277 -0
- data/config/locales/de/actors.yml +8 -0
- data/config/locales/de/application.yml +6 -0
- data/config/locales/de/authorize.yml +7 -0
- data/config/locales/de/device_verifications.yml +15 -0
- data/config/locales/de/events.yml +189 -0
- data/config/locales/de/flashes.yml +164 -0
- data/config/locales/de/handshakes.yml +45 -0
- data/config/locales/de/links.yml +16 -0
- data/config/locales/de/logins.yml +272 -0
- data/config/locales/de/mailers.yml +135 -0
- data/config/locales/de/manage/activity.yml +31 -0
- data/config/locales/de/manage/actor.yml +125 -0
- data/config/locales/de/manage/actors.yml +78 -0
- data/config/locales/de/manage/api.yml +5 -0
- data/config/locales/de/manage/app.yml +24 -0
- data/config/locales/de/manage/client.yml +187 -0
- data/config/locales/de/manage/clients.yml +62 -0
- data/config/locales/de/manage/connections.yml +18 -0
- data/config/locales/de/manage/consents.yml +10 -0
- data/config/locales/de/manage/device.yml +30 -0
- data/config/locales/de/manage/devices.yml +59 -0
- data/config/locales/de/manage/directory.yml +5 -0
- data/config/locales/de/manage/domains.yml +28 -0
- data/config/locales/de/manage/emails.yml +30 -0
- data/config/locales/de/manage/event_labels.yml +5 -0
- data/config/locales/de/manage/events.yml +8 -0
- data/config/locales/de/manage/groups.yml +15 -0
- data/config/locales/de/manage/ldap.yml +35 -0
- data/config/locales/de/manage/mail_template.yml +18 -0
- data/config/locales/de/manage/messages.yml +11 -0
- data/config/locales/de/manage/namespaces.yml +14 -0
- data/config/locales/de/manage/organization.yml +132 -0
- data/config/locales/de/manage/organization_cell.yml +4 -0
- data/config/locales/de/manage/organization_headcount.yml +9 -0
- data/config/locales/de/manage/organizations.yml +31 -0
- data/config/locales/de/manage/pairing.yml +5 -0
- data/config/locales/de/manage/policies.yml +111 -0
- data/config/locales/de/manage/policy_rules.yml +73 -0
- data/config/locales/de/manage/presence.yml +26 -0
- data/config/locales/de/manage/providers.yml +156 -0
- data/config/locales/de/manage/provisioning.yml +29 -0
- data/config/locales/de/manage/scopes_editor.yml +21 -0
- data/config/locales/de/manage/senders.yml +43 -0
- data/config/locales/de/manage/settings.yml +147 -0
- data/config/locales/de/manage/settings_shell.yml +15 -0
- data/config/locales/de/manage/streams.yml +45 -0
- data/config/locales/de/manage/tokens.yml +21 -0
- data/config/locales/de/manage/ui.yml +23 -0
- data/config/locales/de/notifications.yml +15 -0
- data/config/locales/de/refusals.yml +16 -0
- data/config/locales/de/saml.yml +8 -0
- data/config/locales/de/scopes.yml +20 -0
- data/config/locales/de/senders.yml +12 -0
- data/config/locales/de/sessions.yml +10 -0
- data/config/locales/en/account.yml +278 -0
- data/config/locales/en/actors.yml +8 -0
- data/config/locales/en/application.yml +6 -0
- data/config/locales/en/authorize.yml +7 -0
- data/config/locales/en/device_verifications.yml +15 -0
- data/config/locales/en/events.yml +189 -0
- data/config/locales/en/flashes.yml +164 -0
- data/config/locales/en/handshakes.yml +45 -0
- data/config/locales/en/links.yml +16 -0
- data/config/locales/en/logins.yml +272 -0
- data/config/locales/en/mailers.yml +135 -0
- data/config/locales/en/manage/activity.yml +31 -0
- data/config/locales/en/manage/actor.yml +125 -0
- data/config/locales/en/manage/actors.yml +78 -0
- data/config/locales/en/manage/api.yml +5 -0
- data/config/locales/en/manage/app.yml +24 -0
- data/config/locales/en/manage/client.yml +187 -0
- data/config/locales/en/manage/clients.yml +62 -0
- data/config/locales/en/manage/connections.yml +18 -0
- data/config/locales/en/manage/consents.yml +10 -0
- data/config/locales/en/manage/device.yml +30 -0
- data/config/locales/en/manage/devices.yml +59 -0
- data/config/locales/en/manage/directory.yml +5 -0
- data/config/locales/en/manage/domains.yml +28 -0
- data/config/locales/en/manage/emails.yml +30 -0
- data/config/locales/en/manage/event_labels.yml +5 -0
- data/config/locales/en/manage/events.yml +8 -0
- data/config/locales/en/manage/groups.yml +15 -0
- data/config/locales/en/manage/ldap.yml +35 -0
- data/config/locales/en/manage/mail_template.yml +18 -0
- data/config/locales/en/manage/messages.yml +11 -0
- data/config/locales/en/manage/namespaces.yml +14 -0
- data/config/locales/en/manage/organization.yml +132 -0
- data/config/locales/en/manage/organization_cell.yml +4 -0
- data/config/locales/en/manage/organization_headcount.yml +9 -0
- data/config/locales/en/manage/organizations.yml +31 -0
- data/config/locales/en/manage/pairing.yml +5 -0
- data/config/locales/en/manage/policies.yml +111 -0
- data/config/locales/en/manage/policy_rules.yml +73 -0
- data/config/locales/en/manage/presence.yml +26 -0
- data/config/locales/en/manage/providers.yml +156 -0
- data/config/locales/en/manage/provisioning.yml +29 -0
- data/config/locales/en/manage/scopes_editor.yml +21 -0
- data/config/locales/en/manage/senders.yml +43 -0
- data/config/locales/en/manage/settings.yml +147 -0
- data/config/locales/en/manage/settings_shell.yml +15 -0
- data/config/locales/en/manage/streams.yml +45 -0
- data/config/locales/en/manage/tokens.yml +21 -0
- data/config/locales/en/manage/ui.yml +23 -0
- data/config/locales/en/notifications.yml +15 -0
- data/config/locales/en/refusals.yml +16 -0
- data/config/locales/en/saml.yml +8 -0
- data/config/locales/en/scopes.yml +20 -0
- data/config/locales/en/senders.yml +12 -0
- data/config/locales/en/sessions.yml +10 -0
- data/config/locales/es/account.yml +277 -0
- data/config/locales/es/actors.yml +8 -0
- data/config/locales/es/application.yml +6 -0
- data/config/locales/es/authorize.yml +7 -0
- data/config/locales/es/device_verifications.yml +15 -0
- data/config/locales/es/events.yml +189 -0
- data/config/locales/es/flashes.yml +164 -0
- data/config/locales/es/handshakes.yml +45 -0
- data/config/locales/es/links.yml +16 -0
- data/config/locales/es/logins.yml +272 -0
- data/config/locales/es/mailers.yml +135 -0
- data/config/locales/es/manage/activity.yml +31 -0
- data/config/locales/es/manage/actor.yml +125 -0
- data/config/locales/es/manage/actors.yml +78 -0
- data/config/locales/es/manage/api.yml +5 -0
- data/config/locales/es/manage/app.yml +24 -0
- data/config/locales/es/manage/client.yml +187 -0
- data/config/locales/es/manage/clients.yml +62 -0
- data/config/locales/es/manage/connections.yml +18 -0
- data/config/locales/es/manage/consents.yml +10 -0
- data/config/locales/es/manage/device.yml +30 -0
- data/config/locales/es/manage/devices.yml +59 -0
- data/config/locales/es/manage/directory.yml +5 -0
- data/config/locales/es/manage/domains.yml +28 -0
- data/config/locales/es/manage/emails.yml +30 -0
- data/config/locales/es/manage/event_labels.yml +5 -0
- data/config/locales/es/manage/events.yml +8 -0
- data/config/locales/es/manage/groups.yml +15 -0
- data/config/locales/es/manage/ldap.yml +35 -0
- data/config/locales/es/manage/mail_template.yml +18 -0
- data/config/locales/es/manage/messages.yml +11 -0
- data/config/locales/es/manage/namespaces.yml +14 -0
- data/config/locales/es/manage/organization.yml +132 -0
- data/config/locales/es/manage/organization_cell.yml +4 -0
- data/config/locales/es/manage/organization_headcount.yml +9 -0
- data/config/locales/es/manage/organizations.yml +31 -0
- data/config/locales/es/manage/pairing.yml +5 -0
- data/config/locales/es/manage/policies.yml +111 -0
- data/config/locales/es/manage/policy_rules.yml +73 -0
- data/config/locales/es/manage/presence.yml +26 -0
- data/config/locales/es/manage/providers.yml +156 -0
- data/config/locales/es/manage/provisioning.yml +29 -0
- data/config/locales/es/manage/scopes_editor.yml +21 -0
- data/config/locales/es/manage/senders.yml +43 -0
- data/config/locales/es/manage/settings.yml +147 -0
- data/config/locales/es/manage/settings_shell.yml +15 -0
- data/config/locales/es/manage/streams.yml +45 -0
- data/config/locales/es/manage/tokens.yml +21 -0
- data/config/locales/es/manage/ui.yml +23 -0
- data/config/locales/es/notifications.yml +15 -0
- data/config/locales/es/refusals.yml +16 -0
- data/config/locales/es/saml.yml +8 -0
- data/config/locales/es/scopes.yml +20 -0
- data/config/locales/es/senders.yml +12 -0
- data/config/locales/es/sessions.yml +10 -0
- data/config/locales/fr/account.yml +277 -0
- data/config/locales/fr/actors.yml +8 -0
- data/config/locales/fr/application.yml +6 -0
- data/config/locales/fr/authorize.yml +7 -0
- data/config/locales/fr/device_verifications.yml +15 -0
- data/config/locales/fr/events.yml +189 -0
- data/config/locales/fr/flashes.yml +164 -0
- data/config/locales/fr/handshakes.yml +45 -0
- data/config/locales/fr/links.yml +16 -0
- data/config/locales/fr/logins.yml +272 -0
- data/config/locales/fr/mailers.yml +135 -0
- data/config/locales/fr/manage/activity.yml +31 -0
- data/config/locales/fr/manage/actor.yml +125 -0
- data/config/locales/fr/manage/actors.yml +78 -0
- data/config/locales/fr/manage/api.yml +5 -0
- data/config/locales/fr/manage/app.yml +24 -0
- data/config/locales/fr/manage/client.yml +187 -0
- data/config/locales/fr/manage/clients.yml +62 -0
- data/config/locales/fr/manage/connections.yml +18 -0
- data/config/locales/fr/manage/consents.yml +10 -0
- data/config/locales/fr/manage/device.yml +30 -0
- data/config/locales/fr/manage/devices.yml +59 -0
- data/config/locales/fr/manage/directory.yml +5 -0
- data/config/locales/fr/manage/domains.yml +28 -0
- data/config/locales/fr/manage/emails.yml +30 -0
- data/config/locales/fr/manage/event_labels.yml +5 -0
- data/config/locales/fr/manage/events.yml +8 -0
- data/config/locales/fr/manage/groups.yml +15 -0
- data/config/locales/fr/manage/ldap.yml +35 -0
- data/config/locales/fr/manage/mail_template.yml +18 -0
- data/config/locales/fr/manage/messages.yml +11 -0
- data/config/locales/fr/manage/namespaces.yml +14 -0
- data/config/locales/fr/manage/organization.yml +132 -0
- data/config/locales/fr/manage/organization_cell.yml +4 -0
- data/config/locales/fr/manage/organization_headcount.yml +9 -0
- data/config/locales/fr/manage/organizations.yml +31 -0
- data/config/locales/fr/manage/pairing.yml +5 -0
- data/config/locales/fr/manage/policies.yml +111 -0
- data/config/locales/fr/manage/policy_rules.yml +73 -0
- data/config/locales/fr/manage/presence.yml +26 -0
- data/config/locales/fr/manage/providers.yml +156 -0
- data/config/locales/fr/manage/provisioning.yml +29 -0
- data/config/locales/fr/manage/scopes_editor.yml +21 -0
- data/config/locales/fr/manage/senders.yml +43 -0
- data/config/locales/fr/manage/settings.yml +147 -0
- data/config/locales/fr/manage/settings_shell.yml +15 -0
- data/config/locales/fr/manage/streams.yml +45 -0
- data/config/locales/fr/manage/tokens.yml +21 -0
- data/config/locales/fr/manage/ui.yml +23 -0
- data/config/locales/fr/notifications.yml +15 -0
- data/config/locales/fr/refusals.yml +16 -0
- data/config/locales/fr/saml.yml +8 -0
- data/config/locales/fr/scopes.yml +20 -0
- data/config/locales/fr/senders.yml +12 -0
- data/config/locales/fr/sessions.yml +10 -0
- data/config/passwords/LICENSE +21 -0
- data/config/passwords/common.txt +46907 -0
- data/config/routes.rb +152 -0
- data/db/authenticators.yml +18 -0
- data/db/migrate/20260912000000_create_masks_schema.rb +425 -0
- data/db/migrate/20260913000000_create_adapters.rb +46 -0
- data/db/migrate/20260913010000_create_sign_in_policies.rb +44 -0
- data/db/migrate/20260913020000_add_signup_to_actors.rb +10 -0
- data/db/migrate/20260913030000_add_consent_required_to_clients.rb +5 -0
- data/db/migrate/20260913040000_remove_upstream_tokens.rb +9 -0
- data/db/migrate/20260913050000_add_role_to_providers.rb +23 -0
- data/db/migrate/20260913060000_add_protocols_to_providers.rb +19 -0
- data/db/migrate/20260913070000_add_saml_to_providers.rb +10 -0
- data/db/migrate/20260913080000_grant_identities_to_actors.rb +14 -0
- data/db/migrate/20260913090000_create_delegations.rb +56 -0
- data/db/migrate/20260914000000_add_keys_to_clients.rb +8 -0
- data/db/migrate/20260914010000_add_require_signed_request_object_to_clients.rb +5 -0
- data/db/migrate/20260914020000_add_provisioning_to_actors.rb +10 -0
- data/db/migrate/20260914030000_add_saml_to_clients.rb +17 -0
- data/db/migrate/20260921000000_create_client_logos.rb +30 -0
- data/db/migrate/20260921010000_add_setup_token_to_tenants.rb +5 -0
- data/db/migrate/20260926000000_add_code_factors_to_actors.rb +8 -0
- data/db/migrate/20260926010000_add_idle_accounts.rb +14 -0
- data/db/migrate/20260926020000_create_event_streams.rb +28 -0
- data/db/migrate/20260927000000_add_apps_require_second_factor_to_sign_in_policies.rb +5 -0
- data/db/migrate/20260927010000_add_session_policies.rb +14 -0
- data/db/migrate/20260927020000_create_organizations.rb +47 -0
- data/db/migrate/20260927030000_add_organizations_to_policies_and_providers.rb +12 -0
- data/db/migrate/20260927040000_add_organizations_to_events_and_streams.rb +8 -0
- data/db/migrate/20260927050000_create_domain_claims.rb +27 -0
- data/db/migrate/20260927060000_add_event_retention_to_tenants.rb +5 -0
- data/db/migrate/20260927070000_add_risk_to_sign_in_policies.rb +11 -0
- data/db/migrate/20260927110000_create_signal_streams.rb +31 -0
- data/db/migrate/20260927120000_add_custom_host_to_tenants.rb +6 -0
- data/db/migrate/20260927140500_add_first_factor_to_sessions.rb +6 -0
- data/db/migrate/20260927160000_add_invited_at_to_memberships.rb +15 -0
- data/db/migrate/20260927170000_grant_identities_to_actors_in_every_tenant.rb +17 -0
- data/db/migrate/20260927180000_move_directory_ids_to_memberships.rb +46 -0
- data/db/migrate/20261003120000_add_metadata_expires_at_to_clients.rb +5 -0
- data/db/migrate/20261003130000_create_mail_templates.rb +23 -0
- data/db/migrate/20261003140000_add_authorization_details.rb +7 -0
- data/db/migrate/20261004120000_add_remembering_to_consents.rb +7 -0
- data/db/migrate/20261004130000_add_receives_signals_to_providers.rb +5 -0
- data/db/migrate/20261010120000_add_root_to_tokens.rb +27 -0
- data/db/migrate/20261010130000_add_recovery_requested_at_to_actors.rb +6 -0
- data/db/migrate/20261010140000_create_groups.rb +38 -0
- data/db/migrate/20261010150000_add_token_lifetimes_to_clients.rb +6 -0
- data/db/migrate/20261010160000_create_tenant_logos.rb +27 -0
- data/db/migrate/20261011120000_index_pending_approvals.rb +5 -0
- data/db/migrate/20261011130000_add_key_rotation_days_to_tenants.rb +5 -0
- data/db/migrate/20261011140000_add_keys_derived_at_to_tenants.rb +5 -0
- data/db/migrate/20261011150000_add_proof_of_work_to_sign_in_policies.rb +5 -0
- data/db/migrate/20261011160000_add_password_required_to_sign_in_policies.rb +5 -0
- data/db/migrate/20261011170000_create_saml_participations.rb +30 -0
- data/db/migrate/20261011180000_rename_adapters_to_senders.rb +45 -0
- data/lib/generators/masks/server/install/install_generator.rb +116 -0
- data/lib/generators/masks/server/install/templates/masks_server.rb.tt +7 -0
- data/lib/masks/server/configuration.rb +134 -0
- data/lib/masks/server/engine.rb +60 -0
- data/lib/masks/server/forwarded_app.rb +19 -0
- data/lib/masks/server/forwarding.rb +29 -0
- data/lib/masks/server/host.rb +21 -0
- data/lib/masks/server/isolation.rb +34 -0
- data/lib/masks/server/journey_serializer.rb +17 -0
- data/lib/masks/server/schema_reference.rb +164 -0
- data/lib/masks/server/tenancy/job.rb +78 -0
- data/lib/masks/server/tenancy/middleware.rb +104 -0
- data/lib/masks/server/tenant_isolation.rb +40 -0
- data/lib/masks/server/tenant_key_provider.rb +76 -0
- data/lib/masks/server/version.rb +5 -0
- data/lib/masks/server.rb +116 -0
- data/lib/masks-server.rb +1 -0
- data/lib/puma/plugin/masks_ldap.rb +25 -0
- data/lib/rack/oauth2/server/token/extension/device_code.rb +40 -0
- data/lib/rack/oauth2/server/token/extension/token_exchange.rb +48 -0
- data/lib/tasks/masks.rake +22 -0
- data/public/masks-assets/assets/account-D46qDQCo.js +2 -0
- data/public/masks-assets/assets/account-D46qDQCo.js.map +1 -0
- data/public/masks-assets/assets/app-olx-5PkA.css +2 -0
- data/public/masks-assets/assets/console-CiuQ3qj0.css +1 -0
- data/public/masks-assets/assets/handshake-BYhhQ_X3.js +2 -0
- data/public/masks-assets/assets/handshake-BYhhQ_X3.js.map +1 -0
- data/public/masks-assets/assets/initial-D99AzFOd.js +3 -0
- data/public/masks-assets/assets/initial-D99AzFOd.js.map +1 -0
- data/public/masks-assets/assets/login-CNs1UpxJ.js +4 -0
- data/public/masks-assets/assets/login-CNs1UpxJ.js.map +1 -0
- data/public/masks-assets/assets/manage-Z3GmPDNQ.js +560 -0
- data/public/masks-assets/assets/manage-Z3GmPDNQ.js.map +1 -0
- data/public/masks-assets/assets/passkey-DIj_5LCY.js +2 -0
- data/public/masks-assets/assets/passkey-DIj_5LCY.js.map +1 -0
- data/public/masks-public/favicon.svg +27 -0
- data/public/masks-public/icon.png +0 -0
- data/public/masks-public/icon.svg +26 -0
- data/version.txt +1 -0
- metadata +1095 -0
|
@@ -0,0 +1,560 @@
|
|
|
1
|
+
import{$ as e,A as t,B as n,C as r,D as i,E as a,F as o,G as s,H as c,I as l,J as u,K as d,L as f,M as p,N as m,O as h,P as g,Q as _,R as v,S as y,T as b,U as x,V as S,X as C,Y as w,Z as T,_ as E,a as D,at as O,b as k,c as A,ct as j,d as M,dt as N,et as P,f as F,ft as I,g as L,h as R,i as z,it as B,j as V,k as H,l as ee,lt as U,m as te,nt as ne,o as W,ot as re,p as ie,q as G,rt as K,s as q,st as J,t as ae,u as oe,ut as se,v as ce,w as Y,y as le,z as ue}from"./initial-D99AzFOd.js";var de=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~`;function fe(e=64){let t=new Uint8Array(e);crypto.getRandomValues(t);let n=``;for(let e of t)n+=de[e%66];return n}function pe(e){let t=``;for(let n of new Uint8Array(e))t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}async function me(e){return pe(await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(e)))}var he=`S256`;async function ge(){let e=await crypto.subtle.generateKey({name:`ECDSA`,namedCurve:`P-256`},!1,[`sign`,`verify`]),t=await crypto.subtle.exportKey(`jwk`,e.publicKey);return{privateKey:e.privateKey,jwk:{kty:t.kty,crv:t.crv,x:t.x,y:t.y}}}var _e=e=>pe(new TextEncoder().encode(JSON.stringify(e)).buffer);async function ve(e,t,n,r){let i=new URL(n),a={typ:`dpop+jwt`,alg:`ES256`,jwk:e.jwk},o={jti:fe(32),htm:t.toUpperCase(),htu:`${i.origin}${i.pathname}`,iat:Math.floor(Date.now()/1e3)};r&&(o.ath=pe(await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(r))));let s=`${_e(a)}.${_e(o)}`;return`${s}.${pe(await crypto.subtle.sign({name:`ECDSA`,hash:`SHA-256`},e.privateKey,new TextEncoder().encode(s)))}`}var ye=class extends Error{code;description;status;constructor(e,t,n){super(t?`${e}: ${t}`:e),this.name=`MasksError`,this.code=e,this.description=t,this.status=n}},be=class extends ye{},xe={login_required:be,interaction_required:be,consent_required:class extends ye{},access_denied:class extends ye{},invalid_grant:class extends ye{},invalid_token:class extends ye{},invalid_issuer:class extends ye{}};function X(e,t,n){let r=xe[e]??ye,i=new r(e,t,n);return i.name=r.name,i}var Se={RS256:`SHA-256`,RS384:`SHA-384`,RS512:`SHA-512`},Ce=`RSASSA-PKCS1-v1_5`;function we(e){let t=e.replace(/-/g,`+`).replace(/_/g,`/`),n=atob(t.padEnd(t.length+(4-t.length%4)%4,`=`)),r=new Uint8Array(new ArrayBuffer(n.length));for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return r}function Te(e){try{return JSON.parse(new TextDecoder().decode(we(e)))}catch{throw X(`invalid_token`,`the id token is not a JWT`)}}function Ee(e){return Array.isArray(e)?e.map(String):e==null?[]:[String(e)]}async function De(e,{issuer:t,audience:n,nonce:r,keyFor:i,leeway:a=60}){let[o,s,c,...l]=e.split(`.`);if(!o||!s||!c||l.length>0)throw X(`invalid_token`,`the id token is not a JWT`);let u=Te(o);if(u.typ!==void 0&&String(u.typ).toUpperCase()!==`JWT`)throw X(`invalid_token`,`the id token is typed ${u.typ}, which is not an id token`);let d=Se[String(u.alg)];if(!d)throw X(`invalid_token`,`the id token is signed with ${u.alg}, which this client cannot verify`);let f=await crypto.subtle.importKey(`jwk`,{...await i(String(u.kid)),alg:String(u.alg)},{name:Ce,hash:d},!1,[`verify`]);if(!await crypto.subtle.verify(Ce,f,we(c),new TextEncoder().encode(`${o}.${s}`)))throw X(`invalid_token`,`the id token signature does not verify`);let p=Te(s),m=Math.floor(Date.now()/1e3);if(String(p.iss??``).replace(/\/$/,``)!==t)throw X(`invalid_token`,`the id token was issued by ${p.iss}`);if(!Ee(p.aud).includes(n))throw X(`invalid_token`,`the id token was issued for another client`);if(typeof p.exp==`number`&&m-a>=p.exp)throw X(`invalid_token`,`the id token has expired`);if(typeof p.iat==`number`&&p.iat-a>m)throw X(`invalid_token`,`the id token was issued in the future`);if(p.nonce!==r)throw X(`invalid_nonce`,`the id token was issued for another request`);return p}var Oe=`masks:pending`;function ke(e){return e?Array.isArray(e)?e:e.split(/\s+/).filter(Boolean):[]}function Ae(e){let t=e.issuer.replace(/\/$/,``),n=e.fetch??globalThis.fetch.bind(globalThis),r=e.storage??globalThis.sessionStorage,i=ke(e.scope??[`openid`,`profile`,`email`]),a=ke(e.resource),o=null,s=null,c=null,l=null,u=null,d=null,f=async(t,n,r)=>e.dpop?(d??=ge(),{DPoP:await ve(await d,t,n,r)}):{},p=0,m=async()=>{if(o)return o;let e=await n(`${t}/.well-known/openid-configuration`,{headers:{Accept:`application/json`}});if(!e.ok)throw X(`invalid_issuer`,`${t} answered ${e.status}`,e.status);let r=await e.json();if(r.issuer?.replace(/\/$/,``)!==t)throw X(`invalid_issuer`,`${t} publishes a document naming ${r.issuer}`);return o=r,r},h=async e=>{let{jwks_uri:r}=await m();if(!r)throw X(`invalid_issuer`,`${t} publishes no jwks_uri, so an id token cannot be verified`);let i=await n(r,{headers:{Accept:`application/json`},...e?{cache:`no-cache`}:{}});if(!i.ok)throw X(`invalid_issuer`,`${r} answered ${i.status}`,i.status);let a=await i.json();return Object.fromEntries((a.keys??[]).filter(e=>e.kid&&(!e.use||e.use===`sig`)).map(e=>[e.kid,e]))},g=async(e,n=!1)=>{(n||!l)&&(l=await h(n));let r=l[e];if(r)return r;if(!n)return g(e,!0);throw X(`invalid_token`,`${t} publishes no key ${e}`)},_=async e=>{let t=p,{token_endpoint:r}=await m(),i=await n(r,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`,Accept:`application/json`,...await f(`POST`,r)},body:new URLSearchParams(e).toString()}),a=await i.json().catch(()=>({}));if(!i.ok)throw X(a.error??`http_${i.status}`,a.error_description,i.status);if(t!==p)throw X(`invalid_grant`,`the client signed out while this request was in flight`);return s={access_token:a.access_token,id_token:a.id_token,refresh_token:a.refresh_token,token_type:a.token_type??`Bearer`,scope:a.scope??``,expires_in:Number(a.expires_in??0),obtained_at:Math.floor(Date.now()/1e3)},s},v=async({returnTo:t,prompt:n,organization:o=e.organization}={})=>{let{authorization_endpoint:s}=await m(),c=fe(),l={state:fe(24),nonce:i.includes(`openid`)?fe(24):``,verifier:c,returnTo:t??`${location.pathname}${location.search}`,...o?{organization:o}:{}};r.setItem(Oe,JSON.stringify(l));let u=new URLSearchParams([[`response_type`,`code`],[`client_id`,e.clientId],[`redirect_uri`,e.redirectUri],[`scope`,i.join(` `)],[`state`,l.state],[`code_challenge`,await me(c)],[`code_challenge_method`,he]]);l.nonce&&u.append(`nonce`,l.nonce);for(let e of a)u.append(`resource`,e);return n&&u.append(`prompt`,n),o&&u.append(`organization`,o),`${s}?${u.toString()}`},y=async(e,{style:n=`identicon`,size:r}={})=>{let{avatar_endpoint:i,avatar_styles_supported:a}=await m();if(!i)throw X(`invalid_issuer`,`${t} publishes no avatar_endpoint`);if(a&&!a.includes(n))throw X(`invalid_style`,`${t} does not serve ${n} avatars`);let o=`${i}/${encodeURIComponent(e)}/${n}`;return r?`${o}?size=${r}`:o},b=(e=30)=>!s||Date.now()/1e3+e>=s.obtained_at+s.expires_in,x=async()=>{if(!s?.refresh_token)throw X(`invalid_grant`,`no refresh token is held`);let t=s.refresh_token,n=[[`grant_type`,`refresh_token`],[`refresh_token`,t],[`client_id`,e.clientId]];for(let e of a)n.push([`resource`,e]);let r=await _(n);return r.refresh_token??=t,r},S=async()=>(u??=x().finally(()=>{u=null}),await u),C=async t=>{let{revocation_endpoint:r}=await m();r&&await n(r,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:new URLSearchParams([[`token`,t],[`token_type_hint`,`refresh_token`],[`client_id`,e.clientId]]).toString()})};return{discover:m,authorizeUrl:v,avatarUrl:y,async authorize(e={}){window.location.assign(await v(e))},pending(){return r.getItem(Oe)!==null},async callback(n=window.location.href){let i=new URL(n).searchParams,o=r.getItem(Oe);if(r.removeItem(Oe),i.get(`error`))throw X(i.get(`error`),i.get(`error_description`)??void 0);if(!o)throw X(`invalid_state`,`this browser has no authorization in flight`);let l=JSON.parse(o);if(i.get(`state`)!==l.state)throw X(`invalid_state`,`the callback did not match this browser`);let u=i.get(`code`);if(!u)throw X(`invalid_request`,`the callback carried no code`);let d=[[`grant_type`,`authorization_code`],[`code`,u],[`client_id`,e.clientId],[`redirect_uri`,e.redirectUri],[`code_verifier`,l.verifier]];for(let e of a)d.push([`resource`,e]);let f=await _(d);if(l.nonce){if(!f.id_token)throw s=null,X(`invalid_token`,`an id token was asked for and the issuer returned none`);try{c=await De(f.id_token,{issuer:t,audience:e.clientId,nonce:l.nonce,keyFor:g})}catch(e){throw s=null,c=null,e}let n=c?.org?.key;if(l.organization&&n&&n!==l.organization)throw s=null,c=null,X(`invalid_token`,`the id token does not name the organization ${l.organization}`)}return{tokens:f,identity:c,returnTo:l.returnTo}},identity(){return c},organization(){return c?.org??null},organizations(){return c?.orgs??[]},async switchOrganization(e,t={}){window.location.assign(await v({...t,organization:e}))},avatars(){return c?.[`masks:avatars`]??null},async photo(e=c?.sub){if(!e||!s)return null;let t=await n(await y(e,{style:`photo`}),{headers:{Authorization:`${s.token_type} ${s.access_token}`,Accept:`image/*`}});return t.ok?await t.blob():null},refresh:S,async fetch(e,t={}){s?.refresh_token&&b()&&await S();let r=s?.access_token,i=new Headers(t.headers);if(r&&s){i.set(`Authorization`,`${s.token_type} ${r}`);for(let[n,a]of Object.entries(await f(t.method??`GET`,e,r)))i.set(n,a)}return await n(e,{...t,headers:i})},async proof(e,t){return(await f(e,t,s?.access_token)).DPoP??null},async freshAccessToken(e=30){return s?.refresh_token&&b(e)&&await S(),s?.access_token??null},accessToken(){return s?.access_token??null},tokens(){return s},authorization(){return s?`${s.token_type} ${s.access_token}`:null},expired:b,async logout({everywhere:n=!1,postLogoutRedirectUri:i}={}){let a=s;if(p+=1,s=null,c=null,u=null,r.removeItem(Oe),a?.refresh_token&&await C(a.refresh_token).catch(()=>void 0),!n)return;let{end_session_endpoint:o}=await m();if(!o)throw X(`invalid_issuer`,`${t} publishes no end_session_endpoint`);let l=new URLSearchParams([[`client_id`,e.clientId]]);a?.id_token&&l.append(`id_token_hint`,a.id_token),i&&l.append(`post_logout_redirect_uri`,i),window.location.assign(`${o}?${l.toString()}`)}}}var je=/%\{(\w+)\}/g,Me={},Ne=new Intl.PluralRules(`en`);function Pe(e,t=`en`){Me=e??{},Ne=new Intl.PluralRules(t)}function Fe(e){return e.split(`.`).reduce((e,t)=>e?.[t],Me)}function Ie(e,t){return e.replace(je,(e,n)=>t&&Object.hasOwn(t,n)?String(t[n]):e)}function Z(e,t){let n=Fe(e);if(typeof n==`string`)return Ie(n,t);if(n&&typeof n==`object`&&t&&`count`in t){let e=n[Ne.select(Number(t.count))]??n.other;if(typeof e==`string`)return Ie(e,t)}return e}var Le=`masks:manage:client`,Re=[`openid`,`profile`,`email`,`masks:manage`,`masks:manage:security`,`masks:manage:support`,`masks:manage:read`];function ze(e){try{return JSON.parse(localStorage.getItem(Le)||`null`)?.[e]||null}catch{return null}}function Be(e,t){let n=JSON.parse(localStorage.getItem(Le)||`{}`);n[e]=t,localStorage.setItem(Le,JSON.stringify(n))}function Ve(e){return ze(e.issuer)}function He(e){let t=JSON.parse(localStorage.getItem(Le)||`{}`);delete t[e.issuer],localStorage.setItem(Le,JSON.stringify(t))}function Ue(e){return`${location.origin}${e.root}/callback`}function We(e){let t=new URLSearchParams([[`client_name`,`Manage ${e.tenant.name}`],[`resource`,e.resource],[`scope`,Re.join(` `)],[`return_to`,`${location.origin}${e.root}`],[`token_endpoint_auth_method`,`none`],[`redirect_uris`,Ue(e)]]);return`${e.issuer}/handshake?${t.toString()}`}async function Ge(e,t){let n=await fetch(`${e.issuer}/register`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`,Authorization:`Bearer ${t}`},body:JSON.stringify({client_name:`Manage ${e.tenant.name}`,redirect_uris:[Ue(e)],token_endpoint_auth_method:`none`})}),r=await n.json().catch(()=>({}));if(!n.ok)throw Error(r.error_description||r.error||Z(`pairing.registration_failed`));if(r.client_secret)throw Error(Z(`pairing.secret_issued`));return Be(e.issuer,r.client_id),r.client_id}function Ke(e){let t=new Map,n=(e,r)=>e instanceof Blob?(t.set(r,e),null):Array.isArray(e)?e.map((e,t)=>n(e,`${r}.${t}`)):e?.constructor===Object?Object.fromEntries(Object.entries(e).map(([e,t])=>[e,n(t,`${r}.${e}`)])):e;return{held:n(e,`variables`),files:t}}function qe(e){let t=w({ready:!1,identity:null,failure:null}),n=null,r=()=>{let t=Ve(e);return t?(n||=Ae({issuer:e.issuer,clientId:t,redirectUri:Ue(e),scope:Re,resource:e.resource}),n):null},i=async()=>{let e=r();if(!e)throw Error(Z(`api.unregistered`));return e.expired(30)&&await e.refresh(),e.authorization()};return{state:t,paired(){return!!Ve(e)},signedIn(){return!!r()?.accessToken()},async authorize(e){await r().authorize({returnTo:e})},async callback(){let e=await r().callback();return t.identity=e.identity,t.ready=!0,e},async signOut(){let n=r();if(t.identity=null,!n)return null;let i=n.tokens()?.id_token,a=await n.discover().catch(()=>null);if(n.logout(),!a?.end_session_endpoint)return null;let o=new URLSearchParams({client_id:Ve(e),post_logout_redirect_uri:`${location.origin}${e.root}`});return i&&o.set(`id_token_hint`,i),`${a.end_session_endpoint}?${o}`},unpair(){r()?.logout(),He(e),n=null},async query(t,n={}){let{held:r,files:a}=Ke(n),o={Accept:`application/json`,Authorization:await i()},s;a.size?(s=new FormData,s.append(`operations`,JSON.stringify({query:t,variables:r})),s.append(`map`,JSON.stringify(Object.fromEntries([...a.keys()].map((e,t)=>[t,[e]])))),[...a.values()].forEach((e,t)=>{s.append(String(t),e)})):(o[`Content-Type`]=`application/json`,s=JSON.stringify({query:t,variables:n}));let c=await fetch(e.graphql,{method:`POST`,headers:o,body:s}),l=await c.json().catch(()=>({}));if(c.status===401||c.status===403)throw Error(l.error_description||l.error||Z(`api.refused`));if(l.errors?.length)throw Error(l.errors.map(e=>e.message).join(`; `));return l.data}}}var Je=Symbol(`router`);function Ye(e){let t=w({path:location.pathname,search:location.search}),n=()=>{t.path=location.pathname,t.search=location.search};return addEventListener(`popstate`,n),{state:t,get segments(){return t.path.slice(e.length).split(`/`).filter(Boolean)},get query(){return new URLSearchParams(t.search)},href(t){return`${e}${t}`},go(t){history.pushState({},``,`${e}${t}`),n(),scrollTo({top:0})},replace(t){history.replaceState({},``,`${e}${t}`),n()}}}function Xe(e){re(Je,e)}function Ze(){return K(Je)}var Qe=p(`<div class="sheet px-6 py-14 text-center"><p class="mx-auto max-w-sm text-sm opacity-85"><!></p></div>`);function $e(e,n){var r=Qe(),i=s(r),a=s(i);y(a,()=>n.children),U(i),U(r),t(e,r)}var et=new Set([`$$slots`,`$$events`,`$$legacy`,`to`,`class`,`children`]),tt=p(`<a><!></a>`);function nt(e,n){O(n,!0);let r=z(n,`class`,3,`link link-hover`),i=D(n,et),a=Ze();function o(e){e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.button===0&&(e.preventDefault(),e.stopPropagation(),a.go(n.to))}var c=tt();oe(c,e=>({...i,class:r(),href:e,onclick:o}),[()=>a.href(n.to)]);var l=s(c);y(l,()=>n.children),U(c),t(e,c),B()}var rt=p(`<div class="grid place-items-center py-16" role="status"><span class="loading loading-spinner"></span> <span class="sr-only"> </span></div>`);function it(e,n){O(n,!0);let r=z(n,`label`,19,()=>Z(`ui.loading`));var i=rt(),a=u(s(i),2),o=G(a,!0);U(i),c(()=>H(o,r())),t(e,i),B()}function at(e=25){let t=w({cursors:[null],total:null});return{size:e,state:t,get cursor(){return t.cursors.at(-1)},get first(){return(t.cursors.length-1)*e+1},reset(){t.cursors=[null]},forward(e){t.cursors=[...t.cursors,e]},back(){t.cursors.length>1&&(t.cursors=t.cursors.slice(0,-1))},counted(e){t.total=e}}}var ot=p(`<nav class="pager"><span class="hint"> </span> <div class="join"><button type="button" class="btn btn-sm join-item"> </button> <button type="button" class="btn btn-sm join-item"> </button></div></nav>`);function st(e,r){O(r,!0);let a=z(r,`busy`,3,!1),o=P(()=>r.pages.first),l=P(()=>n(o)+r.shown-1),p=P(()=>r.pages.state.total),m=P(()=>r.pages.state.cursors.length>1),h=P(()=>n(p)===null?r.shown===r.pages.size:n(l)<n(p));var g=V(),_=d(g),v=e=>{var i=ot(),d=s(i),g=G(d,!0),_=u(d,2),v=s(_),y=G(v,!0),b=u(v,2),x=G(b,!0);U(_),U(i),c((e,t,r,o)=>{F(i,`aria-label`,e),H(g,t),v.disabled=a()||!n(m),H(y,r),b.disabled=a()||!n(h),H(x,o)},[()=>Z(`ui.pager.label`),()=>n(p)===null?Z(`ui.pager.range`,{first:n(o).toLocaleString(),last:n(l).toLocaleString()}):Z(`ui.pager.range_of`,{first:n(o).toLocaleString(),last:n(l).toLocaleString(),total:n(p).toLocaleString()}),()=>Z(`ui.pager.previous`),()=>Z(`ui.pager.next`)]),f(`click`,v,()=>r.onpage(`back`)),f(`click`,b,()=>r.onpage(`forward`)),t(e,i)};i(_,e=>{r.shown&&(n(m)||n(h))&&e(v)}),t(e,g),B()}l([`click`]);function ct(){let e=w({notice:null,failure:null}),t=()=>{e.notice=null,e.failure=null},n=t=>{e.notice=null,e.failure=t?.message??String(t)};return{state:e,clear:t,blame:n,say(t){e.failure=null,e.notice=t},async attempt(r,i=null){t();try{let t=await r()??!0;return i&&(e.notice=i),t}catch(e){return n(e),null}}}}var lt=new Map;function ut(){return document.documentElement.lang||void 0}function dt(e,t){let n=`${e}:${ut()??``}`;return lt.has(n)||lt.set(n,t(ut())),lt.get(n)}var ft=()=>dt(`day`,e=>new Intl.DateTimeFormat(e,{day:`numeric`,month:`short`,year:`numeric`})),pt=()=>dt(`moment`,e=>new Intl.DateTimeFormat(e,{day:`numeric`,month:`short`,hour:`2-digit`,minute:`2-digit`})),mt=()=>dt(`relative`,e=>new Intl.RelativeTimeFormat(e,{numeric:`auto`})),ht=[[`year`,31536e6],[`month`,2592e6],[`week`,6048e5],[`day`,864e5],[`hour`,36e5],[`minute`,6e4]];function gt(e){if(!e)return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t}function _t(e,t=`—`){let n=gt(e);return n?ft().format(n):t}function vt(e,t=`—`){let n=gt(e);return n?pt().format(n):t}function yt(e,t=`—`){let n=gt(e);if(!n)return t;let r=n.getTime()-Date.now();for(let[e,t]of ht)if(Math.abs(r)>=t)return mt().format(Math.round(r/t),e);return mt().format(Math.round(r/1e3),`second`)}function bt(e,t=`—`){let n=(e??[]).filter(Boolean);return n.length?n.join(` `):t}var xt=p(`<span class="tip"><button type="button" class="tip-mark">?</button> <span class="tip-body" role="tooltip"> </span></span>`);function St(e,n){let r=g();O(n,!0);let i=z(n,`label`,19,()=>Z(`ui.more_about`));var a=xt(),o=s(a),l=u(o,2),d=G(l,!0);U(a),c(()=>{F(o,`aria-label`,i()),F(o,`aria-describedby`,r),F(l,`id`,r),H(d,n.text)}),t(e,a),B()}var Ct=p(`<div class="flex items-center gap-2"><h2 class="subhead"> </h2> <!></div>`),wt=p(`<p class="deck-sm"> </p>`),Tt=p(`<div class="flex min-w-0 max-w-full flex-wrap items-center gap-2"><!></div>`),Et=p(`<div class="section-head"><div class="flex min-w-0 flex-col gap-1.5"><!> <!></div> <!></div>`),Dt=p(`<section><!> <div class="section-body"><!></div></section>`);function Q(e,r){O(r,!0);let a=z(r,`title`,3,null),o=z(r,`lede`,3,null),l=z(r,`help`,3,null),d=z(r,`row`,3,!1);var f=Dt();let p;var m=s(f),h=e=>{var d=Et(),f=s(d),p=s(f),m=e=>{var r=Ct(),o=s(r),d=G(o,!0),f=u(o,2),p=e=>{{let t=P(()=>Z(`ui.about`,{title:a().toLowerCase()}));St(e,{get text(){return l()},get label(){return n(t)}})}};i(f,e=>{l()&&e(p)}),U(r),c(()=>H(d,a())),t(e,r)};i(p,e=>{a()&&e(m)});var h=u(p,2),g=e=>{var n=wt(),r=G(n,!0);c(()=>H(r,o())),t(e,n)};i(h,e=>{o()&&e(g)}),U(f);var _=u(f,2),v=e=>{var n=Tt(),i=s(n);y(i,()=>r.actions),U(n),t(e,n)};i(_,e=>{r.actions&&e(v)}),U(d),t(e,d)};i(m,e=>{(a()||o()||r.actions)&&e(h)});var g=u(m,2),_=s(g);y(_,()=>r.children),U(g),U(f),c(()=>p=le(f,1,`section`,null,p,{"section-row":d()})),t(e,f),B()}var Ot=p(`<tr class="hover cursor-pointer"><!></tr>`);function kt(e,n){O(n,!0);let r=Ze();function i(e){e.target.closest(`a, button, input, label`)||getSelection()?.toString()||r.go(n.to)}var a=Ot(),o=s(a);y(o,()=>n.children),U(a),f(`click`,a,i),t(e,a),B()}l([`click`]);var At=p(`<div class="join w-full sm:w-auto"><input class="input input-sm join-item w-full sm:w-48 md:w-56" type="search"/> <button type="button" class="btn btn-sm join-item"> </button></div>`);function jt(e,n){O(n,!0);let r=z(n,`value`,15,``);var i=At(),a=s(i);M(a);var o=u(a,2),l=G(o,!0);U(i),c(e=>{F(a,`aria-label`,n.label),F(a,`placeholder`,n.placeholder),H(l,e)},[()=>Z(`ui.search`)]),f(`keydown`,a,e=>e.key===`Enter`&&n.onsearch()),ee(a,r),f(`click`,o,function(...e){n.onsearch?.apply(this,e)}),t(e,i),B()}l([`keydown`,`click`]);var Mt=p(`<th> </th>`),Nt=p(`<div class="sheet overflow-x-auto"><table class="table"><thead><tr></tr></thead><tbody><!></tbody></table></div>`);function Pt(e,r){O(r,!0);let a=P(()=>r.columns.map(e=>typeof e==`string`?{label:e}:e));var l=V(),f=d(l),p=e=>{$e(e,{children:(e,n)=>{j();var i=o();c(()=>H(i,r.empty)),t(e,i)},$$slots:{default:!0}})},m=e=>{var i=Nt(),o=s(i),l=s(o),d=s(l);Y(d,21,()=>n(a),b,(e,r)=>{var i=Mt(),a=G(i,!0);c(()=>{le(i,1,`${n(r).right?`text-right`:``} ${n(r).hide?`hidden md:table-cell`:``}`),H(a,n(r).label??``)}),t(e,i)}),U(d),U(l);var f=u(l),p=s(f);y(p,()=>r.rows),U(f),U(o),U(i),t(e,i)};i(f,e=>{r.count===0?e(p):e(m,-1)}),t(e,l),B()}var Ft=p(`<button type="button"> </button>`),It=p(`<!> <div class="range" role="group"></div>`,1),Lt=p(`<div class="alert alert-warning alert-soft flex-col items-start gap-2"><p class="text-sm"> <code class="font-mono"> </code>. <button type="button" class="link"> </button></p> <label class="flex items-center gap-2 text-sm"><input type="checkbox" class="checkbox"/> </label> <button type="button" class="btn btn-sm btn-error btn-outline"> </button></div>`),Rt=p(`<p class="text-sm opacity-85"> <code class="font-mono"> </code>. <button type="button" class="link"> </button></p>`),zt=p(`<span class="hint"> </span>`),Bt=p(`<div class="flex flex-wrap items-center gap-3"><label class="flex items-center gap-2 text-sm"><input type="checkbox" class="checkbox"/> </label> <!> <!></div>`),Vt=p(`<span class="badge badge-error badge-xs"> </span>`),Ht=p(`<span class="badge badge-warning badge-xs"> </span>`),Ut=p(`<span class="badge badge-success badge-xs"> </span>`),Wt=p(`<div class="truncate font-mono text-xs opacity-80"> </div>`),Gt=p(` <!>`,1),Kt=p(`<div class="truncate"></div>`),qt=p(`<span class="opacity-80"> </span>`),Jt=p(`<td class="w-0"><input type="checkbox" class="checkbox"/></td> <td class="max-w-[18rem]"><!> <div class="flex flex-wrap items-center gap-1.5"><span class="truncate text-xs opacity-75"> </span> <!> <!></div> <!></td> <td class="hidden max-w-[16rem] text-xs md:table-cell"><!></td> <td class="hidden font-mono text-xs opacity-85 md:table-cell"> </td> <td class="text-xs whitespace-nowrap opacity-85"> </td>`,1),Yt=p(`<!> <!> <!>`,1),Xt=p(`<div id="devices" class="scroll-mt-20"><!></div>`);function Zt(e,r){O(r,!0);let a=[[`allowed`,Z(`devices.lenses.allowed`),{blocked:!1}],[`blocked`,Z(`devices.lenses.blocked`),{blocked:!0}],[`unattached`,Z(`devices.lenses.unattached`),{unattached:!0}]],l=[``,Z(`devices.columns.device`),{label:Z(`devices.columns.who`),hide:!0},{label:Z(`devices.columns.ip_address`),hide:!0},Z(`devices.columns.last_seen`)],p=T(w([])),m=T(!0),h=T(`allowed`),g=T(``),_=T(``),v=T(w(new Set)),y=T(!1),b=T(!1),x=T(null),S=P(()=>a.find(([e])=>e===n(h))?.[2]??{});async function E(){C(m,!0);let e=await r.feedback.attempt(()=>r.api.query(`
|
|
2
|
+
query Devices($blocked: Boolean, $unattached: Boolean, $agent: String, $limit: Int) {
|
|
3
|
+
devices(blocked: $blocked, unattached: $unattached, agent: $agent, limit: $limit) {
|
|
4
|
+
id label category known ipAddress userAgent lastSeenAt blockedAt
|
|
5
|
+
actors { uuid identifier }
|
|
6
|
+
sessions { id }
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
`,{blocked:n(S).blocked??null,unattached:n(S).unattached??null,agent:n(_)||null,limit:100}));C(m,!1),e&&(C(p,e.devices,!0),C(v,new Set,!0))}E().then(()=>{location.hash===`#devices`&&n(x)?.scrollIntoView()});function D(e){C(h,e,!0),E()}function k(){C(_,n(g).trim(),!0),C(y,!1),E()}function A(){C(g,``),k()}function N(e){let t=new Set(n(v));t.has(e)?t.delete(e):t.add(e),C(v,t,!0)}let L=P(()=>n(p).length>0&&n(v).size===n(p).length);function R(){C(v,n(L)?new Set:new Set(n(p).map(e=>e.id)),!0)}let z=P(()=>n(h)!==`blocked`);function ee(e,t){let r=Z(n(z)?`devices.blocked_count`:`devices.unblocked_count`,{count:e});return t?Z(`devices.spared`,{done:r}):r}async function te(e,t){if(!confirm(t))return;C(b,!0);let i=n(z)?`mutation Bulk($ids: [ID!], $agent: String, $refuse: Boolean) {
|
|
10
|
+
blockDevices(ids: $ids, agent: $agent, refuse: $refuse) { count spared }
|
|
11
|
+
}`:`mutation Bulk($ids: [ID!]!) { unblockDevices(ids: $ids) { count } }`,a=await r.feedback.attempt(()=>r.api.query(i,e));if(C(b,!1),!a)return;let o=a.blockDevices??a.unblockDevices;await E(),r.feedback.say(n(y)&&e.agent?Z(`devices.refused`,{done:ee(o.count,o.spared),agent:e.agent}):ee(o.count,o.spared))}let ne=()=>te({ids:[...n(v)]},n(z)?Z(`devices.block_chosen_question`,{count:n(v).size}):Z(`devices.unblock_chosen_question`,{count:n(v).size})),re=()=>{let e=Z(`devices.block_matching_question`,{agent:n(_)});return te({agent:n(_),refuse:n(y)},n(y)?Z(`devices.block_matching_refuse`,{question:e}):e)},K=P(()=>n(h)===`blocked`?Z(`devices.empty.blocked`):n(h)===`unattached`?Z(`devices.empty.unattached`):Z(`devices.empty.allowed`));var J=Xt(),ae=s(J);{let e=e=>{var r=It(),i=d(r);{let e=P(()=>Z(`devices.filter_label`));jt(i,{get label(){return n(e)},placeholder:`curl, python-requests`,onsearch:k,get value(){return n(g)},set value(e){C(g,e,!0)}})}var o=u(i,2);Y(o,21,()=>a,([e,t])=>e,(e,r)=>{var i=P(()=>I(n(r),2));let a=()=>n(i)[0],o=()=>n(i)[1];var s=Ft(),l=G(s,!0);c(()=>{F(s,`aria-pressed`,n(h)===a()),H(l,o())}),f(`click`,s,()=>D(a())),t(e,s)}),U(o),c(e=>F(o,`aria-label`,e),[()=>Z(`devices.which`)]),t(e,r)},r=P(()=>Z(`devices.title`));Q(ae,{get title(){return n(r)},actions:e,children:(e,r)=>{var a=Yt(),h=d(a),g=e=>{var r=Lt(),i=s(r),a=s(i),o=u(a),l=G(o,!0),d=u(o,2),p=G(d,!0);U(i);var m=u(i,2),h=s(m);M(h);var g=u(h);U(m);var v=u(m,2),x=G(v,!0);U(r),c((e,t,r,i)=>{H(a,`${e??``} `),H(l,n(_)),H(p,t),H(g,` ${r??``}`),v.disabled=n(b),H(x,i)},[()=>Z(`devices.showing`),()=>Z(`devices.clear`),()=>Z(`devices.refuse_agent`),()=>Z(`devices.block_matching`)]),f(`click`,d,A),q(h,()=>n(y),e=>C(y,e)),f(`click`,v,re),t(e,r)},x=e=>{var r=Rt(),i=s(r),a=u(i),o=G(a,!0),l=u(a,2),d=G(l,!0);U(r),c((e,t)=>{H(i,`${e??``} `),H(o,n(_)),H(d,t)},[()=>Z(`devices.showing_blocked`),()=>Z(`devices.clear`)]),f(`click`,l,A),t(e,r)};i(h,e=>{n(_)&&n(z)?e(g):n(_)&&e(x,1)});var S=u(h,2),w=e=>{var r=Bt(),a=s(r),o=s(a);M(o);var l=u(o);U(a);var d=u(a,2),m=e=>{var r=Ft(),i=G(r,!0);c(e=>{le(r,1,`btn btn-sm ${n(z)?`btn-error btn-outline`:`btn-outline`}`),r.disabled=n(b),H(i,e)},[()=>Z(n(z)?`devices.block_count`:`devices.unblock_count`,{count:n(v).size})]),f(`click`,r,ne),t(e,r)};i(d,e=>{n(v).size&&e(m)});var h=u(d,2),g=e=>{var n=zt(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`devices.newest`,{count:100})]),t(e,n)};i(h,e=>{n(p).length===100&&e(g)}),U(r),c(e=>{ie(o,n(L)),o.indeterminate=n(v).size>0&&!n(L),H(l,` ${e??``}`)},[()=>n(v).size?Z(`devices.chosen`,{count:n(v).size}):Z(`devices.choose_all`,{count:n(p).length})]),f(`change`,o,R),t(e,r)};i(S,e=>{n(p).length&&e(w)});var T=u(S,2),E=e=>{it(e,{})},D=e=>{Pt(e,{get columns(){return l},get count(){return n(p).length},get empty(){return n(K)},rows:e=>{var r=V(),a=d(r);Y(a,17,()=>n(p),e=>e.id,(e,r)=>{{let a=P(()=>`/actors/devices/${n(r).id}`);kt(e,{get to(){return n(a)},children:(e,a)=>{var l=Jt(),p=d(l),m=s(p);M(m),U(p);var h=u(p,2),g=s(h);{let e=P(()=>`/actors/devices/${n(r).id}`);nt(g,{get to(){return n(e)},class:`link link-hover font-medium`,children:(e,i)=>{j();var a=o();c(()=>H(a,n(r).label)),t(e,a)},$$slots:{default:!0}})}var y=u(g,2),b=s(y),x=G(b,!0),S=u(b,2),C=e=>{var n=Vt(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`devices.blocked`)]),t(e,n)},w=e=>{var n=Ht(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`devices.unrecognised`)]),t(e,n)};i(S,e=>{n(r).blockedAt?e(C):n(r).known||e(w,1)});var T=u(S,2),E=e=>{var n=Ut(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`devices.signed_in`)]),t(e,n)};i(T,e=>{n(r).sessions.length&&e(E)}),U(y);var D=u(y,2),O=e=>{var i=Wt(),a=G(i,!0);c(()=>{F(i,`title`,n(r).userAgent),H(a,n(r).userAgent)}),t(e,i)};i(D,e=>{n(_)&&n(r).userAgent&&e(O)}),U(h);var k=u(h,2),A=s(k),I=e=>{var i=Kt();Y(i,23,()=>n(r).actors,e=>e.uuid,(e,r,i)=>{j();var a=Gt(),s=d(a,!0),l=u(s);{let e=P(()=>`/actors/${n(r).uuid}`);nt(l,{get to(){return n(e)},class:`link link-hover`,children:(e,i)=>{j();var a=o();c(()=>H(a,n(r).identifier)),t(e,a)},$$slots:{default:!0}})}c(()=>H(s,n(i)?`, `:``)),t(e,a)}),U(i),t(e,i)},L=e=>{var n=qt(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`devices.nobody_yet`)]),t(e,n)};i(A,e=>{n(r).actors.length?e(I):e(L,-1)}),U(k);var R=u(k,2),z=G(R,!0),B=u(R,2),V=G(B,!0);c((e,t,i,a)=>{F(m,`aria-label`,e),ie(m,t),H(x,n(r).category),H(z,n(r).ipAddress??`—`),F(B,`title`,i),H(V,a)},[()=>Z(`devices.choose`,{label:n(r).label}),()=>n(v).has(n(r).id),()=>vt(n(r).lastSeenAt),()=>yt(n(r).lastSeenAt)]),f(`change`,m,()=>N(n(r).id)),t(e,l)},$$slots:{default:!0}})}}),t(e,r)},$$slots:{rows:!0}})};i(T,e=>{n(m)&&n(p).length===0?e(E):e(D,-1)}),t(e,a)},$$slots:{actions:!0,default:!0}})}U(J),W(J,e=>C(x,e),()=>n(x)),t(e,J),B()}l([`click`,`change`]);var Qt=p(`<span class="scope-picker-new"> </span>`),$t=p(`<li role="option"><!> <span> </span></li>`),en=p(`<li class="scope-picker-more" role="presentation"> </li>`),tn=p(`<ul class="scope-picker-list" role="listbox"><!> <!></ul>`),nn=p(`<div class="scope-picker-field"><input class="input input-sm w-full font-mono" role="combobox" aria-autocomplete="list" autocapitalize="none" autocorrect="off" spellcheck="false"/> <!></div>`),rn=p(`<button type="button" class="scope-picker-remove">×</button>`),an=p(`<li> <!></li>`),on=p(`<li><button type="button" class="btn btn-ghost btn-xs"> </button></li>`),sn=p(`<ul class="scope-picker-held"><!> <!></ul>`),cn=p(`<p class="hint"> </p>`),ln=p(`<div class="scope-picker"><!> <!></div>`);function un(e,r){O(r,!0);let a=z(r,`value`,19,()=>[]),o=z(r,`available`,19,()=>[]),l=z(r,`disabled`,3,!1),d=`scopes-${Math.random().toString(36).slice(2,10)}`,p=T(``),m=T(!1),h=T(0),g=T(!1),_=P(()=>[...new Set(a())].sort()),y=P(()=>n(p).trim().toLowerCase()),b=P(()=>[...new Set(o())].filter(e=>!a().includes(e)&&(!n(y)||e.toLowerCase().includes(n(y)))).sort((e,t)=>A(e)-A(t)||e.localeCompare(t))),S=P(()=>n(b).slice(0,40)),w=P(()=>n(p).trim()),E=P(()=>n(w)!==``&&!a().includes(n(w))&&!o().includes(n(w))),D=P(()=>n(E)?[...n(S),n(w)]:n(S)),k=P(()=>n(g)||n(_).length<=24?n(_):n(_).slice(0,24));x(()=>{n(h)>=n(D).length&&C(h,Math.max(n(D).length-1,0),!0)});function A(e){return n(y)&&e.toLowerCase().startsWith(n(y))?0:1}function j(e){e&&!a().includes(e)&&(r.onchange([...a(),e]),C(p,``),C(h,0))}function N(e){r.onchange(a().filter(t=>t!==e))}function I(e){e.key===`ArrowDown`?(e.preventDefault(),C(m,!0),C(h,Math.min(n(h)+1,n(D).length-1),!0)):e.key===`ArrowUp`?(e.preventDefault(),C(h,Math.max(n(h)-1,0),!0)):e.key===`Enter`?(e.preventDefault(),j(n(m)&&n(D).length?n(D)[n(h)]:n(w))):e.key===`Escape`&&C(m,!1)}var L=ln(),R=s(L),V=e=>{var r=nn(),a=s(r);M(a);var l=u(a,2),g=e=>{var r=tn(),a=s(r);Y(a,18,()=>n(D),e=>e,(e,r,a)=>{var o=$t();let l;var p=s(o),m=e=>{var n=Qt(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`scopes_editor.add_new`)]),t(e,n)};i(p,e=>{n(E)&&n(a)===n(D).length-1&&e(m)});var g=u(p,2);let _;var v=G(g,!0);U(o),c(e=>{F(o,`id`,`${d}-${n(a)}`),F(o,`aria-selected`,n(a)===n(h)),l=le(o,1,`scope-picker-option`,null,l,{"scope-picker-active":n(a)===n(h)}),_=le(g,1,`scope font-mono`,null,_,{"scope-privileged":e}),H(v,r)},[()=>r.startsWith(`masks:`)]),f(`mousedown`,o,e=>{e.preventDefault(),j(r)}),f(`mousemove`,o,()=>C(h,n(a),!0)),t(e,o)});var o=u(a,2),l=e=>{var r=en(),i=G(r,!0);c(e=>H(i,e),[()=>Z(`scopes_editor.more`,{count:n(b).length-40})]),t(e,r)};i(o,e=>{n(b).length>40&&e(l)}),U(r),c(e=>{F(r,`id`,`${d}-list`),F(r,`aria-label`,e)},[()=>Z(`scopes_editor.offered`)]),t(e,r)};i(l,e=>{n(m)&&n(D).length&&e(g)}),U(r),c((e,t)=>{F(a,`aria-expanded`,n(m)&&n(D).length>0),F(a,`aria-controls`,`${d}-list`),F(a,`aria-activedescendant`,n(m)&&n(D).length?`${d}-${n(h)}`:void 0),F(a,`aria-label`,e),F(a,`placeholder`,t)},[()=>Z(`scopes_editor.label`),()=>Z(`scopes_editor.placeholder`,{count:o().length})]),f(`input`,a,()=>{C(m,!0),C(h,0)}),v(`focus`,a,()=>C(m,!0)),v(`blur`,a,()=>C(m,!1)),f(`keydown`,a,I),ee(a,()=>n(p),e=>C(p,e)),t(e,r)};i(R,e=>{l()||e(V)});var te=u(R,2),ne=e=>{var r=sn(),a=s(r);Y(a,16,()=>n(k),e=>e,(e,n)=>{var r=an(),a=s(r),o=u(a),d=e=>{var r=rn();c(e=>F(r,`aria-label`,e),[()=>Z(`scopes_editor.remove`,{scope:n})]),f(`click`,r,()=>N(n)),t(e,r)};i(o,e=>{l()||e(d)}),U(r),c(e=>{le(r,1,`badge font-mono text-xs ${e??``}`),H(a,`${n??``} `)},[()=>n.startsWith(`masks:`)?`badge-error badge-soft`:`badge-neutral badge-soft`]),t(e,r)});var o=u(a,2),d=e=>{var r=on(),i=s(r),a=G(i,!0);U(r),c(e=>H(a,e),[()=>n(g)?Z(`scopes_editor.fewer`):Z(`scopes_editor.all`,{count:n(_).length})]),f(`click`,i,()=>C(g,!n(g))),t(e,r)};i(o,e=>{n(_).length>24&&e(d)}),U(r),c(e=>F(r,`aria-label`,e),[()=>Z(`scopes_editor.held`,{count:n(_).length})]),t(e,r)},W=e=>{var n=cn(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`scopes_editor.none`)]),t(e,n)};i(te,e=>{n(_).length?e(ne):e(W,-1)}),U(L),t(e,L),B()}l([`input`,`keydown`,`mousedown`,`mousemove`,`click`]);var dn=new Set([`$$slots`,`$$events`,`$$legacy`,`label`,`value`,`type`,`onsave`,`save`]),fn=p(`<div class="join"><input/> <button type="button" class="btn btn-sm join-item"> </button></div>`),pn=p(`<input/>`),mn=p(`<label class="flex flex-col gap-1.5"><span class="field-label"> </span> <!></label>`);function $(e,n){O(n,!0);let r=z(n,`value`,15,``),a=z(n,`type`,3,`text`),o=z(n,`onsave`,3,null),l=z(n,`save`,19,()=>Z(`ui.save`)),d=D(n,dn);var p=mn(),m=s(p),h=G(m,!0),g=u(m,2),_=e=>{var n=fn(),i=s(n);oe(i,()=>({class:`input input-sm join-item w-full`,type:a(),...d}),void 0,void 0,void 0,void 0,!0);var p=u(i,2),m=G(p,!0);U(n),c(()=>H(m,l())),ee(i,r),f(`click`,p,function(...e){o()?.apply(this,e)}),t(e,n)},v=e=>{var n=pn();oe(n,()=>({class:`input input-sm w-full`,type:a(),...d}),void 0,void 0,void 0,void 0,!0),ee(n,r),t(e,n)};i(g,e=>{o()?e(_):e(v,-1)}),U(p),c(()=>H(h,n.label)),t(e,p),B()}l([`click`]);var hn=p(`<div class="alert alert-success alert-soft text-sm" role="status"> </div>`),gn=p(`<div class="alert alert-error alert-soft text-sm" role="alert"> </div>`),_n=p(`<!> <!>`,1);function vn(e,n){O(n,!0);var r=_n(),a=d(r),o=e=>{var r=hn(),i=G(r,!0);c(()=>H(i,n.feedback.notice)),t(e,r)};i(a,e=>{n.feedback.notice&&e(o)});var s=u(a,2),l=e=>{var r=gn(),i=G(r,!0);c(()=>H(i,n.feedback.failure)),t(e,r)};i(s,e=>{n.feedback.failure&&e(l)}),t(e,r),B()}var yn=p(`<div><!></div>`),bn=p(`<p class="stamp"> </p>`),xn=p(`<p class="deck"> </p>`),Sn=p(`<div class="flex w-full flex-wrap items-center gap-2 sm:w-auto"><!></div>`),Cn=p(`<div class="console-page"><!> <header class="flex flex-wrap items-end justify-between gap-x-6 gap-y-4"><div class="flex min-w-0 flex-col gap-2"><h1 tabindex="-1"> </h1> <!> <!></div> <!></header> <!></div>`);function wn(e,n){O(n,!0);let r=z(n,`lede`,3,null),a=z(n,`id`,3,null),l=z(n,`back`,3,null),d=z(n,`hero`,3,!1),f;x(()=>{document.title=n.title}),x(()=>{f?.focus({preventScroll:!0})});var p=Cn(),m=s(p),h=e=>{var n=yn();nt(s(n),{get to(){return l().to},class:`link link-hover text-sm opacity-85`,children:(e,n)=>{j();var r=o();c(()=>H(r,`← ${l().label??``}`)),t(e,r)},$$slots:{default:!0}}),U(n),t(e,n)};i(m,e=>{l()&&e(h)});var g=u(m,2),_=s(g),v=s(_);let b;var S=G(v,!0);W(v,e=>f=e,()=>f);var C=u(v,2),w=e=>{var n=bn(),r=G(n,!0);c(()=>H(r,a())),t(e,n)};i(C,e=>{a()&&e(w)});var T=u(C,2),E=e=>{var n=xn(),i=G(n,!0);c(()=>H(i,r())),t(e,n)};i(T,e=>{r()&&e(E)}),U(_);var D=u(_,2),k=e=>{var r=Sn(),i=s(r);y(i,()=>n.actions),U(r),t(e,r)};i(D,e=>{n.actions&&e(k)}),U(g);var A=u(g,2);y(A,()=>n.children),U(p),c(()=>{b=le(v,1,`headline outline-none`,null,b,{"headline-hero":d()}),H(S,n.title)}),t(e,p),B()}var Tn=p(`<button type="button"> </button>`),En=p(`<div class="range" role="group"></div> <!> <button type="button" class="btn btn-sm"> </button> <button type="button" class="btn btn-primary btn-sm"> </button>`,1),Dn=p(`<label class="flex items-center gap-2 text-sm"><input type="checkbox" class="checkbox checkbox-sm"/> </label>`),On=p(`<fieldset class="flex flex-col gap-1"><legend class="field-label"> </legend> <!></fieldset>`),kn=p(`<label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea w-full font-mono text-sm" rows="6"></textarea></label> <!> <div class="flex flex-wrap gap-2"><button type="button" class="btn btn-primary btn-sm"> </button> <button type="button" class="btn btn-ghost btn-sm"> </button></div>`,1),An=p(`<code class="tray px-1 text-xs break-all"> </code>`),jn=p(`<li class="flex flex-wrap items-baseline gap-x-2"><span class="font-mono"> </span> <span class="opacity-80"> </span> <!></li>`),Mn=p(`<ul class="flex flex-col gap-1 text-sm"></ul>`),Nn=p(`<p class="hint"> </p>`),Pn=p(`<div class="grid gap-3 sm:grid-cols-2"><!> <!></div> <!> <!> <div class="flex flex-col gap-2"><span class="legend"> </span> <!></div> <div class="flex gap-2"><button type="button" class="btn btn-primary btn-sm"> </button> <button type="button" class="btn btn-ghost btn-sm"> </button></div>`,1),Fn=p(`<p class="tray px-2 py-1 font-mono text-xs break-all"> </p>`),In=p(`<p class="text-sm opacity-85"><!></p> <!>`,1),Ln=p(`<span class="badge badge-warning badge-xs shrink-0"> </span>`),Rn=p(`<span class="badge badge-info badge-xs"> </span>`),zn=p(`<span> </span>`),Bn=p(`<span class="badge badge-success badge-xs"> </span>`),Vn=p(`<span class="badge badge-error badge-xs"> </span>`),Hn=p(`<div class="mt-1 flex flex-wrap gap-1 md:hidden"><!> <!></div>`),Un=p(`<span> </span> `,1),Wn=p(`<span class="badge badge-success badge-sm"> </span> <div class="mt-1 text-xs whitespace-nowrap opacity-80"> </div>`,1),Gn=p(`<span class="badge badge-ghost badge-sm"> </span>`),Kn=p(`<span class="badge badge-error badge-xs ml-1"> </span>`),qn=p(`<span class="badge badge-info badge-sm"> </span>`),Jn=p(`<td><div class="flex items-center gap-3"><img width="32" height="32" alt=""/> <div class="min-w-0"><!> <div class="flex flex-wrap items-center gap-1.5 text-xs opacity-75"><span class="min-w-0 break-all"> </span> <!></div> <div class="mt-1 flex flex-wrap items-center gap-1 text-xs opacity-85 md:hidden"><!></div> <!></div></div></td> <td class="hidden text-xs md:table-cell"><div class="max-w-64 truncate font-mono"></div></td> <td class="hidden md:table-cell"><!></td> <td class="hidden text-xs whitespace-nowrap opacity-85 md:table-cell"> <!></td> <td class="hidden text-xs whitespace-nowrap opacity-85 md:table-cell"><!></td>`,1),Yn=p(`<!> <!>`,1),Xn=p(`<!> <!> <!> <!> <!> <!> <!>`,1);function Zn(e,r){O(r,!0);let a=[],l=at(),p=[[`everyone`,Z(`actors.lenses.everyone`),{}],[`invited`,Z(`actors.lenses.invited`),{activated:!1}],[`waiting`,Z(`actors.lenses.waiting`),{pendingApproval:!0}],[`help`,Z(`actors.lenses.help`),{recoveryRequested:!0}],[`managers`,Z(`actors.lenses.managers`),{holds:`masks:manage`}],[`suspended`,Z(`actors.lenses.suspended`),{suspended:!0}]],m=[`openid`,`profile`,`email`,`offline_access`,`identities`],h=[Z(`actors.columns.actor`),{label:Z(`actors.columns.scopes`),hide:!0},{label:Z(`actors.columns.second_factor`),hide:!0},{label:Z(`actors.columns.signed_in_on`),hide:!0},{label:Z(`actors.columns.last_seen`),hide:!0}],g=ct(),_=T(``),v=T(w([])),y=T(!0),b=T(`everyone`),x=P(()=>p.find(([e])=>e===n(b))?.[2]??{}),S=T(!1),E=T(!1),D=T(``),k=T(w([])),N=T(w([])),L=T(null),R=!1,z=P(()=>n(L)?.filter(e=>e.outcome===`invited`).length??0);async function te(){if(C(E,!0),C(L,null),R)return;let e=await g.attempt(()=>r.api.query(`query Groups { groups { key name } }`));e&&(C(N,e.groups,!0),R=!0)}async function W(){C(oe,!0);let e=await g.attempt(()=>r.api.query(`mutation Invite($emails: [String!]!, $groups: [String!]) {
|
|
12
|
+
inviteActors(emails: $emails, groups: $groups) { outcomes { email outcome url } }
|
|
13
|
+
}`,{emails:n(D).split(/[\s,;]+/).filter(Boolean),groups:n(k)}));C(oe,!1),e&&(C(L,e.inviteActors.outcomes,!0),C(E,!1),C(D,``),ue())}let re=T(``),ie=T(``),K=T(``),q=T(w([...m])),J=T(w([])),ae=T(8),oe=T(!1),se=T(null);async function ce(){C(y,!0);try{let e=await r.api.query(`
|
|
14
|
+
query Actors(
|
|
15
|
+
$search: String, $activated: Boolean, $holds: String, $pendingApproval: Boolean,
|
|
16
|
+
$recoveryRequested: Boolean, $suspended: Boolean, $afterId: ID, $limit: Int
|
|
17
|
+
) {
|
|
18
|
+
actors(
|
|
19
|
+
search: $search, activated: $activated, holds: $holds, pendingApproval: $pendingApproval,
|
|
20
|
+
recoveryRequested: $recoveryRequested, suspended: $suspended, afterId: $afterId, limit: $limit
|
|
21
|
+
) {
|
|
22
|
+
uuid identifier nickname name email emailVerified otpEnabled backupCodesRemaining
|
|
23
|
+
lastLoginAt scopes activated invitedAt
|
|
24
|
+
avatars { photo identicon }
|
|
25
|
+
|
|
26
|
+
sessions { id }
|
|
27
|
+
devices { id blockedAt }
|
|
28
|
+
|
|
29
|
+
}
|
|
30
|
+
actorCount(
|
|
31
|
+
search: $search, activated: $activated, holds: $holds, pendingApproval: $pendingApproval,
|
|
32
|
+
recoveryRequested: $recoveryRequested, suspended: $suspended
|
|
33
|
+
)
|
|
34
|
+
}
|
|
35
|
+
`,{search:n(_).trim()||null,activated:n(x).activated??null,holds:n(x).holds??null,pendingApproval:n(x).pendingApproval??null,recoveryRequested:n(x).recoveryRequested??null,suspended:n(x).suspended??null,afterId:l.cursor,limit:l.size});C(v,e.actors,!0),l.counted(e.actorCount)}catch(e){g.blame(e)}finally{C(y,!1)}}function ue(){l.reset(),ce()}function de(e){e===`forward`?l.forward(n(v).at(-1)?.uuid):l.back(),ce()}function fe(e){C(b,e,!0),ue()}ce();async function pe(){if(C(re,``),C(ie,``),C(K,``),C(q,[...m],!0),C(se,null),C(S,!0),g.clear(),n(J).length)return;let e=await g.attempt(()=>r.api.query(`query Scopes { scopesSupported minimumPassword }`));e&&(C(J,e.scopesSupported,!0),C(ae,e.minimumPassword,!0))}function me(){C(S,!1),g.clear()}async function he(){C(oe,!0);let e=await g.attempt(()=>r.api.query(`
|
|
36
|
+
mutation Create($nickname: String, $email: String, $password: String, $scopes: [String!]) {
|
|
37
|
+
createActor(nickname: $nickname, email: $email, password: $password, scopes: $scopes) {
|
|
38
|
+
delivered url actor { uuid identifier activated }
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
`,{nickname:n(re).trim()||null,email:n(ie).trim()||null,password:n(K)||null,scopes:n(q)}));C(oe,!1),e&&(C(se,e.createActor,!0),C(S,!1),l.reset(),await ce())}let ge=e=>e.devices.some(e=>e.blockedAt),_e=e=>[Z(`actors.sessions`,{count:e.sessions.length}),Z(`actors.devices`,{count:e.devices.length})].join(` · `);{let m=e=>{var r=En(),i=d(r);Y(i,21,()=>p,([e,t])=>e,(e,r)=>{var i=P(()=>I(n(r),2));let a=()=>n(i)[0],o=()=>n(i)[1];var s=Tn(),l=G(s,!0);c(()=>{F(s,`aria-pressed`,n(b)===a()),H(l,o())}),f(`click`,s,()=>fe(a())),t(e,s)}),U(i);var a=u(i,2);{let e=P(()=>Z(`actors.search`)),t=P(()=>Z(`actors.search_placeholder`));jt(a,{get label(){return n(e)},get placeholder(){return n(t)},onsearch:ue,get value(){return n(_)},set value(e){C(_,e,!0)}})}var o=u(a,2),s=G(o,!0),l=u(o,2),m=G(l,!0);c((e,t,n)=>{F(i,`aria-label`,e),H(s,t),H(m,n)},[()=>Z(`actors.who`),()=>Z(`actors.invite_many`),()=>Z(`actors.add`)]),f(`click`,o,te),f(`click`,l,pe),t(e,r)},x=P(()=>Z(`actors.title`));wn(e,{get title(){return n(x)},actions:m,children:(e,p)=>{var m=Xn(),x=d(m);vn(x,{get feedback(){return g.state}});var w=u(x,2),T=e=>{{let r=P(()=>Z(`actors.invites.title`)),o=P(()=>Z(`actors.invites.lede`));Q(e,{get title(){return n(r)},get lede(){return n(o)},children:(e,r)=>{var o=kn(),l=d(o),p=s(l),m=G(p,!0),h=u(p,2);ne(h),U(l);var g=u(l,2),_=e=>{var r=On(),i=s(r),o=G(i,!0),l=u(i,2);Y(l,17,()=>n(N),e=>e.key,(e,r)=>{var i=Dn(),o=s(i);M(o);var l,d=u(o);U(i),c(()=>{l!==(l=n(r).key)&&(o.value=(o.__value=l)??``),H(d,` ${n(r).name??``}`)}),A(a,[],o,()=>(n(r).key,n(k)),e=>C(k,e)),t(e,i)}),U(r),c(e=>H(o,e),[()=>Z(`actors.invites.groups`)]),t(e,r)};i(g,e=>{n(N).length&&e(_)});var v=u(g,2),y=s(v),b=G(y,!0),x=u(y,2),S=G(x,!0);U(v),c((e,t,n,r)=>{H(m,e),y.disabled=t,H(b,n),H(S,r)},[()=>Z(`actors.invites.addresses`),()=>n(oe)||!n(D).trim(),()=>n(oe)?Z(`actors.form.adding`):Z(`actors.invites.send`),()=>Z(`actors.form.cancel`)]),ee(h,()=>n(D),e=>C(D,e)),f(`click`,y,W),f(`click`,x,()=>C(E,!1)),t(e,o)},$$slots:{default:!0}})}};i(w,e=>{n(E)&&e(T)});var O=u(w,2),I=e=>{{let r=P(()=>Z(`actors.invites.done`,{count:n(z)}));Q(e,{get title(){return n(r)},children:(e,r)=>{var a=Mn();Y(a,21,()=>n(L),e=>e.email,(e,r)=>{var a=jn(),o=s(a),l=G(o,!0),d=u(o,2),f=G(d,!0),p=u(d,2),m=e=>{var i=An(),a=G(i,!0);c(()=>H(a,n(r).url)),t(e,i)};i(p,e=>{n(r).url&&e(m)}),U(a),c(e=>{H(l,n(r).email),H(f,e)},[()=>Z(`actors.invites.outcomes.${n(r).outcome}`)]),t(e,a)}),U(a),t(e,a)},$$slots:{default:!0}})}};i(O,e=>{n(L)&&e(I)});var R=u(O,2),B=e=>{{let r=P(()=>Z(`actors.add`));Q(e,{get title(){return n(r)},children:(e,r)=>{var a=Pn(),o=d(a),l=s(o);{let e=P(()=>Z(`actors.form.nickname`));$(l,{get label(){return n(e)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,placeholder:`ada`,get value(){return n(re)},set value(e){C(re,e,!0)}})}var p=u(l,2);{let e=P(()=>Z(`actors.form.email`));$(p,{get label(){return n(e)},type:`email`,placeholder:`ada@example.com`,get value(){return n(ie)},set value(e){C(ie,e,!0)}})}U(o);var m=u(o,2);{let e=P(()=>Z(`actors.form.password`)),t=P(()=>Z(`actors.form.password_placeholder`));$(m,{get label(){return n(e)},type:`password`,autocomplete:`new-password`,get placeholder(){return n(t)},get value(){return n(K)},set value(e){C(K,e,!0)}})}var h=u(m,2),g=e=>{var r=Nn(),i=G(r,!0);c(e=>H(i,e),[()=>Z(`actors.form.minimum`,{count:n(ae)})]),t(e,r)};i(h,e=>{n(K)&&e(g)});var _=u(h,2),v=s(_),y=G(v,!0);un(u(v,2),{get value(){return n(q)},get available(){return n(J)},onchange:e=>C(q,e,!0)}),U(_);var b=u(_,2),x=s(b),S=G(x,!0),w=u(x,2),T=G(w,!0);U(b),c((e,t,n,r)=>{H(y,e),x.disabled=t,H(S,n),H(T,r)},[()=>Z(`actors.form.scopes`),()=>n(oe)||!(n(re).trim()||n(ie).trim()),()=>n(oe)?Z(`actors.form.adding`):n(K)?Z(`actors.form.create`):Z(`actors.form.invite`),()=>Z(`actors.form.cancel`)]),f(`click`,x,he),f(`click`,w,me),t(e,a)},$$slots:{default:!0}})}};i(R,e=>{n(S)&&e(B)});var te=u(R,2),ce=e=>{{let r=P(()=>n(se).actor.activated?Z(`actors.created.account`):Z(`actors.created.invitation`));Q(e,{get title(){return n(r)},children:(e,r)=>{var a=In(),l=d(a),f=s(l),p=e=>{var r=o();c((e,t)=>H(r,`${e??``}${t??``}`),[()=>Z(`actors.created.can_sign_in`,{identifier:n(se).actor.identifier}),()=>n(se).url?` ${Z(`actors.created.confirm_link`)}`:``]),t(e,r)},m=e=>{var n=o();c(e=>H(n,e),[()=>Z(`actors.created.emailed`)]),t(e,n)},h=e=>{var n=o();c(e=>H(n,e),[()=>Z(`actors.created.pass_along`)]),t(e,n)};i(f,e=>{n(se).actor.activated?e(p):n(se).delivered?e(m,1):e(h,-1)}),U(l);var g=u(l,2),_=e=>{var r=Fn(),i=G(r,!0);c(()=>H(i,n(se).url)),t(e,r)};i(g,e=>{n(se).url&&e(_)}),t(e,a)},$$slots:{default:!0}})}};i(te,e=>{n(se)&&e(ce)});var ue=u(te,2),fe=e=>{it(e,{})},pe=e=>{var r=Yn(),a=d(r);{let e=e=>{var r=V(),a=d(r);Y(a,17,()=>n(v),e=>e.uuid,(e,r)=>{{let a=P(()=>`/actors/${n(r).uuid}`);kt(e,{get to(){return n(a)},children:(e,a)=>{var l=Jn(),f=d(l),p=s(f),m=s(p);let h;var g=u(m,2),_=s(g);{let e=P(()=>`/actors/${n(r).uuid}`);nt(_,{get to(){return n(e)},class:`link link-hover font-medium`,children:(e,i)=>{j();var a=o();c(()=>H(a,n(r).identifier)),t(e,a)},$$slots:{default:!0}})}var v=u(_,2),y=s(v),b=G(y),x=u(y,2),S=e=>{var n=Ln(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`actors.unconfirmed`)]),t(e,n)};i(x,e=>{n(r).email&&!n(r).emailVerified&&e(S)}),U(v);var C=u(v,2),w=s(C),T=e=>{var n=Rn(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`actors.invited`)]),t(e,n)},E=e=>{var i=zn(),a=G(i,!0);c(e=>H(a,e),[()=>Z(`actors.last_seen`,{when:_t(n(r).lastLoginAt,Z(`actors.never`))})]),t(e,i)};i(w,e=>{n(r).activated?e(E,-1):e(T)}),U(C);var D=u(C,2),O=e=>{var a=Hn(),o=s(a),l=e=>{var n=Bn(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`actors.authenticator`)]),t(e,n)};i(o,e=>{n(r).otpEnabled&&e(l)});var d=u(o,2),f=e=>{var n=Vn(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`actors.blocked`)]),t(e,n)},p=P(()=>ge(n(r)));i(d,e=>{n(p)&&e(f)}),U(a),t(e,a)},k=P(()=>n(r).otpEnabled||ge(n(r)));i(D,e=>{n(k)&&e(O)}),U(g),U(p),U(f);var A=u(f,2),M=s(A);Y(M,20,()=>n(r).scopes,e=>e,(e,n)=>{var r=Un(),i=d(r);let a;var o=G(i,!0),s=u(i,1,!0);s.nodeValue=` `,c(e=>{a=le(i,1,`scope`,null,a,{"scope-privileged":e}),H(o,n)},[()=>n.startsWith(`masks:`)]),t(e,r)}),U(M),U(A);var N=u(A,2),I=s(N),L=e=>{var i=Wn(),a=d(i),o=G(a,!0),s=u(a,2),l=G(s,!0);c((e,t)=>{H(o,e),H(l,t)},[()=>Z(`actors.authenticator`),()=>Z(`actors.backup_codes`,{count:n(r).backupCodesRemaining})]),t(e,i)},R=e=>{var n=Gn(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`actors.password`)]),t(e,n)};i(I,e=>{n(r).otpEnabled?e(L):e(R,-1)}),U(N);var z=u(N,2),B=s(z),V=u(B),ee=e=>{var n=Kn(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`actors.blocked`)]),t(e,n)},te=P(()=>ge(n(r)));i(V,e=>{n(te)&&e(ee)}),U(z);var ne=u(z,2),W=s(ne),re=e=>{var n=qn(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`actors.invited`)]),t(e,n)},ie=e=>{var i=o();c(e=>H(i,e),[()=>_t(n(r).lastLoginAt,Z(`actors.never`))]),t(e,i)};i(W,e=>{n(r).activated?e(ie,-1):e(re)}),U(ne),c((e,t,i)=>{F(m,`src`,`${n(r).avatars.photo??n(r).avatars.identicon}?size=32`),h=le(m,1,`size-8 shrink-0 rounded object-cover`,null,h,{drawn:!n(r).avatars.photo}),H(b,`${n(r).name?`${n(r).name} · `:``}${e??``}`),F(M,`title`,t),H(B,`${i??``} `)},[()=>n(r).email??Z(`actors.no_email`),()=>bt(n(r).scopes),()=>_e(n(r))]),t(e,l)},$$slots:{default:!0}})}}),t(e,r)},r=P(()=>n(_).trim()?Z(`actors.empty.search`,{search:n(_).trim()}):Z(`actors.empty.${n(b)}`));Pt(a,{get columns(){return h},get count(){return n(v).length},get empty(){return n(r)},rows:e,$$slots:{rows:!0}})}st(u(a,2),{get pages(){return l},get shown(){return n(v).length},get busy(){return n(y)},onpage:de}),t(e,r)};i(ue,e=>{n(y)&&n(v).length===0?e(fe):e(pe,-1)}),Zt(u(ue,2),{get api(){return r.api},get feedback(){return g}}),t(e,m)},$$slots:{actions:!0,default:!0}})}B()}l([`click`]);var Qn=p(`<p class="text-sm opacity-85"> </p>`),$n=p(`<span class="text-sm font-medium"> </span>`),er=p(`<span class="badge badge-success badge-xs"> </span>`),tr=p(`<span class="badge badge-warning badge-xs"> </span>`),nr=p(`<span class="badge badge-info badge-xs"> </span>`),rr=p(`<span> </span>`),ir=p(`<div class="flex flex-wrap items-baseline justify-between gap-x-3 border-l-2 border-base-300 pl-2 text-xs"><span><!> <span class="opacity-80"> </span></span> <button type="button" class="link text-error"> </button></div>`),ar=p(`<li class="slat"><div class="flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1"><span class="flex flex-wrap items-baseline gap-2"><!> <!> <!> <!></span> <button type="button" class="link text-xs text-error"> </button></div> <span class="truncate text-xs opacity-75"> </span> <div class="flex flex-wrap gap-x-4 text-xs opacity-80"><span> </span> <!></div> <!></li>`),or=p(`<ul class="slats"></ul>`);function sr(e,r){O(r,!0);let a=z(r,`showActor`,3,!1);async function l(e,t){confirm(Z(`connections.stop_confirm`,{client:t.client.name,provider:e.provider.name}))&&await r.feedback.attempt(()=>r.api.query(`
|
|
42
|
+
mutation Stop($id: ID!) {
|
|
43
|
+
revokeDelegation(id: $id) { delegation { id revokedAt } }
|
|
44
|
+
}
|
|
45
|
+
`,{id:t.id}),Z(`connections.stopped`,{client:t.client.name}))&&await r.onchange()}async function p(e){let t=a()?e.actor.identifier:e.provider.name;confirm(Z(`connections.disconnect_confirm`,{held:t}))&&await r.feedback.attempt(()=>r.api.query(`
|
|
46
|
+
mutation Revoke($id: ID!) {
|
|
47
|
+
revokeConnection(id: $id) { connection { id revokedAt } }
|
|
48
|
+
}
|
|
49
|
+
`,{id:e.id}),Z(`connections.disconnected`))&&await r.onchange()}var m=V(),h=d(m),g=e=>{var n=Qn(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`connections.empty`)]),t(e,n)},_=e=>{var d=or();Y(d,21,()=>r.rows,e=>e.id,(e,r)=>{var d=ar(),m=s(d),h=s(m),g=s(h),_=e=>{{let i=P(()=>`/actors/${n(r).actor.uuid}`);nt(e,{get to(){return n(i)},class:`link link-hover text-sm font-medium`,children:(e,i)=>{j();var a=o();c(()=>H(a,n(r).actor.identifier)),t(e,a)},$$slots:{default:!0}})}},v=e=>{var i=$n(),a=G(i,!0);c(()=>H(a,n(r).provider.name)),t(e,i)};i(g,e=>{a()?e(_):e(v,-1)});var y=u(g,2),b=e=>{var n=er(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`connections.badges.signs_in`)]),t(e,n)};i(y,e=>{n(r).signedInAt&&e(b)});var x=u(y,2),S=e=>{var n=tr(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`connections.badges.unconfirmed`)]),t(e,n)};i(x,e=>{n(r).email&&!n(r).emailVerified&&e(S)});var C=u(x,2),w=e=>{var n=nr(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`connections.badges.delegable`)]),t(e,n)};i(C,e=>{n(r).delegable&&e(w)}),U(h);var T=u(h,2),E=G(T,!0);U(m);var D=u(m,2),O=G(D,!0),k=u(D,2),A=s(k),M=G(A,!0),N=u(A,2),I=e=>{var i=rr(),a=G(i,!0);c((e,t)=>{F(i,`title`,e),H(a,t)},[()=>vt(n(r).signedInAt),()=>Z(`connections.signed_in`,{when:yt(n(r).signedInAt)})]),t(e,i)};i(N,e=>{n(r).signedInAt&&e(I)}),U(k);var L=u(k,2);Y(L,17,()=>n(r).delegations??[],e=>e.id,(e,i)=>{var a=ir(),d=s(a),p=s(d);{let e=P(()=>`/clients/${n(i).client.clientId}`);nt(p,{get to(){return n(e)},class:`link link-hover`,children:(e,r)=>{j();var a=o();c(()=>H(a,n(i).client.name)),t(e,a)},$$slots:{default:!0}})}var m=u(p,2),h=G(m,!0);U(d);var g=u(d,2),_=G(g,!0);U(a),c((e,t)=>{H(h,e),H(_,t)},[()=>n(i).releasedAt?Z(`connections.can_use_last`,{when:yt(n(i).releasedAt)}):Z(`connections.can_use`),()=>Z(`connections.stop`)]),f(`click`,g,()=>l(n(r),n(i))),t(e,a)}),U(d),c((e,t,i)=>{H(E,e),H(O,n(r).label??n(r).email??n(r).subject),F(A,`title`,t),H(M,i)},[()=>Z(`connections.disconnect`),()=>vt(n(r).connectedAt),()=>Z(`connections.connected`,{when:yt(n(r).connectedAt)})]),f(`click`,T,()=>p(n(r))),t(e,d)}),U(d),t(e,d)};i(h,e=>{r.rows.length===0?e(g):e(_,-1)}),t(e,m),B()}l([`click`]);var cr=p(`<p class="text-sm opacity-85"> </p>`),lr=p(`<span> </span>`),ur=p(`<span class="truncate font-mono"> </span>`),dr=p(`<li class="flex flex-wrap gap-x-2"><span class="scope"> </span> <span class="truncate font-mono opacity-80"> </span> <span class="opacity-80"> </span></li>`),fr=p(`<ul class="flex flex-col gap-0.5 text-xs"></ul>`),pr=p(`<li class="slat"><div class="flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1"><!> <button type="button" class="link text-xs text-error"> </button></div> <div class="flex flex-wrap gap-1"></div> <div class="flex flex-wrap gap-x-4 text-xs opacity-80"><!> <span> </span> <!></div> <!></li>`),mr=p(`<ul class="slats"></ul>`);function hr(e,r){O(r,!0);let a=z(r,`showActor`,3,!1);async function l(e){let t=a()?e.actor.identifier:e.client.name;confirm(Z(`consents.revoke_confirm`,{held:t}))&&await r.feedback.attempt(()=>r.api.query(`
|
|
50
|
+
mutation Revoke($id: ID!) {
|
|
51
|
+
revokeConsent(id: $id) { consent { id revokedAt } }
|
|
52
|
+
}
|
|
53
|
+
`,{id:e.id}),Z(`consents.revoked`))&&await r.onchange()}var p=V(),m=d(p),h=e=>{var n=cr(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`consents.empty`)]),t(e,n)},g=e=>{var d=mr();Y(d,21,()=>r.rows,e=>e.id,(e,r)=>{var d=pr(),p=s(d),m=s(p),h=e=>{{let i=P(()=>`/actors/${n(r).actor.uuid}`);nt(e,{get to(){return n(i)},class:`link link-hover text-sm font-medium`,children:(e,i)=>{j();var a=o();c(()=>H(a,n(r).actor.identifier)),t(e,a)},$$slots:{default:!0}})}},g=e=>{{let i=P(()=>`/clients/${n(r).client.clientId}`);nt(e,{get to(){return n(i)},class:`link link-hover text-sm font-medium`,children:(e,i)=>{j();var a=o();c(()=>H(a,n(r).client.name)),t(e,a)},$$slots:{default:!0}})}};i(m,e=>{a()?e(h):e(g,-1)});var _=u(m,2),v=G(_,!0);U(p);var y=u(p,2);Y(y,20,()=>n(r).scopes,e=>e,(e,n)=>{var r=lr();let i;var a=G(r,!0);c(e=>{i=le(r,1,`scope`,null,i,{"scope-privileged":e}),H(a,n)},[()=>n.startsWith(`masks:`)]),t(e,r)}),U(y);var x=u(y,2),S=s(x),C=e=>{var i=ur(),a=G(i,!0);c((e,t)=>{F(i,`title`,e),H(a,t)},[()=>bt(n(r).audience),()=>bt(n(r).audience)]),t(e,i)};i(S,e=>{n(r).audience.length&&e(C)});var w=u(S,2),T=G(w,!0),E=u(w,2),D=e=>{var i=lr(),a=G(i,!0);c((e,t)=>{F(i,`title`,e),H(a,t)},[()=>vt(n(r).expiresAt),()=>Z(`consents.asks_again`,{when:vt(n(r).expiresAt)})]),t(e,i)};i(E,e=>{n(r).expiresAt&&e(D)}),U(x);var O=u(x,2),k=e=>{var i=fr();Y(i,21,()=>n(r).authorizationDetails,b,(e,r)=>{var i=dr(),a=s(i),o=G(a,!0),l=u(a,2),d=G(l,!0),f=u(l,2),p=G(f,!0);U(i),c((e,t)=>{H(o,n(r).entry.type),H(d,e),H(p,t)},[()=>JSON.stringify(n(r).entry),()=>Z(`consents.until`,{when:vt(n(r).expires_at)})]),t(e,i)}),U(i),t(e,i)};i(O,e=>{n(r).authorizationDetails?.length&&e(k)}),U(d),c((e,t,n)=>{H(v,e),F(w,`title`,t),H(T,n)},[()=>Z(`consents.revoke`),()=>vt(n(r).updatedAt),()=>Z(`consents.last_asked`,{when:yt(n(r).updatedAt)})]),f(`click`,_,()=>l(n(r))),t(e,d)}),U(d),t(e,d)};i(m,e=>{r.rows.length===0?e(h):e(g,-1)}),t(e,p),B()}l([`click`]);var gr=new Set([`logout.undelivered`,`login.refused`,`login.throttled`,`refresh.reused`,`device.blocked`,`actor.deleted`,`authenticator.disabled`,`connection.refused`,`delegation.refused`]),_r=new Set([`password.changed`,`password.reset_completed`,`actor.scopes_changed`,`actor.suspended`,`provisioning_token.issued`,`provisioning_token.revoked`,`ldap_credential.issued`,`ldap_credential.revoked`,`client.secret_rotated`,`client.logo_refused`,`signing_key.rotated`,`signing_key.activated`,`backup_code.spent`,`connection.unlinked`,`consent.revoked`,`delegation.granted`,`delegation.revoked`]);function vr(e){return gr.has(e)?`bad`:_r.has(e)?`watch`:`plain`}function yr(e){return Object.entries(e??{}).filter(([,e])=>e!==null&&e!==``&&!(Array.isArray(e)&&!e.length)).map(([e,t])=>[e.replace(/_/g,` `),br(t)])}function br(e){return Array.isArray(e)?e.join(` `):typeof e==`boolean`?Z(e?`event_labels.yes`:`event_labels.no`):String(e)}var xr=p(`<p class="text-sm opacity-80"> </p>`),Sr=p(`<span class="hint"> <!></span>`),Cr=p(`<span><span class="opacity-85"> </span> </span>`),wr=p(`<div class="flex flex-wrap gap-x-4 text-xs opacity-80"></div>`),Tr=p(`<span class="font-mono"> </span>`),Er=p(`<span class="truncate"> </span>`),Dr=p(`<div class="flex flex-wrap gap-x-4 text-xs opacity-75"><!> <!></div>`),Or=p(`<li class="slat"><div class="flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1"><span class="flex flex-wrap items-baseline gap-2"><span> </span> <!> <!> <!></span> <span class="text-xs whitespace-nowrap opacity-80"> </span></div> <!> <!></li>`),kr=p(`<button type="button" class="btn btn-ghost btn-sm self-start"> </button>`),Ar=p(`<ol class="slats"></ol> <!>`,1);function jr(e,r){O(r,!0);let a=z(r,`showActor`,3,!0),l=z(r,`empty`,19,()=>Z(`events.empty`)),p=z(r,`limit`,3,5),m=T(!1),h=P(()=>n(m)?r.events:r.events.slice(0,p()));var g=V(),_=d(g),v=e=>{var n=xr(),r=G(n,!0);c(()=>H(r,l())),t(e,n)},y=e=>{var l=Ar(),g=d(l);Y(g,21,()=>n(h),e=>e.id,(e,r)=>{var l=Or(),d=s(l),f=s(d),p=s(f);let m;var h=G(p,!0),g=u(p,2),_=e=>{{let i=P(()=>`/actors/${n(r).actor.uuid}`);nt(e,{get to(){return n(i)},class:`link link-hover text-xs`,children:(e,i)=>{j();var a=o();c(()=>H(a,n(r).actor.identifier)),t(e,a)},$$slots:{default:!0}})}};i(g,e=>{a()&&n(r).actor&&e(_)});var v=u(g,2),y=e=>{var i=Sr(),a=s(i),l=u(a);{let e=P(()=>`/actors/${n(r).by.uuid}`);nt(l,{get to(){return n(e)},class:`link link-hover`,children:(e,i)=>{j();var a=o();c(()=>H(a,n(r).by.identifier)),t(e,a)},$$slots:{default:!0}})}U(i),c(e=>H(a,`${e??``} `),[()=>Z(`events.by`)]),t(e,i)};i(v,e=>{n(r).by&&n(r).by.uuid!==n(r).actor?.uuid&&e(y)});var b=u(v,2),x=e=>{{let i=P(()=>`/clients/${n(r).client.clientId}`);nt(e,{get to(){return n(i)},class:`badge badge-ghost badge-xs`,children:(e,i)=>{j();var a=o();c(()=>H(a,n(r).client.name)),t(e,a)},$$slots:{default:!0}})}};i(b,e=>{n(r).client&&e(x)}),U(f);var S=u(f,2),C=G(S,!0);U(d);var w=u(d,2),T=e=>{var i=wr();Y(i,21,()=>yr(n(r).details),([e,t])=>e,(e,r)=>{var i=P(()=>I(n(r),2));let a=()=>n(i)[0],o=()=>n(i)[1];var l=Cr(),d=s(l),f=G(d,!0),p=u(d);U(l),c(()=>{H(f,a()),H(p,` ${o()??``}`)}),t(e,l)}),U(i),t(e,i)},E=P(()=>yr(n(r).details).length);i(w,e=>{n(E)&&e(T)});var D=u(w,2),O=e=>{var a=Dr(),o=s(a),l=e=>{var i=Tr(),a=G(i,!0);c(()=>H(a,n(r).ipAddress)),t(e,i)};i(o,e=>{n(r).ipAddress&&e(l)});var d=u(o,2),f=e=>{var i=Er(),a=G(i,!0);c(()=>H(a,n(r).device.label)),t(e,i)};i(d,e=>{n(r).device&&e(f)}),U(a),t(e,a)};i(D,e=>{(n(r).ipAddress||n(r).device)&&e(O)}),U(l),c((e,t,i,a)=>{m=le(p,1,`text-sm font-medium`,null,m,{"text-error":e,"text-warning":t}),F(p,`title`,n(r).action),H(h,n(r).label),F(S,`title`,i),H(C,a)},[()=>vr(n(r).action)===`bad`,()=>vr(n(r).action)===`watch`,()=>vt(n(r).createdAt),()=>yt(n(r).createdAt)]),t(e,l)}),U(g);var _=u(g,2),v=e=>{var n=kr(),i=G(n,!0);c(e=>H(i,e),[()=>Z(`events.more`,{count:r.events.length-p()})]),f(`click`,n,()=>C(m,!0)),t(e,n)};i(_,e=>{!n(m)&&r.events.length>p()&&e(v)}),t(e,l)};i(_,e=>{r.events.length===0?e(v):e(y,-1)}),t(e,g),B()}l([`click`]);var Mr=p(`<p class="text-sm opacity-75"> </p>`),Nr=p(`<li class="slat"><div class="flex items-baseline justify-between gap-3"><span class="font-mono text-sm"> </span> <button type="button" class="link text-xs text-error"> </button></div> <span class="truncate text-xs opacity-75"> </span> <div class="flex flex-wrap gap-x-4 text-xs opacity-80"><span> </span> <span> </span></div></li>`),Pr=p(`<button type="button" class="btn btn-ghost btn-sm self-start"> </button>`),Fr=p(`<ul class="slats"></ul> <!>`,1),Ir=p(`<span class="badge badge-error badge-xs"> </span>`),Lr=p(`<span class="badge badge-warning badge-xs"> </span>`),Rr=p(`<button type="button" class="link text-xs"> </button>`),zr=p(`<button type="button" class="link text-xs text-error"> </button>`),Br=p(`<li class="slat"><div class="flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1"><span class="flex flex-wrap items-baseline gap-2"><!> <!></span> <span class="flex items-baseline gap-3"><button type="button" class="link text-xs"> </button> <!></span></div> <span class="truncate text-xs opacity-75"> </span> <div class="flex flex-wrap gap-x-4 text-xs opacity-80"><span class="font-mono"> </span> <span> </span></div></li>`),Vr=p(`<div class="flex flex-col gap-5"><div><section class="flex min-w-0 flex-col gap-2.5"><h3 class="legend"> </h3> <!></section> <section class="flex min-w-0 flex-col gap-2.5"><h3 class="legend"> </h3> <!></section></div> <button type="button" class="btn btn-sm btn-error btn-outline self-start"> </button></div>`);function Hr(e,r){O(r,!0);let a=z(r,`columns`,3,!1);async function l(e,t,n,i=null){(!i||confirm(i))&&await r.feedback.attempt(()=>r.api.query(e,t),n)&&await r.onchange()}let p=e=>l(`mutation Revoke($id: ID!) { revokeSession(id: $id) { session { revokedAt } } }`,{id:e.id},Z(`presence.session_revoked`),Z(`presence.revoke_question`)),m=(e,t,n,r=null)=>l(`mutation Act($id: ID!) { ${e}(id: $id) { device { id } } }`,{id:t.id},n,r),h=e=>m(`signOutDevice`,e,Z(`presence.device_signed_out`,{label:e.label})),g=e=>m(`blockDevice`,e,Z(`presence.device_blocked`,{label:e.label}),Z(`presence.block_question`,{label:e.label})),_=e=>m(`unblockDevice`,e,Z(`presence.device_unblocked`,{label:e.label})),v=()=>l(`mutation SignOut($uuid: ID!) { signOutActor(uuid: $uuid) { actor { uuid } } }`,{uuid:r.actor.uuid},Z(`presence.signed_out_everywhere`),Z(`presence.sign_out_everywhere_question`,{identifier:r.actor.identifier})),y=T(!1),b=T(!1),x=P(()=>n(y)?r.actor.sessions:r.actor.sessions.slice(0,4)),S=P(()=>n(b)?r.actor.devices:r.actor.devices.slice(0,4));var w=Vr(),E=s(w),D=s(E),k=s(D),A=G(k,!0),M=u(k,2),N=e=>{var n=Mr(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`presence.no_sessions`)]),t(e,n)},I=e=>{var a=Fr(),o=d(a);Y(o,21,()=>n(x),e=>e.id,(e,r)=>{var i=Nr(),a=s(i),o=s(a),l=G(o,!0),d=u(o,2),m=G(d,!0);U(a);var h=u(a,2),g=G(h,!0),_=u(h,2),v=s(_),y=G(v,!0),b=u(v,2),x=G(b,!0);U(_),U(i),c((e,t,i,a)=>{H(l,n(r).ipAddress??`—`),H(m,e),H(g,n(r).userAgent??``),F(v,`title`,t),H(y,i),H(x,a)},[()=>Z(`presence.revoke`),()=>vt(n(r).authenticatedAt),()=>Z(`presence.signed_in`,{when:yt(n(r).authenticatedAt)}),()=>Z(`presence.expires`,{when:_t(n(r).expiresAt)})]),f(`click`,d,()=>p(n(r))),t(e,i)}),U(o);var l=u(o,2),m=e=>{var n=Pr(),i=G(n,!0);c(e=>H(i,e),[()=>Z(`presence.show_more`,{count:r.actor.sessions.length-4})]),f(`click`,n,()=>C(y,!0)),t(e,n)};i(l,e=>{!n(y)&&r.actor.sessions.length>4&&e(m)}),t(e,a)};i(M,e=>{r.actor.sessions.length===0?e(N):e(I,-1)}),U(D);var L=u(D,2),R=s(L),V=G(R,!0),ee=u(R,2),te=e=>{var n=Mr(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`presence.no_devices`)]),t(e,n)},ne=e=>{var a=Fr(),l=d(a);Y(l,21,()=>n(S),e=>e.id,(e,r)=>{var a=Br(),l=s(a),d=s(l),p=s(d);{let e=P(()=>`/actors/devices/${n(r).id}`);nt(p,{get to(){return n(e)},class:`link link-hover text-sm font-medium`,children:(e,i)=>{j();var a=o();c(()=>H(a,n(r).label)),t(e,a)},$$slots:{default:!0}})}var m=u(p,2),v=e=>{var n=Ir(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`presence.blocked`)]),t(e,n)},y=e=>{var n=Lr(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`presence.unrecognised`)]),t(e,n)};i(m,e=>{n(r).blockedAt?e(v):n(r).known||e(y,1)}),U(d);var b=u(d,2),x=s(b),S=G(x,!0),C=u(x,2),w=e=>{var i=Rr(),a=G(i,!0);c(e=>H(a,e),[()=>Z(`presence.unblock`)]),f(`click`,i,()=>_(n(r))),t(e,i)},T=e=>{var i=zr(),a=G(i,!0);c(e=>H(a,e),[()=>Z(`presence.block`)]),f(`click`,i,()=>g(n(r))),t(e,i)};i(C,e=>{n(r).blockedAt?e(w):e(T,-1)}),U(b),U(l);var E=u(l,2),D=G(E,!0),O=u(E,2),k=s(O),A=G(k,!0),M=u(k,2),N=G(M,!0);U(O),U(a),c((e,t,i)=>{H(S,e),H(D,n(r).userAgent??n(r).category),H(A,n(r).ipAddress??`—`),F(M,`title`,t),H(N,i)},[()=>Z(`presence.sign_out`),()=>vt(n(r).lastSeenAt),()=>Z(`presence.last_seen`,{when:yt(n(r).lastSeenAt)})]),f(`click`,x,()=>h(n(r))),t(e,a)}),U(l);var p=u(l,2),m=e=>{var n=Pr(),i=G(n,!0);c(e=>H(i,e),[()=>Z(`presence.show_more`,{count:r.actor.devices.length-4})]),f(`click`,n,()=>C(b,!0)),t(e,n)};i(p,e=>{!n(b)&&r.actor.devices.length>4&&e(m)}),t(e,a)};i(ee,e=>{r.actor.devices.length===0?e(te):e(ne,-1)}),U(L),U(E);var W=u(E,2),re=G(W,!0);U(w),c((e,t,n)=>{le(E,1,`grid items-start gap-5 ${a()?`lg:grid-cols-2`:``}`),H(A,e),H(V,t),H(re,n)},[()=>Z(`presence.sessions`),()=>Z(`presence.devices`),()=>Z(`presence.sign_out_everywhere`)]),f(`click`,W,v),t(e,w),B()}l([`click`]);var Ur=p(`<p class="text-sm opacity-85"> </p>`),Wr=p(`<span class="text-xs opacity-75"> </span>`),Gr=p(`<button type="button" class="link text-xs text-error"> </button>`),Kr=p(`<span> </span>`),qr=p(`<span class="truncate font-mono"> </span>`),Jr=p(`<span class="truncate"> </span>`),Yr=p(`<li class="slat"><div class="flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1"><span class="flex flex-wrap items-baseline gap-2"><span> </span> <!> <!></span> <span class="flex items-baseline gap-3"><button type="button" class="link text-xs text-error"> </button> <!></span></div> <div class="flex flex-wrap gap-1"></div> <div class="flex flex-wrap gap-x-4 text-xs opacity-80"><!> <!> <span> </span> <span> </span></div></li>`),Xr=p(`<button type="button" class="btn btn-ghost btn-sm self-start"> </button>`),Zr=p(`<ul class="slats"></ul> <!>`,1);function Qr(e,r){O(r,!0);let a=z(r,`showActor`,3,!1),l=z(r,`limit`,3,5),p=T(!1),m=P(()=>n(p)?r.rows:r.rows.slice(0,l())),h={access:`badge-ghost`,refresh:`badge-info`,code:`badge-warning`};function g(e){let t=`tokens.kinds.${e}`,n=Z(t);return n===t?e:n}async function _(e,t){let n=a()?e.actor?.identifier:e.client?.name,i=t?Z(`tokens.revoke_chain_confirm`,{held:n}):Z(`tokens.revoke_confirm`,{kind:g(e.kind)});if(!confirm(i))return;let o=await r.feedback.attempt(()=>r.api.query(`
|
|
54
|
+
mutation Revoke($id: ID!, $family: Boolean) {
|
|
55
|
+
revokeToken(id: $id, family: $family) { revoked }
|
|
56
|
+
}
|
|
57
|
+
`,{id:e.id,family:t}));if(!o)return;let s=o.revokeToken.revoked;r.feedback.say(Z(`tokens.revoked`,{count:s})),await r.onchange()}var v=V(),y=d(v),b=e=>{var n=Ur(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`tokens.empty`)]),t(e,n)},x=e=>{var v=Zr(),y=d(v);Y(y,21,()=>n(m),e=>e.id,(e,r)=>{var l=Yr(),d=s(l),p=s(d),m=s(p),v=G(m,!0),y=u(m,2),b=e=>{{let i=P(()=>`/actors/${n(r).actor.uuid}`);nt(e,{get to(){return n(i)},class:`link link-hover text-sm font-medium`,children:(e,i)=>{j();var a=o();c(()=>H(a,n(r).actor.identifier)),t(e,a)},$$slots:{default:!0}})}},x=e=>{{let i=P(()=>`/clients/${n(r).client.clientId}`);nt(e,{get to(){return n(i)},class:`link link-hover text-sm font-medium`,children:(e,i)=>{j();var a=o();c(()=>H(a,n(r).client.name)),t(e,a)},$$slots:{default:!0}})}};i(y,e=>{a()&&n(r).actor?e(b):n(r).client&&e(x,1)});var S=u(y,2),C=e=>{var n=Wr(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`tokens.rotated`)]),t(e,n)};i(S,e=>{n(r).parentId&&e(C)}),U(p);var w=u(p,2),T=s(w),E=G(T,!0),D=u(T,2),O=e=>{var i=Gr(),a=G(i,!0);c(e=>H(a,e),[()=>Z(`tokens.revoke_chain`)]),f(`click`,i,()=>_(n(r),!0)),t(e,i)};i(D,e=>{n(r).kind===`refresh`&&e(O)}),U(w),U(d);var k=u(d,2);Y(k,20,()=>n(r).scopes,e=>e,(e,n)=>{var r=Kr();let i;var a=G(r,!0);c(e=>{i=le(r,1,`scope`,null,i,{"scope-privileged":e}),H(a,n)},[()=>n.startsWith(`masks:`)]),t(e,r)}),U(k);var A=u(k,2),M=s(A),N=e=>{var i=qr(),a=G(i,!0);c((e,t)=>{F(i,`title`,e),H(a,t)},[()=>bt(n(r).audience),()=>bt(n(r).audience)]),t(e,i)};i(M,e=>{n(r).audience.length&&e(N)});var I=u(M,2),L=e=>{var i=Jr(),a=G(i,!0);c(()=>H(a,n(r).device.label)),t(e,i)};i(I,e=>{n(r).device&&e(L)});var R=u(I,2),z=G(R,!0),B=u(R,2),V=G(B,!0);U(A),U(l),c((e,t,i,a,o,s)=>{le(m,1,`badge badge-sm ${h[n(r).kind]??`badge-ghost`??``}`),H(v,e),H(E,t),F(R,`title`,i),H(z,a),F(B,`title`,o),H(V,s)},[()=>g(n(r).kind),()=>Z(`tokens.revoke`),()=>vt(n(r).createdAt),()=>Z(`tokens.issued`,{when:yt(n(r).createdAt)}),()=>vt(n(r).expiresAt),()=>Z(`tokens.expires`,{when:yt(n(r).expiresAt)})]),f(`click`,T,()=>_(n(r),!1)),t(e,l)}),U(y);var b=u(y,2),x=e=>{var n=Xr(),i=G(n,!0);c(e=>H(i,e),[()=>Z(`tokens.more`,{count:r.rows.length-l()})]),f(`click`,n,()=>C(p,!0)),t(e,n)};i(b,e=>{!n(p)&&r.rows.length>l()&&e(x)}),t(e,v)};i(y,e=>{r.rows.length===0?e(b):e(x,-1)}),t(e,v),B()}l([`click`]);var $r=p(`<div class="alert alert-error alert-soft text-sm" role="alert"> </div>`),ei=p(`<div class="alert alert-info alert-soft flex-col items-start gap-2" role="status"><span class="font-medium"> </span> <code class="font-mono text-xs break-all"> </code></div>`),ti=p(`<span> </span>`),ni=p(`<div class="alert alert-warning alert-soft flex-col items-start gap-2" role="status"><span class="font-medium"> </span> <div class="grid grid-cols-2 gap-2 font-mono text-sm md:grid-cols-5"></div></div>`),ri=p(`<div class="grid gap-3 sm:grid-cols-3"></div> <details class="more"><summary> </summary> <div class="grid gap-3 pt-3 sm:grid-cols-2"></div></details> <button type="button" class="btn btn-primary btn-sm self-start"> </button>`,1),ii=p(`<img width="64" height="64" alt=""/>`),ai=p(`<div class="size-16 rounded border border-dashed border-base-300"></div>`),oi=p(`<div class="flex flex-col items-start gap-2"><!> <span class="hint"> </span></div>`),si=p(`<button type="button" class="btn btn-ghost btn-sm"> </button>`),ci=p(`<span class="hint"> </span>`),li=p(`<div class="flex flex-wrap gap-5"></div> <div class="flex flex-wrap items-center gap-2"><label> <input type="file" class="sr-only" accept="image/png,image/jpeg,image/gif,image/webp"/></label> <!></div> <!>`,1),ui=p(`<div class="alert alert-warning alert-soft flex-wrap items-center gap-3 text-sm" role="status"><span> </span> <button type="button" class="btn btn-sm"> </button></div>`),di=p(`<p class="hint"> <span class="font-mono"> </span> </p>`),fi=p(`<button type="button" class="btn btn-sm self-start"> </button>`),pi=p(`<p class="text-sm opacity-85"> </p> <button type="button" class="btn btn-sm self-start"> </button>`,1),mi=p(`<!> <!> <!> <!> <!>`,1),hi=p(`<p class="text-sm opacity-85"> </p>`),gi=p(`<span class="badge badge-success badge-xs"> </span>`),_i=p(`<span class="badge badge-ghost badge-xs"> </span>`),vi=p(`<span class="text-xs text-error"> </span>`),yi=p(`<li class="flex flex-col gap-1 tray px-3 py-2"><div class="flex items-baseline justify-between gap-3"><span class="text-sm font-medium"> </span> <span class="flex items-baseline gap-2"><!> <!> <button type="button" class="link text-xs text-error"> </button></span></div> <!> <div class="flex flex-wrap gap-x-4 text-xs opacity-80"><span class="font-mono"> </span> <span> </span></div></li>`),bi=p(`<ul class="flex flex-col gap-2"></ul>`),xi=p(`<div class="flex flex-wrap gap-2"><button type="button" class="btn btn-primary btn-sm"> </button></div>`),Si=p(`<p class="text-sm opacity-85"> </p> <div class="flex flex-wrap gap-2"><button type="button" class="btn btn-primary btn-sm"> </button> <button type="button" class="btn btn-ghost btn-sm"> </button></div>`,1),Ci=p(`<label class="flex items-center gap-2 text-sm"><input type="checkbox" class="checkbox checkbox-sm"/> <code class="hint font-mono"> </code></label>`),wi=p(`<div class="flex flex-col gap-1"></div>`),Ti=p(`<p class="text-sm opacity-85"> <!>.</p>`),Ei=p(`<p class="hint"> </p>`),Di=p(`<!> <!>`,1),Oi=p(`<p class="text-sm"> </p> <div class="flex flex-wrap gap-2"><button type="button" class="btn btn-sm"> </button> <button type="button" class="btn btn-sm btn-error btn-outline"> </button></div>`,1),ki=p(`<div class="flex flex-wrap items-center gap-2"><span class="text-sm"> </span> <button type="button" class="btn btn-sm btn-error btn-outline"> </button></div>`),Ai=p(`<button type="button" class="btn btn-sm btn-warning btn-outline self-start"> </button>`),ji=p(`<!> <button type="button" class="btn btn-sm btn-error btn-outline self-start"> </button>`,1),Mi=p(`<!> <!> <!> <div class="grid items-start gap-4 md:grid-cols-2"><div class="flex flex-col gap-4"><!> <!> <!> <!> <!></div> <div class="flex flex-col gap-4"><!> <!> <!> <!> <!> <!> <!> <!> <!> <!></div></div>`,1);function Ni(e,r){O(r,!0);let a=Ze(),l=[[`nickname`,Z(`actor.fields.nickname`)],[`name`,Z(`actor.fields.name`)],[`email`,Z(`actor.fields.email`)]],p=[[`givenName`,Z(`actor.fields.given_name`)],[`familyName`,Z(`actor.fields.family_name`)],[`middleName`,Z(`actor.fields.middle_name`)],[`profileUrl`,Z(`actor.fields.profile_url`)],[`pictureUrl`,Z(`actor.fields.picture_url`)],[`websiteUrl`,Z(`actor.fields.website_url`)],[`gender`,Z(`actor.fields.gender`)],[`birthdate`,Z(`actor.fields.birthdate`)],[`zoneinfo`,Z(`actor.fields.zoneinfo`)],[`locale`,Z(`actor.fields.locale`)]],m=[...l,...p],h=ct(),g=T(null),_=T(null),v=T(w([])),y=T(w([])),b=T(w({})),x=T(!0),S=T(null),E=T(null),D=T(!1),k=P(()=>!!(n(g)&&n(_)&&n(g).uuid===n(_).uuid));async function A(){C(x,!0);try{let e=await r.api.query(`
|
|
58
|
+
query Actor($uuid: ID!) {
|
|
59
|
+
actor(uuid: $uuid) {
|
|
60
|
+
uuid identifier nickname email emailVerified phone phoneVerified signedUpAt pendingApproval
|
|
61
|
+
recoveryRequestedAt
|
|
62
|
+
groups { key }
|
|
63
|
+
groupLabels
|
|
64
|
+
suspendedAt externalId
|
|
65
|
+
memberships { externalId organization { key name } }
|
|
66
|
+
scopes otpEnabled emailCodesEnabled textCodesEnabled backupCodesRemaining
|
|
67
|
+
backupCodesGeneratedAt lastLoginAt createdAt activated invitedAt
|
|
68
|
+
passkeys { id label aaguid certification compromise userVerified lastUsedAt }
|
|
69
|
+
name givenName familyName middleName profileUrl pictureUrl websiteUrl
|
|
70
|
+
gender birthdate zoneinfo locale
|
|
71
|
+
photoUploaded avatars { photo identicon initials }
|
|
72
|
+
sessions { id ipAddress userAgent authenticatedAt expiresAt }
|
|
73
|
+
devices { id label category known ipAddress userAgent lastSeenAt blockedAt }
|
|
74
|
+
connections {
|
|
75
|
+
id subject label email emailVerified connectedAt signedInAt delegable
|
|
76
|
+
provider { key name }
|
|
77
|
+
delegations { id releasedAt client { clientId name } }
|
|
78
|
+
}
|
|
79
|
+
consents {
|
|
80
|
+
id scopes audience updatedAt expiresAt authorizationDetails
|
|
81
|
+
client { clientId name }
|
|
82
|
+
}
|
|
83
|
+
tokens {
|
|
84
|
+
id kind scopes audience parentId createdAt expiresAt
|
|
85
|
+
client { clientId name }
|
|
86
|
+
device { id label }
|
|
87
|
+
}
|
|
88
|
+
events(limit: 25) {
|
|
89
|
+
id action label createdAt ipAddress details
|
|
90
|
+
by { uuid identifier }
|
|
91
|
+
client { clientId name }
|
|
92
|
+
device { id label }
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
groups { key name }
|
|
96
|
+
viewer { uuid }
|
|
97
|
+
scopesSupported
|
|
98
|
+
}
|
|
99
|
+
`,{uuid:r.uuid});C(g,e.actor,!0),C(_,e.viewer,!0),C(v,e.groups,!0),C(y,e.scopesSupported,!0),C(b,Object.fromEntries(m.map(([t])=>[t,e.actor?.[t]??``])),!0)}catch(e){h.blame(e)}finally{C(x,!1)}}A();async function N(e,t,n){let i=await h.attempt(()=>r.api.query(e,t),n);return i&&await A(),i}let L=e=>n(g).groups.some(t=>t.key===e.key),R=e=>N(L(e)?`mutation Leave($key: String!, $uuid: ID!) { removeGroupMember(key: $key, uuid: $uuid) { group { key } } }`:`mutation Join($key: String!, $uuid: ID!) { addGroupMember(key: $key, uuid: $uuid) { group { key } } }`,{key:e.key,uuid:r.uuid},L(e)?Z(`actor.left_group`,{group:e.name}):Z(`actor.joined_group`,{group:e.name})),z=()=>N(`mutation Save($uuid: ID!, ${m.map(([e])=>`$${e}: String`).join(`, `)}) {
|
|
100
|
+
updateActor(uuid: $uuid, ${m.map(([e])=>`${e}: $${e}`).join(`, `)}) { actor { uuid } }
|
|
101
|
+
}`,{uuid:r.uuid,...Object.fromEntries(Object.entries(n(b)).map(([e,t])=>[e,t===``?null:t]))},Z(`actor.profile_saved`)),ee=e=>N(`mutation Scopes($uuid: ID!, $scopes: [String!]!) {
|
|
102
|
+
setActorScopes(uuid: $uuid, scopes: $scopes) { actor { scopes } }
|
|
103
|
+
}`,{uuid:r.uuid,scopes:e},Z(`actor.scopes_updated`));async function te(){C(S,null);let e=await N(`mutation Codes($uuid: ID!) { generateBackupCodes(uuid: $uuid) { codes } }`,{uuid:r.uuid},Z(`actor.codes_generated`));e&&C(S,e.generateBackupCodes.codes,!0)}async function ne(e,t){if(!confirm(t))return;C(E,null);let n=await N(e,{uuid:r.uuid},null);if(!n)return;let i=Object.values(n)[0];i.delivered?h.say(Z(`actor.emailed`)):(h.say(Z(`actor.no_mailer`)),C(E,i.url,!0))}let W=()=>ne(`mutation Reset($uuid: ID!) { resetPassword(uuid: $uuid) { delivered url } }`,Z(`actor.reset_question`)),re=()=>ne(`mutation Resend($uuid: ID!) { resendInvitation(uuid: $uuid) { delivered url } }`,Z(`actor.resend_question`)),K=()=>ne(`mutation Verify($uuid: ID!) { verifyEmail(uuid: $uuid) { delivered url } }`,Z(`actor.confirm_question`));function q(e){confirm(Z(`actor.remove_passkey_question`,{label:e.label}))&&N(`mutation Revoke($uuid: ID!, $id: ID!) { revokePasskey(uuid: $uuid, id: $id) { actor { uuid } } }`,{uuid:r.uuid,id:e.id},Z(`actor.passkey_removed`))}async function J(e){let t=e.currentTarget,n=t.files?.[0];n&&(C(D,!0),await N(`mutation Upload($uuid: ID!, $photo: Upload!) {
|
|
104
|
+
uploadAvatar(uuid: $uuid, photo: $photo) { actor { uuid } }
|
|
105
|
+
}`,{uuid:r.uuid,photo:n},Z(`actor.photo_updated`)),C(D,!1),t.value=``)}function ae(){confirm(Z(`actor.remove_photo_question`))&&N(`mutation Remove($uuid: ID!) { removeAvatar(uuid: $uuid) { actor { uuid } } }`,{uuid:r.uuid},Z(`actor.photo_removed`))}function oe(){confirm(Z(`actor.disable_question`))&&N(`mutation Disable($uuid: ID!) { disableAuthenticator(uuid: $uuid) { actor { otpEnabled } } }`,{uuid:r.uuid},Z(`actor.authenticator_removed`))}let se=[[`email`,`emailCodesEnabled`,Z(`actor.factors.email.name`),Z(`actor.factors.email.lower`)],[`sms`,`textCodesEnabled`,Z(`actor.factors.sms.name`),Z(`actor.factors.sms.lower`)]];function ce(e,t,n){confirm(Z(`actor.turn_off_question`,{name:n}))&&N(`mutation TurnOff($uuid: ID!, $factor: String!) {
|
|
106
|
+
disableCodeFactor(uuid: $uuid, factor: $factor) { actor { uuid } }
|
|
107
|
+
}`,{uuid:r.uuid,factor:e},Z(`actor.turned_off`,{name:t}))}function ue(){confirm(Z(`actor.suspend_question`,{identifier:n(g).identifier}))&&N(`mutation Suspend($uuid: ID!) { suspendActor(uuid: $uuid) { actor { suspendedAt } } }`,{uuid:r.uuid},Z(`actor.suspended`))}function de(){N(`mutation Restore($uuid: ID!) { restoreActor(uuid: $uuid) { actor { suspendedAt } } }`,{uuid:r.uuid},Z(`actor.restored`))}async function fe(){confirm(Z(`actor.delete_question`,{identifier:n(g).identifier}))&&await h.attempt(()=>r.api.query(`mutation Delete($uuid: ID!) { deleteActor(uuid: $uuid) { identifier } }`,{uuid:r.uuid}))&&a.go(`/actors`)}var pe=V(),me=d(pe),he=e=>{it(e,{})},ge=e=>{var n=$r(),r=G(n,!0);c(e=>H(r,e),[()=>h.state.failure??Z(`actor.missing`)]),t(e,n)},_e=e=>{{let a=P(()=>({to:`/actors`,label:Z(`actor.back`)})),m=P(()=>n(g).activated?Z(`actor.signed_in_lede`,{when:yt(n(g).lastLoginAt,Z(`actor.never`))}):Z(`actor.invited_lede`));wn(e,{get title(){return n(g).identifier},get id(){return n(g).uuid},get back(){return n(a)},get lede(){return n(m)},children:(e,a)=>{var m=Mi(),_=d(m);vn(_,{get feedback(){return h.state}});var x=u(_,2),C=e=>{var r=ei(),i=s(r),a=G(i,!0),o=u(i,2),l=G(o,!0);U(r),c(e=>{H(a,e),H(l,n(E))},[()=>Z(`actor.link_once`)]),t(e,r)};i(x,e=>{n(E)&&e(C)});var w=u(x,2),T=e=>{var r=ni(),i=s(r),a=G(i,!0),o=u(i,2);Y(o,20,()=>n(S),e=>e,(e,n)=>{var r=ti(),i=G(r,!0);c(()=>H(i,n)),t(e,r)}),U(o),U(r),c(e=>H(a,e),[()=>Z(`actor.write_down`)]),t(e,r)};i(w,e=>{n(S)&&e(T)});var O=u(w,2),B=s(O),ne=s(B);{let e=P(()=>Z(`actor.profile`));Q(ne,{get title(){return n(e)},children:(e,r)=>{var i=ri(),a=d(i);Y(a,21,()=>l,([e,t])=>e,(e,t)=>{var r=P(()=>I(n(t),2));let i=()=>n(r)[0],a=()=>n(r)[1];$(e,{get label(){return a()},get value(){return n(b)[i()]},set value(e){n(b)[i()]=e}})}),U(a);var o=u(a,2),m=s(o),h=G(m,!0),g=u(m,2);Y(g,21,()=>p,([e,t])=>e,(e,t)=>{var r=P(()=>I(n(t),2));let i=()=>n(r)[0],a=()=>n(r)[1];$(e,{get label(){return a()},get value(){return n(b)[i()]},set value(e){n(b)[i()]=e}})}),U(g),U(o);var _=u(o,2),v=G(_,!0);c((e,t,n)=>{o.open=e,H(h,t),H(v,n)},[()=>p.some(([e])=>n(b)[e]),()=>Z(`actor.more_fields`),()=>Z(`actor.save_profile`)]),f(`click`,_,z),t(e,i)},$$slots:{default:!0}})}var pe=u(ne,2);{let e=P(()=>Z(`actor.signed_in`)),t=P(()=>n(k)?Z(`actor.signed_in_yourself`):null);Q(pe,{get title(){return n(e)},get lede(){return n(t)},children:(e,t)=>{Hr(e,{get api(){return r.api},get feedback(){return h},get actor(){return n(g)},onchange:A})},$$slots:{default:!0}})}var me=u(pe,2);{let e=P(()=>Z(`actor.consents`));Q(me,{get title(){return n(e)},children:(e,t)=>{hr(e,{get api(){return r.api},get feedback(){return h},get rows(){return n(g).consents},onchange:A})},$$slots:{default:!0}})}var he=u(me,2);{let e=P(()=>Z(`actor.connections`));Q(he,{get title(){return n(e)},children:(e,t)=>{sr(e,{get api(){return r.api},get feedback(){return h},get rows(){return n(g).connections},onchange:A})},$$slots:{default:!0}})}var ge=u(he,2);{let e=P(()=>Z(`actor.tokens`));Q(ge,{get title(){return n(e)},children:(e,t)=>{Qr(e,{get api(){return r.api},get feedback(){return h},get rows(){return n(g).tokens},onchange:A})},$$slots:{default:!0}})}U(B);var _e=u(B,2),ve=s(_e);{let e=P(()=>Z(`actor.photo`));Q(ve,{get title(){return n(e)},children:(e,r)=>{var a=li(),o=d(a);Y(o,20,()=>[`photo`,`identicon`,`initials`],e=>e,(e,r)=>{var a=oi(),o=s(a),l=e=>{var i=ii();let a;c(()=>{F(i,`src`,`${n(g).avatars[r]}?size=64`),a=le(i,1,`size-16 rounded object-cover`,null,a,{drawn:r!==`photo`})}),t(e,i)},d=e=>{var n=ai();t(e,n)};i(o,e=>{n(g).avatars[r]?e(l):e(d,-1)});var f=u(o,2),p=G(f,!0);U(a),c(e=>H(p,e),[()=>Z(`actor.styles.${r}`)]),t(e,a)}),U(o);var l=u(o,2),p=s(l);let m;var h=s(p),_=u(h);U(p);var v=u(p,2),y=e=>{var n=si(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`actor.remove_photo`)]),f(`click`,n,ae),t(e,n)};i(v,e=>{n(g).photoUploaded&&e(y)}),U(l);var b=u(l,2),x=e=>{var n=ci(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`actor.uploading`)]),t(e,n)};i(b,e=>{n(D)&&e(x)}),c(e=>{m=le(p,1,`btn btn-sm`,null,m,{"btn-disabled":n(D)}),H(h,`${e??``} `),_.disabled=n(D)},[()=>Z(`actor.upload_photo`)]),f(`change`,_,J),t(e,a)},$$slots:{default:!0}})}var ye=u(ve,2);{let e=P(()=>Z(`actor.scopes`));Q(ye,{get title(){return n(e)},children:(e,t)=>{un(e,{get value(){return n(g).scopes},get available(){return n(y)},onchange:ee})},$$slots:{default:!0}})}var be=u(ye,2);{let e=P(()=>Z(`actor.access`));Q(be,{get title(){return n(e)},children:(e,r)=>{var a=mi(),o=d(a),l=e=>{var r=ui(),i=s(r),a=G(i,!0),o=u(i,2),l=G(o,!0);U(r),c((e,t)=>{H(a,e),H(l,t)},[()=>Z(`actor.suspended_on`,{day:_t(n(g).suspendedAt)}),()=>Z(`actor.restore`)]),f(`click`,o,de),t(e,r)};i(o,e=>{n(g).suspendedAt&&e(l)});var p=u(o,2),m=e=>{var r=di(),i=s(r),a=u(i),o=G(a,!0),l=u(a);U(r),c((e,t)=>{H(i,`${e??``} `),H(o,n(g).externalId),H(l,`.
|
|
108
|
+
${t??``}`)},[()=>Z(`actor.provisioned_as`),()=>Z(`actor.provider_may_change`)]),t(e,r)};i(p,e=>{n(g).externalId&&e(m)});var h=u(p,2);Y(h,17,()=>n(g).memberships.filter(e=>e.externalId),e=>e.organization.key,(e,r)=>{var i=di(),a=s(i),o=u(a),l=G(o,!0),d=u(o);U(i),c((e,t)=>{H(a,`${e??``} `),H(l,n(r).externalId),H(d,`, ${t??``}`)},[()=>Z(`actor.directory_provisioned`,{organization:n(r).organization.name}),()=>Z(`actor.directory_may_change`)]),t(e,i)});var _=u(h,2),v=e=>{var n=fi(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`actor.reset_password`)]),f(`click`,n,W),t(e,n)},y=e=>{var r=pi(),i=d(r),a=G(i,!0),o=u(i,2),s=G(o,!0);c((e,t)=>{H(a,e),H(s,t)},[()=>n(g).invitedAt?Z(`actor.invited_on`,{day:_t(n(g).invitedAt)}):Z(`actor.invited`),()=>Z(`actor.resend`)]),f(`click`,o,re),t(e,r)};i(_,e=>{n(g).activated?e(v):e(y,-1)});var b=u(_,2),x=e=>{var r=pi(),i=d(r),a=G(i,!0),o=u(i,2),s=G(o,!0);c((e,t)=>{H(a,e),H(s,t)},[()=>Z(`actor.unconfirmed`,{email:n(g).email}),()=>Z(`actor.send_confirmation`)]),f(`click`,o,K),t(e,r)};i(b,e=>{n(g).email&&!n(g).emailVerified&&e(x)}),t(e,a)},$$slots:{default:!0}})}var xe=u(be,2);{let e=P(()=>Z(`actor.passkeys`));Q(xe,{get title(){return n(e)},children:(e,r)=>{var a=V(),o=d(a),l=e=>{var n=hi(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`actor.no_passkeys`)]),t(e,n)},p=e=>{var r=bi();Y(r,21,()=>n(g).passkeys,e=>e.id,(e,r)=>{var a=yi(),o=s(a),l=s(o),d=G(l,!0),p=u(l,2),m=s(p),h=e=>{var n=gi(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`actor.verifying`)]),t(e,n)};i(m,e=>{n(r).userVerified&&e(h)});var g=u(m,2),_=e=>{var i=_i(),a=G(i,!0);c(()=>H(a,n(r).certification)),t(e,i)};i(g,e=>{n(r).certification&&e(_)});var v=u(g,2),y=G(v,!0);U(p),U(o);var b=u(o,2),x=e=>{var i=vi(),a=G(i,!0);c(e=>H(a,e),[()=>Z(`actor.compromise`,{compromise:n(r).compromise.toLowerCase().replaceAll(`_`,` `)})]),t(e,i)};i(b,e=>{n(r).compromise&&e(x)});var S=u(b,2),C=s(S),w=G(C,!0),T=u(C,2),E=G(T,!0);U(S),U(a),c((e,t,i)=>{H(d,n(r).label),H(y,e),H(w,t),H(E,i)},[()=>Z(`actor.remove`),()=>n(r).aaguid??Z(`actor.no_aaguid`),()=>Z(`actor.last_used`,{when:yt(n(r).lastUsedAt,Z(`actor.never`))})]),f(`click`,v,()=>q(n(r))),t(e,a)}),U(r),t(e,r)};i(o,e=>{n(g).passkeys.length===0?e(l):e(p,-1)}),t(e,a)},$$slots:{default:!0}})}var X=u(xe,2),Se=e=>{{let i=P(()=>Z(`actor.approval.title`)),a=P(()=>Z(`actor.approval.lede`));Q(e,{get title(){return n(i)},get lede(){return n(a)},children:(e,n)=>{var i=xi(),a=s(i),o=G(a,!0);U(i),c(e=>H(o,e),[()=>Z(`actor.approval.approve`)]),f(`click`,a,()=>N(`mutation Approve($uuid: ID!) { approveActor(uuid: $uuid) { actor { uuid } } }`,{uuid:r.uuid},Z(`actor.approval.approved`))),t(e,i)},$$slots:{default:!0}})}};i(X,e=>{n(g).pendingApproval&&e(Se)});var Ce=u(X,2),we=e=>{{let i=P(()=>Z(`actor.recovery.title`)),a=P(()=>Z(`actor.recovery.lede`,{when:yt(n(g).recoveryRequestedAt)}));Q(e,{get title(){return n(i)},get lede(){return n(a)},children:(e,i)=>{var a=Si(),o=d(a),l=G(o,!0),p=u(o,2),m=s(p),h=G(m,!0),_=u(m,2),v=G(_,!0);U(p),c((e,t,n)=>{H(l,e),H(h,t),H(v,n)},[()=>Z(`actor.recovery.explain`),()=>Z(`actor.recovery.reset`),()=>Z(`actor.recovery.dismiss`)]),f(`click`,m,()=>confirm(Z(`actor.recovery.question`,{identifier:n(g).identifier}))&&N(`mutation Reset($uuid: ID!) { resetSecondFactors(uuid: $uuid) { actor { uuid } } }`,{uuid:r.uuid},Z(`actor.recovery.done`))),f(`click`,_,()=>N(`mutation Dismiss($uuid: ID!) { dismissRecovery(uuid: $uuid) { actor { uuid } } }`,{uuid:r.uuid},Z(`actor.recovery.dismissed`))),t(e,a)},$$slots:{default:!0}})}};i(Ce,e=>{n(g).recoveryRequestedAt&&e(we)});var Te=u(Ce,2);{let e=P(()=>Z(`actor.groups`));Q(Te,{get title(){return n(e)},children:(e,r)=>{var a=Di(),l=d(a),p=e=>{var r=wi();Y(r,21,()=>n(v),e=>e.key,(e,r)=>{var i=Ci(),a=s(i);M(a);var o=u(a),l=u(o),d=G(l,!0);U(i),c(e=>{ie(a,e),H(o,` ${n(r).name??``} `),H(d,n(r).key)},[()=>L(n(r))]),f(`change`,a,()=>R(n(r))),t(e,i)}),U(r),t(e,r)},m=e=>{var n=Ti(),r=s(n);nt(u(r),{to:`/settings`,children:(e,n)=>{j();var r=o();c(e=>H(r,e),[()=>Z(`actor.add_group`)]),t(e,r)},$$slots:{default:!0}}),j(),U(n),c(e=>H(r,`${e??``} `),[()=>Z(`actor.no_groups`)]),t(e,n)};i(l,e=>{n(v).length?e(p):e(m,-1)});var h=u(l,2),_=e=>{var r=Ei(),i=G(r,!0);c(e=>H(i,e),[()=>Z(`actor.group_labels`,{labels:n(g).groupLabels.join(`, `)})]),t(e,r)};i(h,e=>{n(g).groupLabels.length&&e(_)}),t(e,a)},$$slots:{default:!0}})}var Ee=u(Te,2);{let e=P(()=>Z(`actor.second_factor`));Q(Ee,{get title(){return n(e)},children:(e,r)=>{var a=Di(),o=d(a),l=e=>{var r=Oi(),i=d(r),a=G(i,!0),o=u(i,2),l=s(o),p=G(l,!0),m=u(l,2),h=G(m,!0);U(o),c((e,t,n)=>{H(a,e),H(p,t),H(h,n)},[()=>Z(`actor.authenticator_enabled`,{count:n(g).backupCodesRemaining}),()=>Z(`actor.generate`),()=>Z(`actor.remove_authenticator`)]),f(`click`,l,te),f(`click`,m,oe),t(e,r)},p=e=>{var n=hi(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`actor.password_only`)]),t(e,n)};i(o,e=>{n(g).otpEnabled?e(l):!n(g).emailCodesEnabled&&!n(g).textCodesEnabled&&e(p,1)});var m=u(o,2);Y(m,17,()=>se.filter(([,e])=>n(g)[e]),([e,,t,n])=>e,(e,r)=>{var i=P(()=>I(n(r),4));let a=()=>n(i)[0],o=()=>n(i)[2],l=()=>n(i)[3];var d=ki(),p=s(d),m=G(p,!0),h=u(p,2),g=G(h,!0);U(d),c((e,t)=>{H(m,e),H(g,t)},[()=>Z(`actor.factor_on`,{name:o()}),()=>Z(`actor.turn_off`,{name:l()})]),f(`click`,h,()=>ce(a(),o(),l())),t(e,d)}),t(e,a)},$$slots:{default:!0}})}var De=u(Ee,2);{let e=e=>{{let r=P(()=>`/activity?actor=${n(g).uuid}`);nt(e,{get to(){return n(r)},class:`btn btn-ghost btn-sm`,children:(e,n)=>{j();var r=o();c(e=>H(r,e),[()=>Z(`actor.all_activity`)]),t(e,r)},$$slots:{default:!0}})}},r=P(()=>Z(`actor.activity`));Q(De,{get title(){return n(r)},actions:e,children:(e,t)=>{{let t=P(()=>Z(`actor.no_activity`));jr(e,{get events(){return n(g).events},showActor:!1,get empty(){return n(t)}})}},$$slots:{actions:!0,default:!0}})}var Oe=u(De,2);{let e=P(()=>Z(`actor.danger`));Q(Oe,{get title(){return n(e)},children:(e,r)=>{var a=V(),o=d(a),s=e=>{var n=hi(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`actor.yourself`)]),t(e,n)},l=e=>{var r=ji(),a=d(r),o=e=>{var r=Ai(),i=G(r,!0);c(e=>H(i,e),[()=>Z(`actor.suspend`,{identifier:n(g).identifier})]),f(`click`,r,ue),t(e,r)};i(a,e=>{n(g).suspendedAt||e(o)});var s=u(a,2),l=G(s,!0);c(e=>H(l,e),[()=>Z(`actor.delete`,{identifier:n(g).identifier})]),f(`click`,s,fe),t(e,r)};i(o,e=>{n(k)?e(s):e(l,-1)}),t(e,a)},$$slots:{default:!0}})}U(_e),U(O),t(e,m)},$$slots:{default:!0}})}};i(me,e=>{n(x)&&!n(g)?e(he):n(g)?e(_e,-1):e(ge,1)}),t(e,pe),B()}l([`click`,`change`]);var Pi=p(`<dt class="opacity-80"> </dt> <dd> </dd>`,1),Fi=p(`<dl class="grid gap-x-4 gap-y-0.5 text-sm sm:grid-cols-3 sm:gap-y-2"></dl>`);function Ii(e,r){var i=Fi();Y(i,21,()=>r.rows,({term:e,value:t,mono:n})=>e,(e,r)=>{let i=()=>n(r).term,a=()=>n(r).value,o=()=>n(r).mono;var s=Pi(),l=d(s),f=G(l,!0),p=u(l,2),m=G(p,!0);c(()=>{H(f,i()),le(p,1,`pb-2 sm:col-span-2 sm:pb-0 ${o()?`font-mono text-xs break-all`:``}`),H(m,a()||`—`)}),t(e,s)}),U(i),t(e,i)}var Li=p(`<div class="alert alert-error alert-soft text-sm" role="alert"> </div>`),Ri=p(`<button type="button" class="btn btn-sm"> </button>`),zi=p(`<button type="button" class="btn btn-sm btn-error btn-outline"> </button>`),Bi=p(`<!> <div class="flex flex-wrap gap-2 pt-1"><!> <!></div>`,1),Vi=p(`<p class="text-sm opacity-85"> </p>`),Hi=p(`<li class="slat"><!></li>`),Ui=p(`<ul class="slats"></ul>`),Wi=p(`<li class="slat"><div class="flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1"><!> <span class="font-mono text-xs opacity-80"> </span></div> <div class="flex flex-wrap gap-x-4 text-xs opacity-80"><span> </span> <span> </span></div></li>`),Gi=p(`<!> <div class="grid items-start gap-4 md:grid-cols-2"><!> <div class="flex flex-col gap-4"><!> <!> <!></div></div>`,1);function Ki(e,r){O(r,!0);let a=ct(),l=T(null),p=T(w([])),m=T(!0);async function h(){C(m,!0);try{let e=await r.api.query(`
|
|
109
|
+
query Device($id: ID!) {
|
|
110
|
+
device(id: $id) {
|
|
111
|
+
id label name category known ipAddress userAgent lastSeenAt blockedAt createdAt
|
|
112
|
+
actors { uuid identifier }
|
|
113
|
+
sessions {
|
|
114
|
+
id ipAddress userAgent authenticatedAt expiresAt
|
|
115
|
+
actor { uuid identifier }
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
events(device: $id, limit: 25) {
|
|
119
|
+
id action label createdAt ipAddress details
|
|
120
|
+
actor { uuid identifier }
|
|
121
|
+
by { uuid identifier }
|
|
122
|
+
client { clientId name }
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
`,{id:r.id});C(l,e.device,!0),C(p,e.events,!0)}catch(e){a.blame(e)}finally{C(m,!1)}}h();async function g(e,t,n=null){(!n||confirm(n))&&await a.attempt(()=>r.api.query(`mutation Act($id: ID!) { ${e}(id: $id) { device { id } } }`,{id:r.id}),t)&&await h()}let _=()=>g(`blockDevice`,Z(`device.blocked`,{label:n(l).label}),Z(`device.block_question`,{label:n(l).label})),v=()=>g(`unblockDevice`,Z(`device.unblocked`,{label:n(l).label})),y=()=>g(`signOutDevice`,Z(`device.signed_out`,{label:n(l).label}),Z(`device.sign_out_question`,{label:n(l).label})),b=P(()=>n(l)?[{term:Z(`device.facts.kind`),value:n(l).category},{term:Z(`device.facts.ip_address`),value:n(l).ipAddress,mono:!0},{term:Z(`device.facts.user_agent`),value:n(l).userAgent,mono:!0},{term:Z(`device.facts.first_seen`),value:_t(n(l).createdAt)},{term:Z(`device.facts.last_seen`),value:vt(n(l).lastSeenAt)}]:[]);var x=V(),S=d(x),E=e=>{it(e,{})},D=e=>{var n=Li(),r=G(n,!0);c(e=>H(r,e),[()=>a.state.failure??Z(`device.missing`)]),t(e,n)},k=e=>{{let r=P(()=>({to:`/actors#devices`,label:Z(`device.back`)})),m=P(()=>n(l).blockedAt?Z(`device.blocked_lede`,{day:_t(n(l).blockedAt)}):Z(`device.seen_lede`,{when:yt(n(l).lastSeenAt)}));wn(e,{get title(){return n(l).label},get id(){return n(l).id},get back(){return n(r)},get lede(){return n(m)},children:(e,r)=>{var m=Gi(),h=d(m);vn(h,{get feedback(){return a.state}});var g=u(h,2),x=s(g);{let e=P(()=>Z(`device.what`));Q(x,{get title(){return n(e)},children:(e,r)=>{var a=Bi(),o=d(a);Ii(o,{get rows(){return n(b)}});var p=u(o,2),m=s(p),h=e=>{var n=Ri(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`device.sign_out_everywhere`)]),f(`click`,n,y),t(e,n)};i(m,e=>{n(l).sessions.length&&e(h)});var g=u(m,2),x=e=>{var n=Ri(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`device.unblock`)]),f(`click`,n,v),t(e,n)},S=e=>{var n=zi(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`device.block`)]),f(`click`,n,_),t(e,n)};i(g,e=>{n(l).blockedAt?e(x):e(S,-1)}),U(p),t(e,a)},$$slots:{default:!0}})}var S=u(x,2),C=s(S);{let e=P(()=>Z(`device.who`));Q(C,{get title(){return n(e)},children:(e,r)=>{var a=V(),u=d(a),f=e=>{var n=Vi(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`device.nobody`)]),t(e,n)},p=e=>{var r=Ui();Y(r,21,()=>n(l).actors,e=>e.uuid,(e,r)=>{var i=Hi(),a=s(i);{let e=P(()=>`/actors/${n(r).uuid}`);nt(a,{get to(){return n(e)},class:`link link-hover text-sm font-medium`,children:(e,i)=>{j();var a=o();c(()=>H(a,n(r).identifier)),t(e,a)},$$slots:{default:!0}})}U(i),t(e,i)}),U(r),t(e,r)};i(u,e=>{n(l).actors.length===0?e(f):e(p,-1)}),t(e,a)},$$slots:{default:!0}})}var w=u(C,2);{let e=P(()=>Z(`device.live_sessions`));Q(w,{get title(){return n(e)},children:(e,r)=>{var a=V(),f=d(a),p=e=>{var n=Vi(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`device.no_sessions`)]),t(e,n)},m=e=>{var r=Ui();Y(r,21,()=>n(l).sessions,e=>e.id,(e,r)=>{var i=Wi(),a=s(i),l=s(a);{let e=P(()=>`/actors/${n(r).actor.uuid}`);nt(l,{get to(){return n(e)},class:`link link-hover text-sm font-medium`,children:(e,i)=>{j();var a=o();c(()=>H(a,n(r).actor.identifier)),t(e,a)},$$slots:{default:!0}})}var d=u(l,2),f=G(d,!0);U(a);var p=u(a,2),m=s(p),h=G(m,!0),g=u(m,2),_=G(g,!0);U(p),U(i),c((e,t,i)=>{H(f,n(r).ipAddress??`—`),F(m,`title`,e),H(h,t),H(_,i)},[()=>vt(n(r).authenticatedAt),()=>Z(`device.signed_in`,{when:yt(n(r).authenticatedAt)}),()=>Z(`device.expires`,{when:_t(n(r).expiresAt)})]),t(e,i)}),U(r),t(e,r)};i(f,e=>{n(l).sessions.length===0?e(p):e(m,-1)}),t(e,a)},$$slots:{default:!0}})}var T=u(w,2);{let e=P(()=>Z(`device.activity`));Q(T,{get title(){return n(e)},children:(e,t)=>{{let t=P(()=>Z(`device.no_activity`));jr(e,{get events(){return n(p)},get empty(){return n(t)}})}},$$slots:{default:!0}})}U(S),U(g),t(e,m)},$$slots:{default:!0}})}};i(S,e=>{n(m)&&!n(l)?e(E):n(l)?e(k,-1):e(D,1)}),t(e,x),B()}l([`click`]);var qi=p(`<img alt=""/>`),Ji=p(`<span aria-hidden="true"> </span>`);function Yi(e,n){O(n,!0);let r=z(n,`class`,3,`size-8 rounded`);var a=V(),o=d(a),s=e=>{var i=qi();c(()=>{F(i,`src`,n.client.logoUrl),le(i,1,`shrink-0 ${r()??``}`)}),t(e,i)},l=e=>{var i=Ji(),a=G(i,!0);c(e=>{le(i,1,`grid shrink-0 place-items-center bg-base-200 font-semibold ${r()??``}`),H(a,e)},[()=>ae(n.client.name)]),t(e,i)};i(o,e=>{n.client.logoUrl?e(s):e(l,-1)}),t(e,a),B()}var Xi=p(`<span class="field-label"> </span>`),Zi=p(`<option> </option>`),Qi=p(`<label class="flex min-w-0 flex-col gap-1.5"><!> <select class="select select-sm w-full"></select></label>`);function $i(r,a){O(a,!0);let o=z(a,`label`,3,null),l=z(a,`disabled`,3,!1),d=z(a,`name`,3,null);var p=Qi(),m=s(p),h=e=>{var n=Xi(),r=G(n,!0);c(()=>H(r,o())),t(e,n)};i(m,e=>{o()&&e(h)});var g=u(m,2);Y(g,21,()=>a.options,([e,t,n=!1])=>e,(r,i)=>{var a=P(()=>I(n(i),3));let o=()=>n(a)[0],s=()=>n(a)[1],l=e(()=>se(n(a)[2],!1));var u=Zi(),d=G(u,!0),f={};c(()=>{u.disabled=n(l),H(d,s()),f!==(f=o())&&(u.value=(u.__value=f)??``)}),t(r,u)}),U(g);var _;L(g),U(p),c(()=>{g.disabled=l(),F(g,`aria-label`,o()?null:d()),_!==(_=a.value)&&(g.value=(g.__value=_)??``,E(g,_))}),f(`change`,g,e=>a.onchange(e.currentTarget.value)),t(r,p),B()}l([`change`]);var ea=p(`<label class="flex cursor-pointer items-center gap-2 text-sm"><input type="checkbox" class="toggle toggle-sm"/> </label>`);function ta(e,n){O(n,!0);let r=z(n,`checked`,15,!1),i=z(n,`onchange`,3,null);var a=ea(),o=s(a);M(o);var l=u(o);U(a),c(()=>H(l,` ${n.label??``}`)),f(`change`,o,function(...e){(i()?e=>i()(e.currentTarget.checked):void 0)?.apply(this,e)}),q(o,r),t(e,a),B()}l([`change`]);var na=p(`<!> <!> <button type="button" class="btn btn-primary btn-sm"> </button>`,1),ra=p(`<button type="button"> </button>`),ia=p(`<!> <!> <!>`,1),aa=p(`<label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea textarea-sm w-full font-mono text-xs" rows="3" spellcheck="false" placeholder="<md:EntityDescriptor …"></textarea></label> <button type="button" class="btn btn-sm self-start"> </button> <!> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea textarea-sm w-full font-mono text-xs" rows="2" spellcheck="false" placeholder="https://wiki.example.com/saml/acs"></textarea></label> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea textarea-sm w-full font-mono text-xs" rows="2" spellcheck="false"></textarea></label> <!> <!>`,1),oa=p(`<label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea textarea-sm w-full font-mono text-xs" rows="2" autocapitalize="none" autocorrect="off" spellcheck="false" placeholder="https://app.example.com/callback"></textarea></label>`),sa=p(`<label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea textarea-sm w-full font-mono text-xs" rows="2" autocapitalize="none" autocorrect="off" spellcheck="false" placeholder="https://api.example.com/mcp"></textarea></label> <div class="flex flex-col gap-2"><span class="legend"> </span> <!></div>`,1),ca=p(`<!> <div class="range" role="group"></div> <!> <p class="hint"> </p> <!> <!> <!> <div class="flex gap-2"><button type="button" class="btn btn-primary btn-sm"> </button> <button type="button" class="btn btn-ghost btn-sm"> </button></div>`,1),la=p(`<p class="tray px-2 py-1 font-mono text-xs break-all"> </p>`),ua=p(`<a class="link" target="_blank" rel="noreferrer"> </a>.`,1),da=p(`<dt class="font-mono text-xs opacity-80"> </dt> <dd class="tray m-0 px-2 py-1 font-mono text-xs break-all whitespace-pre-wrap"> </dd>`,1),fa=p(`<p class="text-sm opacity-85"> <!></p> <dl class="grid gap-x-4 gap-y-2 text-sm md:grid-cols-[auto_1fr]"></dl>`,1),pa=p(`<p class="text-sm opacity-85"> </p> <p class="tray px-2 py-1 font-mono text-xs break-all"> </p> <!> <!> <!>`,1),ma=p(`<span class="badge badge-ghost badge-sm"> </span>`),ha=p(`<span class="badge badge-success badge-sm"> </span>`),ga=p(`<div class="max-w-[12rem] truncate"><span class="opacity-75"> </span> </div>`),_a=p(`<div class="max-w-[12rem] truncate opacity-85"><span class="opacity-85"> </span> </div>`),va=p(`<td class="w-full max-w-0 md:w-auto md:max-w-[15rem]"><div class="flex items-center gap-2.5"><!> <div class="min-w-0"><!> <div class="max-w-[11rem] truncate font-mono text-xs opacity-75"> </div></div></div></td> <td class="hidden md:table-cell"><div class="max-w-[11rem] truncate font-mono text-xs opacity-85"> </div></td> <td><!></td> <td class="hidden text-right text-xs opacity-85 md:table-cell"> </td> <td class="hidden font-mono text-xs md:table-cell"><!> <!></td> <td class="hidden text-xs opacity-85 md:table-cell"> </td> <td class="hidden text-xs whitespace-nowrap opacity-85 md:table-cell"> </td>`,1),ya=p(`<!> <!>`,1),ba=p(`<!> <!> <!> <!>`,1);function xa(e,r){O(r,!0);let a=at(),l=[[`service`,[`client_credentials`]],[`app`,[`authorization_code`,`refresh_token`]],[`saml`,[]],[`preset`,[]]],p=[Z(`clients.columns.name`),{label:Z(`clients.columns.resources`),hide:!0},Z(`clients.columns.source`),{label:Z(`clients.columns.namespaces`),hide:!0,right:!0},{label:Z(`clients.columns.scopes`),hide:!0},{label:Z(`clients.columns.approved_by`),hide:!0},{label:Z(`clients.columns.registered`),hide:!0}],m=ct(),h=T(!1),g=T(!1),_=T(null),v=T(w([])),y=T(w([])),b=T(w(x()));function x(){return{name:``,kind:`service`,redirects:``,resources:``,scopes:[],metadata:``,entityId:``,certificate:``,sloUrl:``,requestsSigned:!1,preset:``,baseUrl:``,slug:``}}let S=P(()=>n(y).find(e=>e.key===n(b).preset)),E=e=>e.split(`
|
|
126
|
+
`).map(e=>e.trim()).filter(Boolean);async function D(){if(C(b,x(),!0),C(_,null),C(h,!0),m.clear(),n(v).length)return;let e=await m.attempt(()=>r.api.query(`query Scopes { scopesSupported appPresets { key name asks guide } }`));e&&(C(v,e.scopesSupported,!0),C(y,e.appPresets,!0))}async function k(){let e=await m.attempt(()=>r.api.query(`mutation Read($xml: String!) {
|
|
127
|
+
readSamlApplicationMetadata(xml: $xml) { entityId acsUrls certificate requestsSigned sloUrl }
|
|
128
|
+
}`,{xml:n(b).metadata}));if(!e)return;let t=e.readSamlApplicationMetadata;n(b).entityId=t.entityId??n(b).entityId,n(b).redirects=t.acsUrls.join(`
|
|
129
|
+
`)||n(b).redirects,n(b).certificate=t.certificate??n(b).certificate,n(b).sloUrl=t.sloUrl??n(b).sloUrl,n(b).requestsSigned=t.requestsSigned}function A(){return n(b).kind===`preset`?[`
|
|
130
|
+
mutation AddApp($preset: ID!, $baseUrl: String!, $name: String, $slug: String) {
|
|
131
|
+
addApp(preset: $preset, baseUrl: $baseUrl, name: $name, slug: $slug) {
|
|
132
|
+
client { clientId name } secret guide settings { label value }
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
`,{preset:n(b).preset,baseUrl:n(b).baseUrl.trim(),name:n(b).name.trim()||null,slug:n(b).slug.trim()||null},`addApp`]:n(b).kind===`saml`?[`
|
|
136
|
+
mutation Saml(
|
|
137
|
+
$name: String!, $entityId: String!, $acsUrls: [String!]!, $certificate: String, $requestsSigned: Boolean,
|
|
138
|
+
$sloUrl: String
|
|
139
|
+
) {
|
|
140
|
+
createSamlApplication(
|
|
141
|
+
name: $name, entityId: $entityId, acsUrls: $acsUrls, certificate: $certificate, requestsSigned: $requestsSigned,
|
|
142
|
+
sloUrl: $sloUrl
|
|
143
|
+
) {
|
|
144
|
+
client { clientId name }
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
`,{name:n(b).name.trim(),entityId:n(b).entityId.trim(),acsUrls:E(n(b).redirects),certificate:n(b).certificate.trim()||null,requestsSigned:n(b).requestsSigned,sloUrl:n(b).sloUrl.trim()||null},`createSamlApplication`]:[`
|
|
148
|
+
mutation Create(
|
|
149
|
+
$name: String!, $grantTypes: [String!], $redirectUris: [String!],
|
|
150
|
+
$resources: [String!], $allowedScopes: [String!]
|
|
151
|
+
) {
|
|
152
|
+
createClient(
|
|
153
|
+
name: $name, grantTypes: $grantTypes, redirectUris: $redirectUris,
|
|
154
|
+
resources: $resources, allowedScopes: $allowedScopes
|
|
155
|
+
) {
|
|
156
|
+
secret client { clientId name }
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
`,{name:n(b).name.trim(),grantTypes:l.find(([e])=>e===n(b).kind)[1],redirectUris:n(b).kind===`app`?E(n(b).redirects):[],resources:E(n(b).resources),allowedScopes:n(b).scopes},`createClient`]}async function M(){let[e,t,n]=A();C(g,!0);let i=await m.attempt(()=>r.api.query(e,t));C(g,!1),i&&(C(_,i[n],!0),C(h,!1),ie())}let N=T(``),L=T(``),R=T(!1),z=T(w([])),te=T(!0);async function W(){C(te,!0);let e=await m.attempt(()=>r.api.query(`
|
|
160
|
+
query Clients($search: String, $archived: Boolean, $afterId: ID, $limit: Int) {
|
|
161
|
+
clients(search: $search, archived: $archived, afterId: $afterId, limit: $limit) {
|
|
162
|
+
clientId name dynamic approvedAt archivedAt logoUrl(size: 64)
|
|
163
|
+
requiredScopes allowedScopes resources createdAt
|
|
164
|
+
approvedBy { identifier }
|
|
165
|
+
namespaces { name }
|
|
166
|
+
}
|
|
167
|
+
clientCount(search: $search, archived: $archived)
|
|
168
|
+
}
|
|
169
|
+
`,{search:n(L)||null,archived:n(R),afterId:a.cursor,limit:a.size}));C(te,!1),e&&(C(z,e.clients,!0),a.counted(e.clientCount))}function re(e){e===`forward`?a.forward(n(z).at(-1)?.clientId):a.back(),W()}W();function ie(){a.reset(),W()}function K(){C(L,n(N),!0),ie()}function q(e){C(R,e,!0),ie()}let J=P(()=>n(L)?Z(n(R)?`clients.empty.archived_matches`:`clients.empty.matches`,{query:n(L)}):n(R)?Z(`clients.empty.archived`):Z(`clients.empty.none`));{let r=e=>{var r=na(),i=d(r);{let e=P(()=>Z(`clients.archived`));ta(i,{get label(){return n(e)},onchange:q,get checked(){return n(R)},set checked(e){C(R,e,!0)}})}var a=u(i,2);{let e=P(()=>Z(`clients.search`)),t=P(()=>Z(`clients.search_placeholder`));jt(a,{get label(){return n(e)},get placeholder(){return n(t)},onsearch:K,get value(){return n(N)},set value(e){C(N,e,!0)}})}var o=u(a,2),s=G(o,!0);c(e=>H(s,e),[()=>Z(`clients.add`)]),f(`click`,o,D),t(e,r)},x=P(()=>Z(`clients.title`));wn(e,{get title(){return n(x)},actions:r,children:(e,r)=>{var x=ba(),w=d(x);vn(w,{get feedback(){return m.state}});var T=u(w,2),E=e=>{{let r=P(()=>Z(`clients.add`));Q(e,{get title(){return n(r)},children:(e,r)=>{var a=ca(),o=d(a);{let e=P(()=>Z(`clients.name`)),t=P(()=>Z(`clients.name_placeholder`));$(o,{get label(){return n(e)},get placeholder(){return n(t)},get value(){return n(b).name},set value(e){n(b).name=e}})}var p=u(o,2);Y(p,21,()=>l,([e])=>e,(e,r)=>{var i=P(()=>I(n(r),1));let a=()=>n(i)[0];var o=ra(),s=G(o,!0);c(e=>{F(o,`aria-pressed`,n(b).kind===a()),H(s,e)},[()=>Z(`clients.kinds.${a()}`)]),f(`click`,o,()=>n(b).kind=a()),t(e,o)}),U(p);var m=u(p,2),_=e=>{var r=ia(),a=d(r);{let e=P(()=>Z(`clients.app`)),t=P(()=>[[``,Z(`clients.choose`)],...n(y).map(e=>[e.key,e.name])]);$i(a,{get label(){return n(e)},get value(){return n(b).preset},get options(){return n(t)},onchange:e=>{n(b).preset=e,n(b).slug=n(y).find(t=>t.key===e)?.asks?.name??``}})}var o=u(a,2);{let e=P(()=>Z(`clients.address`));$(o,{get label(){return n(e)},placeholder:`https://grafana.example.com`,get value(){return n(b).baseUrl},set value(e){n(b).baseUrl=e}})}var s=u(o,2),c=e=>{{let t=P(()=>Z(`clients.slug`));$(e,{get label(){return n(t)},get placeholder(){return n(S).asks.name},get value(){return n(b).slug},set value(e){n(b).slug=e}})}};i(s,e=>{n(S)?.asks?.name&&e(c)}),t(e,r)};i(m,e=>{n(b).kind===`preset`&&e(_)});var x=u(m,2),w=G(x,!0),T=u(x,2),E=e=>{var r=aa(),i=d(r),a=s(i),o=G(a,!0),l=u(a,2);ne(l),U(i);var p=u(i,2),m=G(p,!0),h=u(p,2);{let e=P(()=>Z(`clients.entity_id`));$(h,{get label(){return n(e)},placeholder:`https://wiki.example.com/saml`,get value(){return n(b).entityId},set value(e){n(b).entityId=e}})}var g=u(h,2),_=s(g),v=G(_,!0),y=u(_,2);ne(y),U(g);var x=u(g,2),S=s(x),C=G(S,!0),w=u(S,2);ne(w),U(x);var T=u(x,2);{let e=P(()=>Z(`clients.slo_url`));$(T,{get label(){return n(e)},placeholder:`https://wiki.example.com/saml/slo`,get value(){return n(b).sloUrl},set value(e){n(b).sloUrl=e}})}var E=u(T,2);{let e=P(()=>Z(`clients.requests_signed`));ta(E,{get label(){return n(e)},get checked(){return n(b).requestsSigned},set checked(e){n(b).requestsSigned=e}})}c((e,t,n,r,i)=>{H(o,e),p.disabled=t,H(m,n),H(v,r),H(C,i)},[()=>Z(`clients.metadata`),()=>!n(b).metadata.trim(),()=>Z(`clients.read`),()=>Z(`clients.acs`),()=>Z(`clients.certificate`)]),ee(l,()=>n(b).metadata,e=>n(b).metadata=e),f(`click`,p,k),ee(y,()=>n(b).redirects,e=>n(b).redirects=e),ee(w,()=>n(b).certificate,e=>n(b).certificate=e),t(e,r)};i(T,e=>{n(b).kind===`saml`&&e(E)});var D=u(T,2),O=e=>{var r=oa(),i=s(r),a=G(i,!0),o=u(i,2);ne(o),U(r),c(e=>H(a,e),[()=>Z(`clients.redirect_uris`)]),ee(o,()=>n(b).redirects,e=>n(b).redirects=e),t(e,r)};i(D,e=>{n(b).kind===`app`&&e(O)});var A=u(D,2),j=e=>{var r=sa(),i=d(r),a=s(i),o=G(a,!0),l=u(a,2);ne(l),U(i);var f=u(i,2),p=s(f),m=G(p,!0);un(u(p,2),{get value(){return n(b).scopes},get available(){return n(v)},onchange:e=>n(b).scopes=e}),U(f),c((e,t)=>{H(o,e),H(m,t)},[()=>Z(`clients.resources`),()=>Z(`clients.scopes`)]),ee(l,()=>n(b).resources,e=>n(b).resources=e),t(e,r)};i(A,e=>{n(b).kind!==`saml`&&e(j)});var N=u(A,2),L=s(N),R=G(L,!0),z=u(L,2),B=G(z,!0);U(N),c((e,t,n,r,i)=>{F(p,`aria-label`,e),H(w,t),L.disabled=n,H(R,r),H(B,i)},[()=>Z(`clients.kind`),()=>n(b).kind===`preset`?Z(`clients.hints.preset`):n(b).kind===`service`?Z(`clients.hints.service`):n(b).kind===`saml`?Z(`clients.hints.saml`):Z(`clients.hints.app`),()=>n(g)||(n(b).kind===`preset`?!n(b).preset||!n(b).baseUrl.trim():!n(b).name.trim()||n(b).kind===`saml`&&!n(b).entityId.trim()),()=>n(g)?Z(`clients.adding`):Z(`clients.submit`),()=>Z(`clients.cancel`)]),f(`click`,L,M),f(`click`,z,()=>C(h,!1)),t(e,a)},$$slots:{default:!0}})}};i(T,e=>{n(h)&&e(E)});var D=u(T,2),O=e=>{{let r=P(()=>Z(`clients.created.title`,{name:n(_).client.name}));Q(e,{get title(){return n(r)},children:(e,r)=>{var a=pa(),l=d(a),f=G(l,!0),p=u(l,2),m=G(p,!0),h=u(p,2),g=e=>{var r=la(),i=G(r,!0);c(()=>H(i,n(_).secret)),t(e,r)};i(h,e=>{n(_).secret&&e(g)});var v=u(h,2),y=e=>{var r=fa(),a=d(r),o=s(a),l=u(o),f=e=>{var r=ua(),i=d(r),a=G(i,!0);j(),c(e=>{F(i,`href`,n(_).guide),H(a,e)},[()=>Z(`clients.created.guide`)]),t(e,r)};i(l,e=>{n(_).guide&&e(f)}),U(a);var p=u(a,2);Y(p,21,()=>n(_).settings,e=>e.label,(e,r)=>{var i=da(),a=d(i),o=G(a,!0),s=u(a,2),l=G(s,!0);c(()=>{H(o,n(r).label),H(l,n(r).value)}),t(e,i)}),U(p),c(e=>H(o,`${e??``} `),[()=>Z(`clients.created.settings`,{name:n(_).client.name})]),t(e,r)};i(v,e=>{n(_).settings&&e(y)});var b=u(v,2);{let e=P(()=>`/clients/${n(_).client.clientId}`);nt(b,{get to(){return n(e)},class:`btn btn-sm self-start`,children:(e,n)=>{j();var r=o();c(e=>H(r,e),[()=>Z(`clients.created.open`)]),t(e,r)},$$slots:{default:!0}})}c(e=>{H(f,e),H(m,n(_).client.clientId)},[()=>Z(n(_).secret?`clients.created.client_id_and_secret`:`clients.created.client_id`)]),t(e,a)},$$slots:{default:!0}})}};i(D,e=>{n(_)&&e(O)});var A=u(D,2),N=e=>{it(e,{})},L=e=>{var r=ya(),l=d(r);Pt(l,{get columns(){return p},get count(){return n(z).length},get empty(){return n(J)},rows:e=>{var r=V(),a=d(r);Y(a,17,()=>n(z),e=>e.clientId,(e,r)=>{{let a=P(()=>`/clients/${n(r).clientId}`);kt(e,{get to(){return n(a)},children:(e,a)=>{var l=va(),f=d(l),p=s(f),m=s(p);Yi(m,{get client(){return n(r)},class:`size-8 rounded text-sm`});var h=u(m,2),g=s(h);{let e=P(()=>`/clients/${n(r).clientId}`);nt(g,{get to(){return n(e)},class:`link link-hover font-medium`,children:(e,i)=>{j();var a=o();c(()=>H(a,n(r).name)),t(e,a)},$$slots:{default:!0}})}var _=u(g,2),v=G(_,!0);U(h),U(p),U(f);var y=u(f,2),b=s(y),x=G(b,!0);U(y);var S=u(y,2),C=s(S),w=e=>{var n=ma(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`clients.self_registered`)]),t(e,n)},T=e=>{var n=ha(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`clients.approved`)]),t(e,n)};i(C,e=>{n(r).dynamic?e(w):e(T,-1)}),U(S);var E=u(S,2),D=G(E,!0),O=u(E,2),k=s(O),A=e=>{var i=ga(),a=s(i),o=G(a,!0),l=u(a);U(i),c((e,t,n)=>{F(i,`title`,e),H(o,t),H(l,` ${n??``}`)},[()=>bt(n(r).requiredScopes),()=>Z(`clients.always`),()=>bt(n(r).requiredScopes)]),t(e,i)};i(k,e=>{n(r).requiredScopes.length&&e(A)});var M=u(k,2),N=e=>{var i=_a(),a=s(i),o=G(a,!0),l=u(a);U(i),c((e,t,n)=>{F(i,`title`,e),H(o,t),H(l,` ${n??``}`)},[()=>bt(n(r).allowedScopes),()=>Z(`clients.on_request`),()=>bt(n(r).allowedScopes)]),t(e,i)};i(M,e=>{n(r).allowedScopes.length&&e(N)}),U(O);var I=u(O,2),L=G(I,!0),R=u(I,2),z=G(R,!0);c((e,t,i)=>{F(_,`title`,n(r).clientId),H(v,n(r).clientId),F(b,`title`,e),H(x,t),H(D,n(r).namespaces.length||`—`),H(L,n(r).approvedBy?.identifier??`—`),H(z,i)},[()=>bt(n(r).resources),()=>bt(n(r).resources),()=>_t(n(r).createdAt)]),t(e,l)},$$slots:{default:!0}})}}),t(e,r)},$$slots:{rows:!0}}),st(u(l,2),{get pages(){return a},get shown(){return n(z).length},get busy(){return n(te)},onpage:re}),t(e,r)};i(A,e=>{n(te)&&n(z).length===0?e(N):e(L,-1)}),t(e,x)},$$slots:{actions:!0,default:!0}})}B()}l([`click`]);var Sa=p(`<nav class="settings-tabs"></nav>`);function Ca(e,r){O(r,!0);let i=z(r,`part`,3,null),a=[[null,``,`general`],[`access`,`/access`,`access`],[`endpoints`,`/endpoints`,`endpoints`],[`usage`,`/usage`,`usage`]];var s=Sa();Y(s,21,()=>a,([e,t,n])=>n,(e,a)=>{var s=P(()=>I(n(a),3));let l=()=>n(s)[0],u=()=>n(s)[1],d=()=>n(s)[2];{let a=P(()=>`/clients/${r.clientId}${u()}`),s=P(()=>(i()??null)===l()?`settings-tab-on`:``);nt(e,{get to(){return n(a)},get class(){return`settings-tab ${n(s)??``}`},children:(e,n)=>{j();var r=o();c(e=>H(r,e),[()=>Z(`client.parts.${d()}`)]),t(e,r)},$$slots:{default:!0}})}}),U(s),c(e=>F(s,`aria-label`,e),[()=>Z(`client.parts.label`)]),t(e,s),B()}var wa=`
|
|
170
|
+
key name signup nickname email emailVerified phone phoneVerified
|
|
171
|
+
passwordMinimum refuseCommonPasswords passwordRequired firstFactors secondFactors secondFactorRequired appsRequireSecondFactor sessionLifetime sessionIdleTimeout refuseBreachedPasswords riskStepUpAt riskRefuseAt proofOfWork
|
|
172
|
+
emailDomains providers confirmation hidden signupScopes archivedAt
|
|
173
|
+
`,Ta=[`password`,`passkey`,`provider`,`email_code`,`otp`,`backup_codes`],Ea=[`none`,`code`,`link`,`approval`],Da=[`off`,`optional`,`required`],Oa=(e,t,n)=>e.includes(n)?Z(`policy_rules.${t}.${n}`):n,ka=(e,t)=>e?.length?e.map(e=>Oa(Ta,`factors`,e)).join(`, `):Z(`policy_rules.values.${t}`),Aa=e=>Z(e?`policy_rules.answers.yes`:`policy_rules.answers.no`),ja=e=>Z(`policy_rules.values.${e}`),Ma=[[86400,`day`],[3600,`hour`],[60,`minute`]];function Na(e){let[t,n]=Ma.find(([t])=>e%t===0)??[1,`second`];return Z(`policy_rules.units.${n}`,{count:e/t})}var Pa=e=>Z(`policy_rules.terms.${e}`);function Fa(e){return[[Pa(`signup`),e.signup?ja(`open`):ja(`invitation_only`)],[Pa(`email_domains`),ka(e.emailDomains,`any`)],[Pa(`proof_of_work`),e.proofOfWork?Z(`policy_rules.values.bits`,{bits:e.proofOfWork}):ja(`off`)],[Pa(`hidden`),Aa(e.hidden)],[Pa(`nickname`),Oa(Da,`presence`,e.nickname)],[Pa(`email`),Oa(Da,`presence`,e.email)],[Pa(`email_verified`),Aa(e.emailVerified)],[Pa(`phone`),Oa(Da,`presence`,e.phone)],[Pa(`phone_verified`),Aa(e.phoneVerified)],[Pa(`first_factors`),ka(e.firstFactors,`nothing`)],[Pa(`providers`),e.providers===null?ja(`every_one`):ka(e.providers,`none`)],[Pa(`password`),Z(e.refuseCommonPasswords?`policy_rules.values.not_common`:`policy_rules.values.password`,{minimum:e.passwordMinimum})],[Pa(`password_required`),Aa(e.passwordRequired)],[Pa(`second_factors`),ka(e.secondFactors,`none`)],[Pa(`second_factor_required`),Aa(e.secondFactorRequired)],[Pa(`apps_require_second_factor`),Aa(e.appsRequireSecondFactor)],[Pa(`session_lifetime`),e.sessionLifetime?Na(e.sessionLifetime):ja(`default_lifetime`)],[Pa(`refuse_breached`),Aa(e.refuseBreachedPasswords)],[Pa(`risk_step_up`),e.riskStepUpAt?Z(`policy_rules.values.at`,{score:e.riskStepUpAt}):ja(`never`)],[Pa(`risk_refuse`),e.riskRefuseAt?Z(`policy_rules.values.at`,{score:e.riskRefuseAt}):ja(`never`)],[Pa(`idle_timeout`),e.sessionIdleTimeout?Na(e.sessionIdleTimeout):ja(`never`)],[Pa(`confirmation`),Oa(Ea,`confirmations`,e.confirmation)],[Pa(`signup_scopes`),ka(e.signupScopes,`none`)]]}function Ia(e,t){let n=new Map(Fa(t));return Fa(e).filter(([e,t])=>n.get(e)!==t).map(([e,t])=>({term:e,value:t,instead:n.get(e)}))}var La=p(`<span class="hint">· <!></span>`),Ra=p(`<button type="button" class="btn btn-xs btn-error btn-outline"> </button>`),za=p(`<span class="hint text-xs"> </span>`),Ba=p(`<li class="flex-wrap"><div class="flex min-w-0 flex-col"><span class="text-sm"><code class="font-mono"> </code> <!></span> <span class="hint truncate text-xs"><span class="font-mono"> </span> </span></div> <div class="ml-auto"><!></div></li>`),Va=p(`<!> <ul class="compact-list"></ul>`,1);function Ha(e,r){O(r,!0);let a=z(r,`showClient`,3,!1),l=z(r,`row`,3,!1),p=ct();async function m(e){confirm(Z(`namespaces.release_confirm`,{name:e.name}))&&await p.attempt(()=>r.api.query(`
|
|
174
|
+
mutation Release($name: String!) {
|
|
175
|
+
releaseNamespace(name: $name) { released }
|
|
176
|
+
}
|
|
177
|
+
`,{name:e.name}),Z(`namespaces.released`,{name:e.name}))&&await r.onreleased()}{let h=P(()=>Z(`namespaces.title`));Q(e,{get row(){return l()},get title(){return n(h)},children:(e,l)=>{var h=Va(),g=d(h);vn(g,{get feedback(){return p.state}});var _=u(g,2);Y(_,21,()=>r.rows,e=>e.name,(e,r)=>{var l=Ba(),d=s(l),p=s(d),h=s(p),g=G(h,!0),_=u(h,2),v=e=>{var a=La(),l=u(s(a)),d=e=>{{let i=P(()=>`/clients/${n(r).client.clientId}`);nt(e,{get to(){return n(i)},class:`link link-hover`,children:(e,i)=>{j();var a=o();c(()=>H(a,n(r).client.name)),t(e,a)},$$slots:{default:!0}})}},f=e=>{var n=o();c(e=>H(n,e),[()=>Z(`namespaces.nothing`)]),t(e,n)};i(l,e=>{n(r).client?e(d):e(f,-1)}),U(a),t(e,a)};i(_,e=>{a()&&e(v)}),U(p);var y=u(p,2),b=s(y),x=G(b,!0),S=u(b);U(y),U(d);var C=u(d,2),w=s(C),T=e=>{var i=Ra(),a=G(i,!0);c(e=>H(a,e),[()=>Z(`namespaces.release`)]),f(`click`,i,()=>m(n(r))),t(e,i)},E=e=>{var n=za(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`namespaces.archive_to_release`)]),t(e,n)};i(w,e=>{n(r).releasable?e(T):e(E,-1)}),U(C),U(l),c(e=>{H(g,n(r).name),F(b,`title`,n(r).resource),H(x,n(r).resource),H(S,` · ${e??``}`)},[()=>_t(n(r).claimedAt)]),t(e,l)}),U(_),t(e,h)},$$slots:{default:!0}})}B()}l([`click`]);var Ua=p(`<span class="hint"> </span>`),Wa=p(`<label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea textarea-sm w-full font-mono text-xs" autocapitalize="none" autocorrect="off" spellcheck="false"></textarea> <!> <button type="button" class="btn btn-sm self-start"> </button></label>`);function Ga(e,r){O(r,!0);let a=z(r,`hint`,3,null),o=z(r,`value`,19,()=>[]),l=z(r,`save`,19,()=>Z(`ui.save`)),d=z(r,`rows`,3,3),p=T(w(S(()=>o().join(`
|
|
178
|
+
`)))),m=T(w(S(()=>o().join(`
|
|
179
|
+
`))));x(()=>{let e=o().join(`
|
|
180
|
+
`);e!==n(m)&&(C(m,e,!0),C(p,e,!0))});let h=P(()=>n(p)!==n(m)),g=()=>n(p).split(`
|
|
181
|
+
`).map(e=>e.trim()).filter(Boolean);var _=Wa(),v=s(_),y=G(v,!0),b=u(v,2);ne(b);var E=u(b,2),D=e=>{var n=Ua(),r=G(n,!0);c(()=>H(r,a())),t(e,n)};i(E,e=>{a()&&e(D)});var k=u(E,2),A=G(k,!0);U(_),c(()=>{H(y,r.label),F(b,`rows`,d()),k.disabled=!n(h),H(A,l())}),ee(b,()=>n(p),e=>C(p,e)),f(`click`,k,()=>r.onsave(g())),t(e,_),B()}l([`click`]);var Ka=p(`<div class="alert alert-error alert-soft text-sm" role="alert"> </div>`),qa=p(`<div class="alert alert-warning alert-soft flex-wrap items-center gap-3 text-sm" role="status"><span> </span> <button type="button" class="btn btn-sm"> </button></div>`),Ja=p(`<div class="alert alert-warning alert-soft flex-col items-start gap-2" role="status"><span class="font-medium"> </span> <code class="font-mono text-sm break-all"> </code></div>`),Ya=p(`<label class="flex items-center gap-2 text-sm"><input type="checkbox" class="checkbox checkbox-sm"/> <code class="hint font-mono"> </code></label>`),Xa=p(`<div class="flex flex-col gap-1"></div>`),Za=p(`<p class="text-sm opacity-85"> <!> </p>`),Qa=p(`<!> <!> <p class="hint"> </p>`,1),$a=p(`<div class="flex flex-col gap-1.5"><span class="field-label"> </span> <!></div> <div class="flex flex-col gap-1.5"><span class="field-label"> </span> <!></div>`,1),eo=p(`<!> <!>`,1),to=p(`<!> <!> <!>`,1),no=p(`<p class="hint"> </p> <!> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea textarea-sm w-full font-mono text-xs" rows="4" spellcheck="false"></textarea> <button type="button" class="btn btn-sm self-start"> </button></label> <!>`,1),ro=p(`<label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea textarea-sm w-full font-mono text-xs" rows="6" spellcheck="false"></textarea> <button type="button" class="btn btn-sm self-start"> </button></label>`),io=p(`<p class="hint"> </p> <!> <!>`,1),ao=p(`<!> <!> <!> <!>`,1),oo=p(`<p class="hint"> </p>`),so=p(`<option> </option>`),co=p(`<label class="flex flex-col gap-1.5"><span class="field-label"> </span> <select class="select select-sm w-full"></select></label>`),lo=p(`<p class="text-xs text-warning"> </p>`),uo=p(`<label class="flex flex-col gap-1.5"><span class="field-label"> </span> <select class="select select-sm w-full"></select></label> <!> <!>`,1),fo=p(`<button type="button" class="btn btn-sm"> </button>`),po=p(`<button type="button" class="btn btn-sm btn-error btn-outline"> </button>`),mo=p(`<!> <!> <!> <!> <!> <!> <div class="flex flex-wrap gap-2 pt-1"><!> <!></div>`,1),ho=p(`<!> <div class="flex flex-col gap-1.5"><!> <span class="hint"> </span></div> <!> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <select class="select select-sm w-full"></select></label> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea textarea-sm w-full font-mono text-xs" rows="3" spellcheck="false"></textarea> <button type="button" class="btn btn-sm self-start"> </button></label> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea textarea-sm w-full font-mono text-xs" rows="5" spellcheck="false"></textarea> <span class="hint"> </span> <button type="button" class="btn btn-sm self-start"> </button></label> <!> <!>`,1),go=p(`<div class="flex items-center gap-3"><!> <p class="hint"><!></p></div> <form class="flex flex-col gap-3"><!> <button type="submit" class="btn btn-sm self-start"> </button></form>`,1),_o=p(`<dt class="opacity-80"> </dt> <dd> <span class="opacity-75 line-through"> </span></dd>`,1),vo=p(`<div class="flex flex-col gap-1.5"><span class="field-label"> </span> <dl class="grid grid-cols-[auto_1fr] gap-x-4 gap-y-1 text-sm"></dl></div>`),yo=p(`<label class="flex flex-col gap-1.5"><span class="field-label"> </span> <select class="select select-sm w-full"><option> </option><!></select></label> <!> <!> <!> <form class="flex flex-col gap-3"><div class="grid gap-3 sm:grid-cols-3"><!> <!> <!></div> <button type="submit" class="btn btn-sm self-start"> </button></form> <!> <!>`,1),bo=p(`<!> <!> <!> <!> <div class="grid gap-4"><!></div>`,1);function xo(e,r){O(r,!0);let a=z(r,`part`,3,null),l=`
|
|
182
|
+
query Client($clientId: ID!) {
|
|
183
|
+
client(clientId: $clientId) {
|
|
184
|
+
clientId name dynamic approvedAt archivedAt secretExpiresAt createdAt
|
|
185
|
+
tokenEndpointAuthMethod applicationType clientUri logoUri tosUri policyUri logoUrl(size: 128)
|
|
186
|
+
subjectType sectorIdentifierUri
|
|
187
|
+
redirectUris postLogoutRedirectUris grantTypes responseTypes resources
|
|
188
|
+
requiredScopes allowedScopes allowedGroups
|
|
189
|
+
backchannelLogoutUri backchannelLogoutSessionRequired
|
|
190
|
+
requirePushedAuthorizationRequests requireSignedRequestObject consentRequired jwks jwksUri
|
|
191
|
+
authorizationDetailsTypes authorizationDetailsSchemas consentLifetime
|
|
192
|
+
accessTokenLifetime refreshTokenLifetime
|
|
193
|
+
protocol samlEntityId samlCertificate samlNameIdFormat samlRequestsSigned samlIdpInitiated samlAttributes samlSloUrl
|
|
194
|
+
signInPolicy { ${wa} }
|
|
195
|
+
events(limit: 25) {
|
|
196
|
+
id action label createdAt ipAddress details
|
|
197
|
+
actor { uuid identifier }
|
|
198
|
+
by { uuid identifier }
|
|
199
|
+
device { id label }
|
|
200
|
+
}
|
|
201
|
+
approvedBy { identifier }
|
|
202
|
+
namespaces { name resource claimedAt releasable }
|
|
203
|
+
consents(limit: 25) {
|
|
204
|
+
id scopes audience updatedAt expiresAt authorizationDetails
|
|
205
|
+
actor { uuid identifier }
|
|
206
|
+
}
|
|
207
|
+
tokens(limit: 25) {
|
|
208
|
+
id kind scopes audience parentId createdAt expiresAt
|
|
209
|
+
actor { uuid identifier }
|
|
210
|
+
device { id label }
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
scopesSupported
|
|
214
|
+
groups { key name }
|
|
215
|
+
samlMetadataUrl
|
|
216
|
+
signInPolicies { key name }
|
|
217
|
+
defaultSignInPolicy { ${wa} }
|
|
218
|
+
}
|
|
219
|
+
`,p=ct(),m=T(null),h=T(w([])),g=T(w([])),_=T(``),y=T(w([])),b=T(null),x=T(``),S=T(``),D=T(``),k=T(``),A=T(``),N=T(``),R=T(``),te=T(``),W=T(``),re=T(``),K=T(``),q=T(``),J=T(``),ae=T(``),oe=T(w({})),se=T(``),ce=T(!0),le=T(null),ue=[[`urn:oasis:names:tc:SAML:2.0:nameid-format:persistent`,Z(`client.name_ids.persistent`)],[`urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress`,Z(`client.name_ids.email`)]],de=P(()=>n(m)?.protocol===`saml`),fe=P(()=>n(m)?[{term:Z(`client.facts.origin`),value:n(m).dynamic?Z(`client.facts.self_registered`):Z(`client.facts.approved`)},{term:Z(`client.facts.approved_by`),value:n(m).approvedBy?.identifier},{term:Z(`client.facts.registered`),value:_t(n(m).createdAt)},{term:Z(`client.facts.grants`),value:bt(n(m).grantTypes),mono:!0},{term:Z(`client.facts.response_types`),value:bt(n(m).responseTypes),mono:!0}]:[]),pe=[[`public`,Z(`client.subjects.public`)],[`pairwise`,Z(`client.subjects.pairwise`)]],me=[[`refresh_token`,Z(`client.grants.refresh_token`)],[`urn:ietf:params:oauth:grant-type:device_code`,Z(`client.grants.device_code`)],[`urn:ietf:params:oauth:grant-type:token-exchange`,Z(`client.grants.token_exchange`)]],he=[[`logoUri`,`logo_uri`,`https://app.example.com/logo.png`],[`clientUri`,`client_uri`,`https://app.example.com`],[`tosUri`,`tos_uri`,`https://app.example.com/terms`],[`policyUri`,`policy_uri`,`https://app.example.com/privacy`]].map(([e,t,n])=>[e,Z(`client.links.${t}.label`),n]);async function ge(){let e=Object.fromEntries(he.map(([e])=>[e,n(oe)[e].trim()||null])),t=e.logoUri&&e.logoUri!==n(m).logoUri;await Se(e,Z(`client.notices.saved`)),t&&setTimeout(xe,3e3)}function _e(){return Se({accessTokenLifetime:n(R)?Number(n(R))*60:0,refreshTokenLifetime:n(te)?Number(n(te))*86400:0,consentLifetime:n(N)?Number(n(N))*86400:0},Z(`client.notices.saved`))}let ve=P(()=>n(m)?.signInPolicy&&n(b)?Ia(n(m).signInPolicy,n(b)):[]),ye=P(()=>!!(n(m)?.jwks||n(m)?.jwksUri)),be=e=>Object.entries(e??{}).map(([e,t])=>`${e} = ${t}`).join(`
|
|
220
|
+
`);async function xe(){C(ce,!0);try{let e=await r.api.query(l,{clientId:r.clientId});C(m,e.client,!0),C(h,e.scopesSupported,!0),C(g,e.groups,!0),C(_,(e.client?.allowedGroups??[]).filter(e=>e.includes(`:`)).join(`, `),!0),C(y,e.signInPolicies,!0),C(b,e.defaultSignInPolicy,!0),C(x,e.client?.name??``,!0),C(S,e.client?.backchannelLogoutUri??``,!0),C(D,e.client?.jwksUri??``,!0),C(k,e.client?.jwks?JSON.stringify(e.client.jwks,null,2):``,!0),C(N,e.client?.consentLifetime?String(Math.round(e.client.consentLifetime/86400)):``,!0),C(R,e.client?.accessTokenLifetime?String(Math.round(e.client.accessTokenLifetime/60)):``,!0),C(te,e.client?.refreshTokenLifetime?String(Math.round(e.client.refreshTokenLifetime/86400)):``,!0),C(A,Object.keys(e.client?.authorizationDetailsSchemas??{}).length?JSON.stringify(e.client.authorizationDetailsSchemas,null,2):``,!0),C(W,e.client?.tokenEndpointAuthMethod??``,!0),C(re,e.client?.sectorIdentifierUri??``,!0),C(K,e.samlMetadataUrl,!0),C(q,e.client?.samlCertificate??``,!0),C(J,e.client?.samlEntityId??``,!0),C(ae,e.client?.samlSloUrl??``,!0),C(oe,Object.fromEntries(he.map(([t])=>[t,e.client?.[t]??``])),!0),C(se,be(e.client?.samlAttributes),!0)}catch(e){p.blame(e)}finally{C(ce,!1)}}xe();async function X(e,t,n){let i=await p.attempt(()=>r.api.query(e,t),n);return i&&await xe(),i}let Se=(e,t)=>X(`mutation Update(
|
|
221
|
+
$clientId: ID!, $name: String, $requiredScopes: [String!], $allowedScopes: [String!],
|
|
222
|
+
$backchannelLogoutUri: String, $redirectUris: [String!],
|
|
223
|
+
$postLogoutRedirectUris: [String!], $resources: [String!],
|
|
224
|
+
$requirePushedAuthorizationRequests: Boolean, $consentRequired: Boolean,
|
|
225
|
+
$signInPolicy: ID, $grantTypes: [String!], $jwksUri: String,
|
|
226
|
+
$tokenEndpointAuthMethod: String, $requireSignedRequestObject: Boolean,
|
|
227
|
+
$samlCertificate: String, $samlRequestsSigned: Boolean, $samlIdpInitiated: Boolean,
|
|
228
|
+
$samlNameIdFormat: String, $samlEntityId: String, $samlAttributes: JSON, $samlSloUrl: String, $jwks: JSON,
|
|
229
|
+
$subjectType: String, $sectorIdentifierUri: String, $dpopBoundAccessTokens: Boolean,
|
|
230
|
+
$backchannelLogoutSessionRequired: Boolean, $clientUri: String, $logoUri: String,
|
|
231
|
+
$tosUri: String, $policyUri: String, $authorizationDetailsTypes: [String!],
|
|
232
|
+
$authorizationDetailsSchemas: JSON, $consentLifetime: Int, $allowedGroups: [String!],
|
|
233
|
+
$accessTokenLifetime: Int, $refreshTokenLifetime: Int
|
|
234
|
+
) {
|
|
235
|
+
updateClient(
|
|
236
|
+
clientId: $clientId, name: $name, requiredScopes: $requiredScopes,
|
|
237
|
+
allowedScopes: $allowedScopes, backchannelLogoutUri: $backchannelLogoutUri,
|
|
238
|
+
redirectUris: $redirectUris, postLogoutRedirectUris: $postLogoutRedirectUris,
|
|
239
|
+
resources: $resources,
|
|
240
|
+
requirePushedAuthorizationRequests: $requirePushedAuthorizationRequests,
|
|
241
|
+
consentRequired: $consentRequired,
|
|
242
|
+
signInPolicy: $signInPolicy,
|
|
243
|
+
grantTypes: $grantTypes,
|
|
244
|
+
jwksUri: $jwksUri,
|
|
245
|
+
tokenEndpointAuthMethod: $tokenEndpointAuthMethod,
|
|
246
|
+
requireSignedRequestObject: $requireSignedRequestObject,
|
|
247
|
+
samlCertificate: $samlCertificate,
|
|
248
|
+
samlRequestsSigned: $samlRequestsSigned,
|
|
249
|
+
samlIdpInitiated: $samlIdpInitiated,
|
|
250
|
+
samlNameIdFormat: $samlNameIdFormat,
|
|
251
|
+
samlEntityId: $samlEntityId,
|
|
252
|
+
samlAttributes: $samlAttributes,
|
|
253
|
+
samlSloUrl: $samlSloUrl,
|
|
254
|
+
jwks: $jwks,
|
|
255
|
+
subjectType: $subjectType,
|
|
256
|
+
sectorIdentifierUri: $sectorIdentifierUri,
|
|
257
|
+
dpopBoundAccessTokens: $dpopBoundAccessTokens,
|
|
258
|
+
backchannelLogoutSessionRequired: $backchannelLogoutSessionRequired,
|
|
259
|
+
clientUri: $clientUri,
|
|
260
|
+
logoUri: $logoUri,
|
|
261
|
+
tosUri: $tosUri,
|
|
262
|
+
policyUri: $policyUri,
|
|
263
|
+
authorizationDetailsTypes: $authorizationDetailsTypes,
|
|
264
|
+
authorizationDetailsSchemas: $authorizationDetailsSchemas,
|
|
265
|
+
consentLifetime: $consentLifetime
|
|
266
|
+
accessTokenLifetime: $accessTokenLifetime
|
|
267
|
+
refreshTokenLifetime: $refreshTokenLifetime
|
|
268
|
+
allowedGroups: $allowedGroups
|
|
269
|
+
) {
|
|
270
|
+
client { clientId }
|
|
271
|
+
}
|
|
272
|
+
}`,{clientId:r.clientId,...e},t),Ce=e=>e.split(/[\s,]+/).map(e=>e.trim()).filter(e=>e.includes(`:`));function we(e,t){let r=n(m).allowedGroups.filter(t=>t!==e);Se({allowedGroups:t?[...r,e]:r},Z(`client.notices.groups`))}function Te(){let e=n(m).allowedGroups.filter(e=>!e.includes(`:`));Se({allowedGroups:[...e,...Ce(n(_))]},Z(`client.notices.groups`))}let Ee=P(()=>n(m)?.grantTypes.includes(`client_credentials`)??!1),De=(e,t)=>t?[...new Set([...n(m).grantTypes,e])]:n(m).grantTypes.filter(t=>t!==e);function Oe(e){Se({grantTypes:De(`client_credentials`,e)},Z(e?`client.notices.unattended_on`:`client.notices.unattended_off`))}function ke(e){let t=Z(`client.confirm.subject`);if(e===n(m).subjectType||!confirm(t)){xe();return}Se({subjectType:e},Z(`client.notices.subject`))}function Ae(e){let t=n(W)===`private_key_jwt`&&n(m).tokenEndpointAuthMethod!==`private_key_jwt`,r=t?{...e,tokenEndpointAuthMethod:n(W)}:e;Se(r,Z(t?`client.notices.keys_signing`:`client.notices.keys`))}function je(){let e=n(k).trim();if(!e){Ae({jwks:null});return}try{Ae({jwks:JSON.parse(e),jwksUri:null})}catch{p.blame(Error(Z(`client.errors.jwks`)))}}function Me(){let e=n(A).trim();try{Se({authorizationDetailsSchemas:e?JSON.parse(e):{}},Z(`client.notices.declared`))}catch{p.blame(Error(Z(`client.errors.declared`)))}}function Ne(){let e=n(se).split(`
|
|
273
|
+
`).map(e=>e.trim()).filter(Boolean).map(e=>e.split(`=`).map(e=>e.trim()));if(e.some(e=>e.length!==2||!e[0]||!e[1])){p.blame(Error(Z(`client.errors.attributes`)));return}Se({samlAttributes:Object.fromEntries(e)},e.length?Z(`client.notices.attributes`):Z(`client.notices.attributes_default`))}let Pe=[[`client_secret_basic`,Z(`client.methods.client_secret_basic`)],[`client_secret_post`,Z(`client.methods.client_secret_post`)],[`private_key_jwt`,Z(`client.methods.private_key_jwt`)]];function Fe(e){if(C(W,e,!0),e===`private_key_jwt`&&!n(ye))return;let t=e===`private_key_jwt`?Z(`client.notices.signs_assertions`):n(m).tokenEndpointAuthMethod===`private_key_jwt`?Z(`client.notices.uses_secret`):Z(`client.notices.saved`);Se({tokenEndpointAuthMethod:e},t)}function Ie(){confirm(Z(`client.confirm.restore`))&&X(`mutation Restore($clientId: ID!) {
|
|
274
|
+
restoreClient(clientId: $clientId) { client { archivedAt } }
|
|
275
|
+
}`,{clientId:r.clientId},Z(`client.notices.restored`))}async function Le(){if(!confirm(Z(`client.confirm.rotate`)))return;let e=await X(`mutation Rotate($clientId: ID!) { rotateClientSecret(clientId: $clientId) { secret } }`,{clientId:r.clientId},Z(`client.notices.rotated`));e&&C(le,e.rotateClientSecret.secret,!0)}function Re(){confirm(Z(`client.confirm.archive`))&&X(`mutation Archive($clientId: ID!) { archiveClient(clientId: $clientId) { client { archivedAt } } }`,{clientId:r.clientId},Z(`client.notices.archived`))}var ze=V(),Be=d(ze),Ve=e=>{it(e,{})},He=e=>{var n=Ka(),r=G(n,!0);c(e=>H(r,e),[()=>p.state.failure??Z(`client.missing`)]),t(e,n)},Ue=e=>{{let l=P(()=>({to:`/clients`,label:Z(`client.back`)}));wn(e,{get title(){return n(m).name},get id(){return n(m).clientId},get back(){return n(l)},children:(e,l)=>{var w=bo(),T=d(w);vn(T,{get feedback(){return p.state}});var O=u(T,2),z=e=>{var r=qa(),i=s(r),a=G(i,!0),o=u(i,2),l=G(o,!0);U(r),c((e,t)=>{H(a,e),H(l,t)},[()=>Z(`client.archived_on`,{day:_t(n(m).archivedAt)}),()=>Z(`client.restore`)]),f(`click`,o,Ie),t(e,r)};i(O,e=>{n(m).archivedAt&&e(z)});var B=u(O,2),ce=e=>{var r=Ja(),i=s(r),a=G(i,!0),o=u(i,2),l=G(o,!0);U(r),c(e=>{H(a,e),H(l,n(le))},[()=>Z(`client.secret_once`)]),t(e,r)};i(B,e=>{n(le)&&e(ce)});var be=u(B,2);Ca(be,{get clientId(){return r.clientId},get part(){return a()}});var X=u(be,2),Ce=s(X),ze=e=>{var r=eo(),a=d(r);{let e=P(()=>Z(`client.groups.title`)),r=P(()=>Z(`client.groups.lede`));Q(a,{row:!0,get title(){return n(e)},get lede(){return n(r)},children:(e,r)=>{var a=Qa(),l=d(a),p=e=>{var r=Xa();Y(r,21,()=>n(g),e=>e.key,(e,r)=>{var i=Ya(),a=s(i);M(a);var o=u(a),l=u(o),d=G(l,!0);U(i),c(e=>{ie(a,e),H(o,` ${n(r).name??``} `),H(d,n(r).key)},[()=>n(m).allowedGroups.includes(n(r).key)]),f(`change`,a,e=>we(n(r).key,e.currentTarget.checked)),t(e,i)}),U(r),t(e,r)},h=e=>{var n=Za(),r=s(n),i=u(r);nt(i,{to:`/settings`,children:(e,n)=>{j();var r=o();c(e=>H(r,e),[()=>Z(`client.groups.add`)]),t(e,r)},$$slots:{default:!0}});var a=u(i);U(n),c((e,t)=>{H(r,`${e??``} `),H(a,` ${t??``}`)},[()=>Z(`client.groups.none`),()=>Z(`client.groups.limit`)]),t(e,n)};i(l,e=>{n(g).length?e(p):e(h,-1)});var v=u(l,2);{let e=P(()=>Z(`client.groups.roles`));$(v,{get label(){return n(e)},placeholder:`acme:owner, acme:billing`,onsave:Te,get value(){return n(_)},set value(e){C(_,e,!0)}})}var y=u(v,2),b=G(y,!0);c(e=>H(b,e),[()=>n(m).allowedGroups.length?Z(`client.groups.only`,{groups:n(m).allowedGroups.join(`, `)}):Z(`client.groups.everyone`)]),t(e,a)},$$slots:{default:!0}})}var l=u(a,2);{let e=P(()=>Z(`client.scopes.title`));Q(l,{row:!0,get title(){return n(e)},children:(e,r)=>{var i=$a(),a=d(i),o=s(a),l=G(o,!0);un(u(o,2),{get value(){return n(m).requiredScopes},get available(){return n(h)},onchange:e=>Se({requiredScopes:e},Z(`client.notices.scopes`))}),U(a);var f=u(a,2),p=s(f),g=G(p,!0);un(u(p,2),{get value(){return n(m).allowedScopes},get available(){return n(h)},onchange:e=>Se({allowedScopes:e},Z(`client.notices.scopes`))}),U(f),c((e,t)=>{H(l,e),H(g,t)},[()=>Z(`client.scopes.always`),()=>Z(`client.scopes.on_request`)]),t(e,i)},$$slots:{default:!0}})}t(e,r)},Be=e=>{var r=to(),a=d(r);{let e=P(()=>Z(`client.uris.title`));Q(a,{row:!0,get title(){return n(e)},children:(e,r)=>{var i=to(),a=d(i);{let e=P(()=>n(de)?Z(`client.uris.acs`):Z(`client.uris.redirect`));Ga(a,{get label(){return n(e)},get value(){return n(m).redirectUris},onsave:e=>Se({redirectUris:e},Z(`client.notices.redirects`))})}var o=u(a,2);{let e=P(()=>Z(`client.uris.post_logout`));Ga(o,{get label(){return n(e)},get value(){return n(m).postLogoutRedirectUris},onsave:e=>Se({postLogoutRedirectUris:e},Z(`client.notices.post_logout`))})}var s=u(o,2);{let e=P(()=>Z(`client.uris.resources`));Ga(s,{get label(){return n(e)},get value(){return n(m).resources},onsave:e=>Se({resources:e},Z(`client.notices.resources`))})}t(e,i)},$$slots:{default:!0}})}var o=u(a,2),l=e=>{{let r=P(()=>Z(`client.keys.title`));Q(e,{row:!0,get title(){return n(r)},children:(e,r)=>{var a=no(),o=d(a),l=G(o,!0),p=u(o,2);{let e=P(()=>Z(`client.keys.jwks_uri`));$(p,{get label(){return n(e)},placeholder:`https://app.example.com/.well-known/jwks.json`,autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,onsave:()=>Ae(n(D).trim()?{jwksUri:n(D).trim(),jwks:null}:{jwksUri:null}),get value(){return n(D)},set value(e){C(D,e,!0)}})}var h=u(p,2),g=s(h),_=G(g,!0),v=u(g,2);ne(v),F(v,`placeholder`,`{ "keys": [ ... ] }`);var y=u(v,2),b=G(y,!0);U(h);var x=u(h,2),S=e=>{{let t=P(()=>Z(`client.keys.jar`));ta(e,{get checked(){return n(m).requireSignedRequestObject},get label(){return n(t)},onchange:e=>Se({requireSignedRequestObject:e},Z(e?`client.notices.jar_on`:`client.notices.jar_off`))})}};i(x,e=>{n(ye)&&e(S)}),c((e,t,n)=>{H(l,e),H(_,t),H(b,n)},[()=>Z(`client.keys.hint`),()=>Z(`client.keys.jwks`),()=>Z(`client.save`)]),ee(v,()=>n(k),e=>C(k,e)),f(`click`,y,je),t(e,a)},$$slots:{default:!0}})}};i(o,e=>{n(de)||e(l)});var p=u(o,2),h=e=>{{let r=P(()=>Z(`client.details.title`));Q(e,{row:!0,get title(){return n(r)},children:(e,r)=>{var a=io(),o=d(a),l=G(o,!0),p=u(o,2);{let e=P(()=>Z(`client.details.types`));Ga(p,{get label(){return n(e)},get value(){return n(m).authorizationDetailsTypes},onsave:e=>Se({authorizationDetailsTypes:e},Z(`client.notices.types`))})}var h=u(p,2),g=e=>{var r=ro(),i=s(r),a=G(i,!0),o=u(i,2);ne(o),F(o,`placeholder`,`{ "payment_initiation": { "label": "Send a payment", "schema": { "type": "object" } } }`);var l=u(o,2),d=G(l,!0);U(r),c((e,t)=>{H(a,e),H(d,t)},[()=>Z(`client.details.accepts`),()=>Z(`client.save`)]),ee(o,()=>n(A),e=>C(A,e)),f(`click`,l,Me),t(e,r)};i(h,e=>{n(m).approvedAt&&e(g)}),c(e=>H(l,e),[()=>Z(`client.details.hint`)]),t(e,a)},$$slots:{default:!0}})}};i(p,e=>{n(de)||e(h)}),t(e,r)},Ve=e=>{var a=ao(),s=d(a);{let e=P(()=>Z(`client.consents`));Q(s,{get title(){return n(e)},children:(e,t)=>{hr(e,{get api(){return r.api},get feedback(){return p},get rows(){return n(m).consents},onchange:xe,showActor:!0})},$$slots:{default:!0}})}var l=u(s,2);{let e=P(()=>Z(`client.tokens`));Q(l,{get title(){return n(e)},children:(e,t)=>{Qr(e,{get api(){return r.api},get feedback(){return p},get rows(){return n(m).tokens},onchange:xe,showActor:!0})},$$slots:{default:!0}})}var f=u(l,2);{let e=e=>{{let r=P(()=>`/activity?client=${n(m).clientId}`);nt(e,{get to(){return n(r)},class:`btn btn-ghost btn-sm`,children:(e,n)=>{j();var r=o();c(e=>H(r,e),[()=>Z(`client.activity.all`)]),t(e,r)},$$slots:{default:!0}})}},r=P(()=>Z(`client.activity.title`));Q(f,{get title(){return n(r)},actions:e,children:(e,t)=>{{let t=P(()=>Z(`client.activity.empty`));jr(e,{get events(){return n(m).events},get empty(){return n(t)}})}},$$slots:{actions:!0,default:!0}})}var h=u(f,2),g=e=>{Ha(e,{get api(){return r.api},get rows(){return n(m).namespaces},onreleased:xe})};i(h,e=>{n(m).namespaces.length&&e(g)}),t(e,a)},He=e=>{var r=ao(),a=d(r);{let e=P(()=>Z(`client.registration.title`));Q(a,{row:!0,get title(){return n(e)},children:(e,r)=>{var a=mo(),o=d(a);{let e=P(()=>Z(`client.registration.name`));$(o,{get label(){return n(e)},onsave:()=>Se({name:n(x)},Z(`client.notices.renamed`)),get value(){return n(x)},set value(e){C(x,e,!0)}})}var l=u(o,2);Ii(l,{get rows(){return n(fe)}});var p=u(l,2),h=e=>{var n=oo(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`client.registration.saml`)]),t(e,n)},g=e=>{var n=oo(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`client.registration.public`)]),t(e,n)},_=e=>{var r=co(),i=s(r),a=G(i,!0),o=u(i,2);Y(o,21,()=>Pe,([e,t])=>e,(e,r)=>{var i=P(()=>I(n(r),2));let a=()=>n(i)[0],o=()=>n(i)[1];var s=so(),l=G(s,!0),u={};c(()=>{H(l,o()),u!==(u=a())&&(s.value=(s.__value=u)??``)}),t(e,s)}),U(o);var l;L(o),U(r),c(e=>{H(a,e),l!==(l=n(W))&&(o.value=(o.__value=l)??``,E(o,l))},[()=>Z(`client.registration.authenticates`)]),f(`change`,o,e=>Fe(e.currentTarget.value)),t(e,r)};i(p,e=>{n(de)?e(h):n(m).tokenEndpointAuthMethod===`none`?e(g,1):e(_,-1)});var v=u(p,2),y=e=>{var n=lo(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`client.registration.needs_keys`)]),t(e,n)};i(v,e=>{n(W)===`private_key_jwt`&&!n(ye)&&e(y)});var b=u(v,2),S=e=>{var r=uo(),a=d(r),o=s(a),l=G(o,!0),p=u(o,2);Y(p,21,()=>pe,([e,t])=>e,(e,r)=>{var i=P(()=>I(n(r),2));let a=()=>n(i)[0],o=()=>n(i)[1];var s=so(),l=G(s,!0),u={};c(()=>{H(l,o()),u!==(u=a())&&(s.value=(s.__value=u)??``)}),t(e,s)}),U(p);var h;L(p),U(a);var g=u(a,2),_=e=>{{let t=P(()=>Z(`client.registration.sector`)),r=P(()=>Z(`client.registration.sector_placeholder`));$(e,{get label(){return n(t)},get placeholder(){return n(r)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,onsave:()=>Se({sectorIdentifierUri:n(re).trim()||null},n(re).trim()?Z(`client.notices.saved`):Z(`client.notices.cleared`)),get value(){return n(re)},set value(e){C(re,e,!0)}})}};i(g,e=>{(n(m).subjectType===`pairwise`||n(m).sectorIdentifierUri)&&e(_)});var v=u(g,2);Y(v,17,()=>me,([e,t])=>e,(e,t)=>{var r=P(()=>I(n(t),2));let i=()=>n(r)[0],a=()=>n(r)[1];{let t=P(()=>n(m).grantTypes.includes(i()));ta(e,{get checked(){return n(t)},get label(){return a()},onchange:e=>Se({grantTypes:De(i(),e)},Z(`client.notices.grants`))})}}),c(e=>{H(l,e),h!==(h=n(m).subjectType)&&(p.value=(p.__value=h)??``,E(p,h))},[()=>Z(`client.registration.knows_as`)]),f(`change`,p,e=>ke(e.currentTarget.value)),t(e,r)};i(b,e=>{n(de)||e(S)});var w=u(b,2),T=e=>{{let t=P(()=>Z(`client.registration.unattended`));ta(e,{get checked(){return n(Ee)},get label(){return n(t)},onchange:Oe})}};i(w,e=>{n(m).approvedAt&&n(m).tokenEndpointAuthMethod!==`none`&&e(T)});var D=u(w,2),O=s(D),k=e=>{var n=fo(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`client.registration.rotate`)]),f(`click`,n,Le),t(e,n)},A=P(()=>n(m).tokenEndpointAuthMethod.startsWith(`client_secret`));i(O,e=>{n(A)&&e(k)});var j=u(O,2),M=e=>{var n=po(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`client.registration.archive`)]),f(`click`,n,Re),t(e,n)};i(j,e=>{n(m).archivedAt||e(M)}),U(D),t(e,a)},$$slots:{default:!0}})}var l=u(a,2),p=e=>{{let r=P(()=>Z(`client.saml.title`));Q(e,{row:!0,get title(){return n(r)},children:(e,r)=>{var i=ho(),a=d(i);{let e=P(()=>Z(`client.saml.entity_id`));$(a,{get label(){return n(e)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,onsave:()=>Se({samlEntityId:n(J).trim()},Z(`client.notices.entity_id`)),get value(){return n(J)},set value(e){C(J,e,!0)}})}var o=u(a,2),l=s(o);{let e=P(()=>Z(`client.saml.slo_url`));$(l,{get label(){return n(e)},placeholder:`https://wiki.example.com/saml/slo`,autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,onsave:()=>Se({samlSloUrl:n(ae).trim()||null},n(ae).trim()?Z(`client.notices.saved`):Z(`client.notices.cleared`)),get value(){return n(ae)},set value(e){C(ae,e,!0)}})}var p=u(l,2),h=G(p,!0);U(o);var g=u(o,2);{let e=P(()=>[{term:Z(`client.saml.metadata`),value:n(K),mono:!0},{term:Z(`client.saml.initiate`),value:n(m).samlIdpInitiated?`/saml/initiate/${n(m).clientId}`:null,mono:!0}]);Ii(g,{get rows(){return n(e)}})}var _=u(g,2),v=s(_),y=G(v,!0),b=u(v,2);Y(b,21,()=>ue,([e,t])=>e,(e,r)=>{var i=P(()=>I(n(r),2));let a=()=>n(i)[0],o=()=>n(i)[1];var s=so(),l=G(s,!0),u={};c(()=>{H(l,o()),u!==(u=a())&&(s.value=(s.__value=u)??``)}),t(e,s)}),U(b);var x;L(b),U(_);var S=u(_,2),w=s(S),T=G(w,!0),D=u(w,2);ne(D);var O=u(D,2),k=G(O,!0);U(S);var A=u(S,2),j=s(A),M=G(j,!0),N=u(j,2);ne(N),F(N,`placeholder`,`email = email
|
|
276
|
+
name = name
|
|
277
|
+
given_name = given_name
|
|
278
|
+
family_name = family_name
|
|
279
|
+
preferred_username = preferred_username`);var R=u(N,2),z=G(R,!0),B=u(R,2),V=G(B,!0);U(A);var te=u(A,2);{let e=P(()=>Z(`client.saml.requests_signed`));ta(te,{get checked(){return n(m).samlRequestsSigned},get label(){return n(e)},onchange:e=>Se({samlRequestsSigned:e},Z(e?`client.notices.signed_refused`:`client.notices.signed_read`))})}var W=u(te,2);{let e=P(()=>Z(`client.saml.idp_initiated`));ta(W,{get checked(){return n(m).samlIdpInitiated},get label(){return n(e)},onchange:e=>Se({samlIdpInitiated:e},Z(e?`client.notices.idp_initiated_on`:`client.notices.idp_initiated_off`))})}c((e,t,r,i,a,o,s)=>{H(h,e),H(y,t),x!==(x=n(m).samlNameIdFormat??ue[0][0])&&(b.value=(b.__value=x)??``,E(b,x)),H(T,r),H(k,i),H(M,a),H(z,o),H(V,s)},[()=>Z(`client.saml.slo_url_hint`),()=>Z(`client.saml.names_by`),()=>Z(`client.saml.certificate`),()=>Z(`client.save`),()=>Z(`client.saml.attributes`),()=>Z(`client.saml.attributes_hint`),()=>Z(`client.save`)]),f(`change`,b,e=>Se({samlNameIdFormat:e.currentTarget.value},Z(`client.notices.saved`))),ee(D,()=>n(q),e=>C(q,e)),f(`click`,O,()=>Se({samlCertificate:n(q).trim()},n(q).trim()?Z(`client.notices.certificate_saved`):Z(`client.notices.certificate_removed`))),ee(N,()=>n(se),e=>C(se,e)),f(`click`,B,Ne),t(e,i)},$$slots:{default:!0}})}};i(l,e=>{n(de)&&e(p)});var h=u(l,2);{let e=P(()=>Z(`client.shown.title`));Q(h,{row:!0,get title(){return n(e)},children:(e,r)=>{var a=go(),l=d(a),f=s(l);Yi(f,{get client(){return n(m)},class:`size-14 rounded-lg border border-base-300 text-xl`});var p=u(f,2),h=s(p),g=e=>{var n=o();c(e=>H(n,e),[()=>Z(`client.shown.unapproved`)]),t(e,n)},_=e=>{var n=o();c(e=>H(n,e),[()=>Z(`client.shown.approved`)]),t(e,n)};i(h,e=>{n(m).approvedAt?e(_,-1):e(g)}),U(p),U(l);var y=u(l,2),b=s(y);Y(b,17,()=>he,([e,t,n])=>e,(e,t)=>{var r=P(()=>I(n(t),3));let i=()=>n(r)[0],a=()=>n(r)[1],o=()=>n(r)[2];$(e,{get label(){return a()},get placeholder(){return o()},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,get value(){return n(oe)[i()]},set value(e){n(oe)[i()]=e}})});var x=u(b,2),S=G(x,!0);U(y),c(e=>H(S,e),[()=>Z(`client.save`)]),v(`submit`,y,e=>{e.preventDefault(),ge()}),t(e,a)},$$slots:{default:!0}})}var g=u(h,2);{let e=P(()=>Z(`client.sign_in.title`));Q(g,{row:!0,get title(){return n(e)},children:(e,r)=>{var a=yo(),o=d(a),l=s(o),p=G(l,!0),h=u(l,2),g=s(h),_=G(g,!0);g.value=g.__value=``;var x=u(g);Y(x,17,()=>n(y),e=>e.key,(e,r)=>{var i=so(),a=G(i,!0),o={};c(()=>{H(a,n(r).name),o!==(o=n(r).key)&&(i.value=(i.__value=o)??``)}),t(e,i)}),U(h);var w;L(h),U(o);var T=u(o,2),D=e=>{var r=lo(),i=G(r,!0);c(e=>H(i,e),[()=>Z(`client.sign_in.archived`,{name:n(m).signInPolicy.name,fallback:n(b)?.name})]),t(e,r)},O=e=>{var r=V(),a=d(r),o=e=>{var r=vo(),i=s(r),a=G(i,!0),o=u(i,2);Y(o,21,()=>n(ve),({term:e,value:t,instead:n})=>e,(e,r)=>{let i=()=>n(r).term,a=()=>n(r).value,o=()=>n(r).instead;var l=_o(),f=d(l),p=G(f,!0),m=u(f,2),h=s(m),g=u(h),_=G(g,!0);U(m),c(()=>{H(p,i()),H(h,`${a()??``} `),H(_,o())}),t(e,l)}),U(o),U(r),c(e=>H(a,e),[()=>Z(`client.sign_in.differs`,{name:n(b)?.name})]),t(e,r)},l=e=>{var r=oo(),i=G(r,!0);c(e=>H(i,e),[()=>Z(`client.sign_in.same`,{name:n(b)?.name})]),t(e,r)};i(a,e=>{n(ve).length?e(o):e(l,-1)}),t(e,r)};i(T,e=>{n(m).signInPolicy?.archivedAt?e(D):n(m).signInPolicy&&e(O,1)});var k=u(T,2),A=e=>{var r=eo(),i=d(r);{let e=P(()=>Z(`client.sign_in.par`));ta(i,{get checked(){return n(m).requirePushedAuthorizationRequests},get label(){return n(e)},onchange:e=>Se({requirePushedAuthorizationRequests:e},Z(e?`client.notices.par_on`:`client.notices.par_off`))})}var a=u(i,2);{let e=P(()=>Z(`client.sign_in.dpop`));ta(a,{get checked(){return n(m).dpopBoundAccessTokens},get label(){return n(e)},onchange:e=>Se({dpopBoundAccessTokens:e},Z(e?`client.notices.dpop_on`:`client.notices.dpop_off`))})}t(e,r)};i(k,e=>{n(de)||e(A)});var j=u(k,2),M=e=>{{let t=P(()=>Z(`client.sign_in.consent`));ta(e,{get checked(){return n(m).consentRequired},get label(){return n(t)},onchange:e=>Se({consentRequired:e},Z(e?`client.notices.consent_on`:`client.notices.consent_off`))})}};i(j,e=>{n(m).approvedAt&&e(M)});var F=u(j,2),I=s(F),z=s(I);{let e=P(()=>Z(`client.sign_in.access`));$(z,{get label(){return n(e)},type:`number`,min:`1`,max:`1440`,get value(){return n(R)},set value(e){C(R,e,!0)}})}var B=u(z,2);{let e=P(()=>Z(`client.sign_in.refresh`));$(B,{get label(){return n(e)},type:`number`,min:`1`,max:`400`,get value(){return n(te)},set value(e){C(te,e,!0)}})}var ee=u(B,2);{let e=P(()=>Z(`client.sign_in.consent_lifetime`));$(ee,{get label(){return n(e)},type:`number`,min:`1`,max:`400`,get value(){return n(N)},set value(e){C(N,e,!0)}})}U(I);var ne=u(I,2),W=G(ne,!0);U(F);var re=u(F,2);{let e=P(()=>Z(`client.sign_in.logout`));$(re,{get label(){return n(e)},placeholder:`https://app.example.com/logout`,autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,onsave:()=>Se({backchannelLogoutUri:n(S).trim()||null},n(S).trim()?Z(`client.notices.saved`):Z(`client.notices.cleared`)),get value(){return n(S)},set value(e){C(S,e,!0)}})}var ie=u(re,2),K=e=>{{let t=P(()=>Z(`client.sign_in.logout_session`));ta(e,{get checked(){return n(m).backchannelLogoutSessionRequired},get label(){return n(t)},onchange:e=>Se({backchannelLogoutSessionRequired:e},Z(`client.notices.saved`))})}};i(ie,e=>{n(m).backchannelLogoutUri&&e(K)}),c((e,t,r)=>{H(p,e),H(_,t),w!==(w=n(m).signInPolicy?.key??``)&&(h.value=(h.__value=w)??``,E(h,w)),H(W,r)},[()=>Z(`client.sign_in.policy`),()=>Z(`client.sign_in.default`,{name:n(b)?.name??Z(`client.sign_in.built_in`)}),()=>Z(`client.save`)]),f(`change`,h,e=>Se({signInPolicy:e.currentTarget.value},Z(`client.notices.policy`))),v(`submit`,F,e=>{e.preventDefault(),_e()}),t(e,a)},$$slots:{default:!0}})}t(e,r)};i(Ce,e=>{a()===`access`?e(ze):a()===`endpoints`?e(Be,1):a()===`usage`?e(Ve,2):e(He,-1)}),U(X),t(e,w)},$$slots:{default:!0}})}};i(Be,e=>{n(ce)&&!n(m)?e(Ve):n(m)?e(Ue,-1):e(He,1)}),t(e,ze),B()}l([`click`,`change`]);var So=p(`<span class="badge badge-warning badge-xs"> </span>`),Co=p(`<span class="flex flex-wrap items-center gap-2"><!> <!></span> <span class="font-mono text-xs opacity-75"> </span> <!>`,1);function wo(e,r){O(r,!0);var a=Co(),l=d(a),f=s(l);{let e=P(()=>`/organizations/${r.organization.key}`);nt(f,{get to(){return n(e)},class:`link link-hover font-medium`,children:(e,n)=>{j();var i=o();c(()=>H(i,r.organization.name)),t(e,i)},$$slots:{default:!0}})}var p=u(f,2),m=e=>{var n=So(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`organization_cell.no_owner`)]),t(e,n)};i(p,e=>{r.organization.ownerCount===0&&e(m)}),U(l);var h=u(l,2),g=G(h,!0),_=u(h,2);y(_,()=>r.children??N),c(()=>H(g,r.organization.key)),t(e,a),B()}var To=p(`<span class="text-xs opacity-75"> </span>`),Eo=p(`<span><span> </span> <!></span>`);function Do(e,n){O(n,!0);let r=z(n,`class`,3,`flex flex-col`);var a=Eo(),o=s(a),l=G(o,!0),d=u(o,2),f=e=>{var r=To(),i=G(r,!0);c(e=>H(i,e),[()=>Z(`organization_headcount.invited`,{count:n.organization.pendingCount})]),t(e,r)};i(d,e=>{n.organization.pendingCount&&e(f)}),U(a),c(e=>{le(a,1,k(r())),H(l,e)},[()=>Z(`organization_headcount.members`,{count:n.organization.memberCount})]),t(e,a),B()}var Oo=p(`<button type="button" class="btn btn-primary btn-sm"> </button>`),ko=p(`<div class="grid gap-3 sm:grid-cols-2"><!> <!></div> <p class="hint"> <span class="font-mono"> </span> </p> <div class="flex gap-2"><button type="button" class="btn btn-primary btn-sm"> </button> <button type="button" class="btn btn-ghost btn-sm"> </button></div>`,1),Ao=p(`<span class="text-xs opacity-85 md:hidden"> </span>`),jo=p(`<span class="badge badge-ghost badge-sm"> </span>`),Mo=p(`<td><div class="flex min-w-0 flex-col gap-0.5"><!></div></td> <td class="hidden text-sm md:table-cell"><!></td> <td class="hidden md:table-cell"><div class="flex max-w-64 flex-wrap gap-1"></div></td> <td class="hidden text-sm md:table-cell"><span> </span></td>`,1),No=p(`<div class="flex flex-wrap items-center justify-between gap-2"><div class="flex min-w-0 flex-col"><!> <span class="hint"><span class="font-mono"> </span> </span></div> <button type="button" class="btn btn-ghost btn-sm"> </button></div>`),Po=p(`<!> <!>`,1),Fo=p(`<!> <!> <!>`,1);function Io(e,r){O(r,!0);let a=Ze(),l=ct(),p=[Z(`organizations.columns.organization`),{label:Z(`organizations.columns.members`),hide:!0},{label:Z(`organizations.columns.roles`),hide:!0},{label:Z(`organizations.columns.signs_in`),hide:!0}],m=T(null),h=T(!0),g=T(!1),_=T(null),v=T(!1);async function y(){C(h,!0);let e=await l.attempt(()=>r.api.query(`
|
|
280
|
+
query Organizations {
|
|
281
|
+
active: organizations {
|
|
282
|
+
key name roles memberCount ownerCount pendingCount
|
|
283
|
+
signInPolicy { name }
|
|
284
|
+
providers { name }
|
|
285
|
+
}
|
|
286
|
+
archived: organizations(archived: true) { key name memberCount archivedAt }
|
|
287
|
+
}
|
|
288
|
+
`));C(h,!1),e&&C(m,e,!0)}y();let b=e=>e.toLowerCase().normalize(`NFKD`).replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``);function x(){C(_,{key:``,name:``},!0),C(v,!1),l.clear()}function S(e){n(_).name=e,n(v)||(n(_).key=b(e))}async function w(){C(g,!0);let e=await l.attempt(()=>r.api.query(`mutation Create($key: ID!, $name: String!) {
|
|
289
|
+
createOrganization(key: $key, name: $name) { organization { key } }
|
|
290
|
+
}`,{key:n(_).key.trim(),name:n(_).name.trim()}));C(g,!1),e&&a.go(`/organizations/${e.createOrganization.organization.key}`)}async function E(e){await l.attempt(()=>r.api.query(`mutation Restore($key: ID!) { restoreOrganization(key: $key) { organization { key } } }`,{key:e.key}),Z(`organizations.restored`,{name:e.name}))&&await y()}function D(e){let t=Z(`organizations.members`,{count:e.memberCount});return e.pendingCount?Z(`organizations.members_invited`,{members:t,count:e.pendingCount}):t}function k(e){return[e.signInPolicy?.name,...e.providers.map(e=>e.name)].filter(Boolean).join(`, `)}{let r=e=>{var n=Oo(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`organizations.add`)]),f(`click`,n,x),t(e,n)},a=P(()=>Z(`organizations.title`)),y=P(()=>Z(`organizations.lede`));wn(e,{get title(){return n(a)},get lede(){return n(y)},actions:r,children:(e,r)=>{var a=Fo(),y=d(a);vn(y,{get feedback(){return l.state}});var b=u(y,2),x=e=>{{let r=P(()=>Z(`organizations.add`)),i=P(()=>Z(`organizations.add_lede`));Q(e,{get title(){return n(r)},get lede(){return n(i)},children:(e,r)=>{var i=ko(),a=d(i),o=s(a);{let e=P(()=>Z(`organizations.name`));$(o,{get label(){return n(e)},get value(){return n(_).name},oninput:e=>S(e.currentTarget.value),placeholder:`Acme`})}var l=u(o,2);{let e=P(()=>Z(`organizations.key`));$(l,{get label(){return n(e)},oninput:()=>C(v,!0),placeholder:`acme`,autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,get value(){return n(_).key},set value(e){n(_).key=e}})}U(a);var p=u(a,2),m=s(p),h=u(m),y=G(h),b=u(h,1,!0);U(p);var x=u(p,2),T=s(x),E=G(T,!0),D=u(T,2),O=G(D,!0);U(x),c((e,t,n,r,i,a)=>{H(m,`${e??``} `),H(y,`organization=${t??``}`),H(b,n),T.disabled=r,H(E,i),H(O,a)},[()=>Z(`organizations.key_hint`),()=>n(_).key||Z(`organizations.key_word`),()=>Z(`organizations.key_hint_end`),()=>n(g)||!n(_).key.trim()||!n(_).name.trim(),()=>n(g)?Z(`organizations.adding`):Z(`organizations.add`),()=>Z(`organizations.cancel`)]),f(`click`,T,w),f(`click`,D,()=>C(_,null)),t(e,i)},$$slots:{default:!0}})}};i(b,e=>{n(_)&&e(x)});var T=u(b,2),O=e=>{it(e,{})},A=e=>{var r=Po(),a=d(r);{let e=e=>{var r=V(),i=d(r);Y(i,17,()=>n(m).active,e=>e.key,(e,r)=>{{let i=P(()=>`/organizations/${n(r).key}`);kt(e,{get to(){return n(i)},children:(e,i)=>{var a=Mo(),o=d(a),l=s(o);wo(s(l),{get organization(){return n(r)},children:(e,i)=>{var a=Ao(),o=G(a,!0);c(e=>H(o,e),[()=>D(n(r))]),t(e,a)},$$slots:{default:!0}}),U(l),U(o);var f=u(o,2);Do(s(f),{get organization(){return n(r)}}),U(f);var p=u(f,2),m=s(p);Y(m,20,()=>n(r).roles,e=>e,(e,n)=>{var r=jo(),i=G(r,!0);c(()=>H(i,n)),t(e,r)}),U(m),U(p);var h=u(p,2),g=s(h);let _;var v=G(g,!0);U(h),c((e,t)=>{_=le(g,1,``,null,_,{"opacity-60":e}),H(v,t)},[()=>!k(n(r)),()=>k(n(r))||Z(`organizations.tenant_policy`)]),t(e,a)},$$slots:{default:!0}})}}),t(e,r)},r=P(()=>Z(`organizations.empty`));Pt(a,{get columns(){return p},get count(){return n(m).active.length},get empty(){return n(r)},rows:e,$$slots:{rows:!0}})}var l=u(a,2),h=e=>{{let r=P(()=>Z(`organizations.archived.title`)),i=P(()=>Z(`organizations.archived.lede`));Q(e,{get title(){return n(r)},get lede(){return n(i)},children:(e,r)=>{var i=V(),a=d(i);Y(a,17,()=>n(m).archived,e=>e.key,(e,r)=>{var i=No(),a=s(i),l=s(a);{let e=P(()=>`/organizations/${n(r).key}`);nt(l,{get to(){return n(e)},class:`link link-hover text-sm font-medium`,children:(e,i)=>{j();var a=o();c(()=>H(a,n(r).name)),t(e,a)},$$slots:{default:!0}})}var d=u(l,2),p=s(d),m=G(p,!0),h=u(p);U(d),U(a);var g=u(a,2),_=G(g,!0);U(i),c((e,t)=>{H(m,n(r).key),H(h,` ${e??``}`),H(_,t)},[()=>Z(`organizations.archived.detail`,{day:_t(n(r).archivedAt),members:Z(`organizations.members`,{count:n(r).memberCount})}),()=>Z(`organizations.restore`)]),f(`click`,g,()=>E(n(r))),t(e,i)}),t(e,i)},$$slots:{default:!0}})}};i(l,e=>{n(m).archived.length&&e(h)}),t(e,r)};i(T,e=>{n(h)&&!n(m)?e(O):n(m)&&e(A,1)}),t(e,a)},$$slots:{actions:!0,default:!0}})}B()}l([`click`]);var Lo=p(`<span class="tally-figure"> </span> <span class="tally-label"> </span>`,1),Ro=p(`<div class="tally-cell"><span class="tally-figure"> </span> <span class="tally-label"> </span></div>`),zo=p(`<div class="tally"></div>`);function Bo(e,r){var a=zo();Y(a,21,()=>r.counts,e=>e.label,(e,r)=>{var a=V(),o=d(a),l=e=>{nt(e,{get to(){return n(r).to},class:`tally-cell`,children:(e,i)=>{var a=Lo(),o=d(a),s=G(o,!0),l=u(o,2),f=G(l,!0);c(()=>{H(s,n(r).value),H(f,n(r).label)}),t(e,a)},$$slots:{default:!0}})},f=e=>{var i=Ro(),a=s(i),o=G(a,!0),l=u(a,2),d=G(l,!0);U(i),c(()=>{H(o,n(r).value),H(d,n(r).label)}),t(e,i)};i(o,e=>{n(r).to?e(l):e(f,-1)}),t(e,a)}),U(a),t(e,a)}var Vo=p(`<button type="button" class="btn btn-ghost btn-sm"> </button>`),Ho=p(`<!> <button type="button" class="btn btn-ghost btn-sm btn-error"> </button>`,1),Uo=p(`<p class="hint"> <!></p>`),Wo=p(`<div class="alert alert-warning alert-soft flex flex-wrap items-center justify-between gap-3" role="status"><span> </span> <button type="button" class="btn btn-sm"> </button></div>`),Go=p(`<div class="alert alert-warning alert-soft" role="status"> </div>`),Ko=p(`<div class="alert alert-info alert-soft flex-col items-start gap-2" role="status"><span class="font-medium"> </span> <code class="font-mono text-xs break-all"> </code></div>`),qo=p(`<button type="button"> </button>`),Jo=p(`<button type="button" class="btn btn-primary btn-sm"> </button>`),Yo=p(`<div class="range" role="group"></div> <!>`,1),Xo=p(`<div class="grid gap-3 sm:grid-cols-[minmax(0,1fr)_10rem_auto] sm:items-end"><!> <!> <div class="flex gap-2"><button type="button" class="btn btn-primary btn-sm"> </button> <button type="button" class="btn btn-ghost btn-sm"> </button></div></div> <p class="hint"> </p>`,1),Zo=p(`<span class="badge badge-sm badge-error badge-soft"> </span>`),Qo=p(`<span class="badge badge-sm badge-warning badge-soft"> </span>`),$o=p(`<span class="badge badge-sm badge-ghost"> </span>`),es=p(`<tr><td class="w-full min-w-0"><div class="flex min-w-0 flex-col gap-0.5"><span class="flex flex-wrap items-center gap-2"><!> <!> <!></span> <span class="hint"> </span> <div class="mt-2 flex flex-wrap items-center gap-2 md:hidden"><div class="min-w-28 flex-1 basis-28"><!></div> <div class="-me-3 flex shrink-0"><!></div></div></div></td><td class="hidden w-44 min-w-44 md:table-cell"><!></td><td class="hidden text-right whitespace-nowrap md:table-cell"><!></td></tr>`),ts=p(`<!> <!>`,1),ns=p(`<div class="flex flex-wrap items-center justify-between gap-2 sheet p-3"><div class="flex min-w-0 flex-col"><span class="font-medium"> </span> <span class="hint"> </span></div> <div class="flex gap-2"><button type="button" class="btn btn-sm"> </button> <button type="button" class="btn btn-ghost btn-sm"> </button></div></div>`),rs=p(`<p class="hint"> </p>`),is=p(`<div class="flex flex-col gap-3 sheet p-3"><span class="font-medium"> </span> <div class="grid gap-3 sm:grid-cols-2"><!> <!></div> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea w-full font-mono" rows="3" placeholder="Acme Admins = owner"></textarea> <p class="hint"> </p></label> <div class="flex gap-2"><button type="button" class="btn btn-primary btn-sm"> </button> <button type="button" class="btn btn-ghost btn-sm"> </button></div></div>`),as=p(`<div class="flex flex-wrap items-center justify-between gap-2"><span class="font-mono text-sm break-all"> </span> <span class="hint"> </span></div>`),os=p(`<!> <div class="flex flex-col gap-2"><span class="legend"> </span> <!> <!></div> <!> <div class="flex flex-col gap-2"><span class="legend"> </span> <!></div> <div class="flex flex-col gap-2"><span class="legend"> </span> <p class="hint"> <!></p></div>`,1),ss=p(`<button type="button" class="-mr-1 cursor-pointer px-1 opacity-70 hover:opacity-100 disabled:cursor-not-allowed disabled:opacity-30">×</button>`),cs=p(`<span><span class="font-medium"> </span> <span class="opacity-70"> </span> <!></span>`),ls=p(`<div class="flex flex-wrap gap-2"></div> <!> <p class="hint"> </p>`,1),us=p(`<button type="button" class="btn btn-sm btn-error btn-outline self-start"> </button>`),ds=p(`<!> <!> <!> <!> <!> <div class="grid items-start gap-4 lg:grid-cols-2"><div class="flex flex-col gap-4"><!></div> <div class="flex flex-col gap-4"><!> <!></div></div> <!> <!>`,1);function fs(e,r){O(r,!0);let a=(e,t=N)=>{{let r=P(()=>Z(`organization.members.role_of`,{name:K(t())})),i=P(()=>n(S)||q(t())||!!n(g).archivedAt);$i(e,{get value(){return t().role},get options(){return n(R)},get name(){return n(r)},get disabled(){return n(i)},onchange:e=>ce(t(),e)})}},l=(e,r=N)=>{var a=Ho(),o=d(a),s=e=>{var i=Vo(),a=G(i,!0);c((e,t)=>{i.disabled=e,H(a,t)},[()=>n(S)||!!n(g).archivedAt,()=>Z(`organization.members.send_again`)]),f(`click`,i,()=>de(r())),t(e,i)};i(o,e=>{r().pending&&e(s)});var l=u(o,2),p=G(l,!0);c((e,t,n)=>{l.disabled=e,F(l,`title`,t),H(p,n)},[()=>n(S)||q(r()),()=>q(r())?Z(`organization.members.owner_first`):null,()=>r().pending?Z(`organization.members.withdraw`):Z(`organization.members.remove`)]),f(`click`,l,()=>ue(r())),t(e,a)};Ze();let p=ct(),m=[`owner`,`member`],h=[[`all`,Z(`organization.lenses.all`)],[`owners`,Z(`organization.lenses.owners`)],[`invited`,Z(`organization.lenses.invited`)]],g=T(null),_=T(w([])),v=T(w([])),y=()=>({provider:``,roleClaim:``,roleMap:``,unmappedRole:``}),b=T(w(y())),x=T(!0),S=T(!1),E=T(null),D=T(`all`),k=T(``),A=T(``),M=T(null);async function L(){C(x,!0);let e=await p.attempt(()=>r.api.query(`
|
|
291
|
+
query Organization($key: ID!) {
|
|
292
|
+
organization(key: $key) {
|
|
293
|
+
uuid key name roles archivedAt createdAt
|
|
294
|
+
memberCount ownerCount pendingCount liveTokenCount
|
|
295
|
+
signInPolicy { key }
|
|
296
|
+
providers { key name roleClaim roleMap unmappedRole }
|
|
297
|
+
domains { domain verifiedAt provider { name } }
|
|
298
|
+
provisioningTokens { id }
|
|
299
|
+
members {
|
|
300
|
+
role pending provisioned invitedAs invitedAt expiresAt expired createdAt
|
|
301
|
+
invitedBy { identifier }
|
|
302
|
+
actor { uuid identifier }
|
|
303
|
+
}
|
|
304
|
+
events {
|
|
305
|
+
id action label createdAt ipAddress details
|
|
306
|
+
actor { uuid identifier } by { uuid identifier } client { clientId name } device { id label }
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
signInPolicies { key name }
|
|
310
|
+
providers { key name organization { key } }
|
|
311
|
+
}
|
|
312
|
+
`,{key:r.organizationKey}));C(x,!1),e&&(C(g,e.organization,!0),C(_,e.signInPolicies,!0),C(v,e.providers,!0),n(g)&&C(k,n(g).name,!0))}L();let R=P(()=>(n(g)?.roles??[]).map(e=>[e,e])),z=P(()=>Object.fromEntries((n(g)?.roles??[]).map(e=>[e,n(g).members.filter(t=>t.role===e).length]))),te=P(()=>(n(g)?.members??[]).filter(e=>n(D)===`owners`?e.role===`owner`&&!e.pending:n(D)!==`invited`||e.pending).toSorted((e,t)=>Number(e.pending)-Number(t.pending)||Number(t.role===`owner`)-Number(e.role===`owner`)||K(e).localeCompare(K(t)))),W=(e,t)=>n(g).liveTokenCount?Z(t,{organization:n(g).name,count:n(g).liveTokenCount}):Z(e,{organization:n(g).name}),re=P(()=>n(g)?[{label:Z(`organization.counts.members`,{count:n(g).memberCount}),value:n(g).memberCount},{label:Z(`organization.counts.owners`,{count:n(g).ownerCount}),value:n(g).ownerCount},{label:Z(`organization.counts.invitations`),value:n(g).pendingCount},{label:Z(`organization.counts.live_tokens`),value:n(g).liveTokenCount}]:[]),ie=P(()=>n(g)?[{term:Z(`organization.facts.key`),value:n(g).key,mono:!0},{term:Z(`organization.facts.id`),value:n(g).uuid,mono:!0},{term:Z(`organization.facts.asked_for_with`),value:`organization=${n(g).key}`,mono:!0},{term:Z(`organization.facts.created`),value:_t(n(g).createdAt)}]:[]);function K(e){return e.pending?e.invitedAs??e.actor.identifier:e.actor.identifier}function q(e){return e.role===`owner`&&!e.pending&&n(g).ownerCount===1}function J(e){return e.expired?Z(`organization.status.expired`,{when:yt(e.expiresAt)}):e.pending?e.invitedBy?Z(`organization.status.invited_by`,{when:yt(e.invitedAt),by:e.invitedBy.identifier}):Z(`organization.status.invited`,{when:yt(e.invitedAt)}):Z(e.provisioned?`organization.status.from_directory`:`organization.status.since`,{day:_t(e.createdAt)})}async function ae(e,t,n){C(S,!0);let i=await p.attempt(()=>r.api.query(e,t),n);return C(S,!1),i&&await L(),i}function oe(){C(E,{email:``,role:`member`},!0),C(M,null),p.clear()}async function se(){let e=n(E).email.trim();C(M,null);let t=await ae(`mutation Add($organization: ID!, $email: String!, $role: String!) {
|
|
313
|
+
addMember(organization: $organization, email: $email, role: $role) { delivered url }
|
|
314
|
+
}`,{organization:n(g).key,email:e,role:n(E).role},Z(`organization.notices.invited`,{email:e,role:n(E).role}));t&&(C(E,null),!t.addMember.delivered&&t.addMember.url&&C(M,t.addMember.url,!0))}function ce(e,t){ae(`mutation Role($organization: ID!, $uuid: ID!, $role: String!) {
|
|
315
|
+
setMemberRole(organization: $organization, uuid: $uuid, role: $role) { membership { role } }
|
|
316
|
+
}`,{organization:n(g).key,uuid:e.actor.uuid,role:t},Z(`organization.notices.role_set`,{name:K(e),role:t}))}function ue(e){let t=e.pending?Z(`organization.questions.withdraw`,{name:K(e)}):Z(`organization.questions.remove`,{name:K(e),organization:n(g).name});confirm(t)&&ae(`mutation Remove($organization: ID!, $uuid: ID!) {
|
|
317
|
+
removeMember(organization: $organization, uuid: $uuid) { organization { key } }
|
|
318
|
+
}`,{organization:n(g).key,uuid:e.actor.uuid},e.pending?Z(`organization.notices.withdrawn`,{name:K(e)}):Z(`organization.notices.removed`,{name:K(e),organization:n(g).name}))}function de(e){ae(`mutation Resend($organization: ID!, $uuid: ID!) {
|
|
319
|
+
resendOrganizationInvitation(organization: $organization, uuid: $uuid) { delivered }
|
|
320
|
+
}`,{organization:n(g).key,uuid:e.actor.uuid},Z(`organization.notices.resent`,{name:K(e)}))}function fe(e,t){return ae(`mutation Roles($key: ID!, $roles: [String!]) {
|
|
321
|
+
updateOrganization(key: $key, roles: $roles) { organization { key } }
|
|
322
|
+
}`,{key:n(g).key,roles:e},t)}let pe=P(()=>(n(g)?.roles??[]).filter(e=>!m.includes(e)));async function me(){let e=n(A).trim().toLowerCase();e&&await fe([...n(pe),e],Z(`organization.notices.role_added`,{organization:n(g).name,role:e}))&&C(A,``)}function he(e){fe(n(pe).filter(t=>t!==e),Z(`organization.notices.role_dropped`,{organization:n(g).name,role:e}))}function ge(){ae(`mutation Rename($key: ID!, $name: String) {
|
|
323
|
+
updateOrganization(key: $key, name: $name) { organization { key } }
|
|
324
|
+
}`,{key:n(g).key,name:n(k).trim()},Z(`organization.notices.saved`))}let _e=e=>Object.entries(e??{}).map(([e,t])=>`${e} = ${t}`).join(`
|
|
325
|
+
`),ve=e=>Object.fromEntries(e.split(`
|
|
326
|
+
`).map(e=>e.split(`=`)).filter(e=>e.length===2&&e[0].trim()&&e[1].trim()).map(([e,t])=>[e.trim(),t.trim()])),ye=P(()=>n(v).filter(e=>!e.organization));function be(e){let t=n(g).providers.find(t=>t.key===e);C(b,{provider:e,roleClaim:t?.roleClaim??``,roleMap:_e(t?.roleMap),unmappedRole:t?.unmappedRole??``},!0)}function xe(){ae(`mutation Hand($key: ID!, $organization: ID, $roleClaim: String, $roleMap: JSON, $unmappedRole: String) {
|
|
327
|
+
setProviderOrganization(key: $key, organization: $organization, roleClaim: $roleClaim, roleMap: $roleMap, unmappedRole: $unmappedRole) {
|
|
328
|
+
provider { key }
|
|
329
|
+
}
|
|
330
|
+
}`,{key:n(b).provider,organization:n(g).key,roleClaim:n(b).roleClaim.trim()||null,roleMap:ve(n(b).roleMap),unmappedRole:n(b).unmappedRole||null},Z(`organization.notices.provider_saved`)).then(e=>{e&&C(b,y(),!0)})}function X(e){confirm(Z(`organization.questions.hand_back`,{provider:e.name,organization:n(g).name}))&&ae(`mutation Back($key: ID!) { setProviderOrganization(key: $key, organization: null) { provider { key } } }`,{key:e.key},Z(`organization.notices.provider_back`,{provider:e.name}))}function Se(e){ae(`mutation Policy($key: ID!, $policy: ID!) {
|
|
331
|
+
updateOrganization(key: $key, signInPolicy: $policy) { organization { key } }
|
|
332
|
+
}`,{key:n(g).key,policy:e},Z(`organization.notices.saved`))}async function Ce(){confirm(W(`organization.questions.archive`,`organization.questions.archive_tokens`))&&await ae(`mutation Archive($key: ID!) { archiveOrganization(key: $key) { organization { key } } }`,{key:n(g).key},Z(`organization.notices.archived`,{organization:n(g).name}))}function we(){ae(`mutation Restore($key: ID!) { restoreOrganization(key: $key) { organization { key } } }`,{key:n(g).key},Z(`organization.notices.restored`,{organization:n(g).name}))}{let w=P(()=>n(g)?.name??Z(`organization.title`)),T=P(()=>n(g)?.key),O=P(()=>({to:`/organizations`,label:Z(`organization.back`)})),N=P(()=>n(g)?n(g).archivedAt?Z(`organization.archived_lede`,{when:yt(n(g).archivedAt)}):Z(`organization.lede`,{key:n(g).key}):null);wn(e,{get title(){return n(w)},get id(){return n(T)},get back(){return n(O)},get lede(){return n(N)},children:(e,w)=>{var T=ts(),O=d(T);vn(O,{get feedback(){return p.state}});var N=u(O,2),L=e=>{it(e,{})},B=e=>{var n=Uo(),i=s(n);nt(u(i),{to:`/organizations`,children:(e,n)=>{j();var r=o();c(e=>H(r,e),[()=>Z(`organization.all`)]),t(e,r)},$$slots:{default:!0}}),U(n),c(e=>H(i,`${e??``} `),[()=>Z(`organization.missing`,{key:r.organizationKey})]),t(e,n)},ae=e=>{var r=ds(),p=d(r),x=e=>{var r=Wo(),i=s(r),a=G(i,!0),o=u(i,2),l=G(o,!0);U(r),c((e,t)=>{H(a,e),o.disabled=n(S),H(l,t)},[()=>Z(`organization.archived_alert`,{day:_t(n(g).archivedAt)}),()=>Z(`organization.restore`)]),f(`click`,o,we),t(e,r)};i(p,e=>{n(g).archivedAt&&e(x)});var w=u(p,2),T=e=>{var r=Go(),i=G(r,!0);c(e=>H(i,e),[()=>Z(`organization.ownerless`,{organization:n(g).name})]),t(e,r)};i(w,e=>{!n(g).archivedAt&&n(g).ownerCount===0&&e(T)});var O=u(w,2);Bo(O,{get counts(){return n(re)}});var N=u(O,2),L=e=>{var r=Ko(),i=s(r),a=G(i,!0),o=u(i,2),l=G(o,!0);U(r),c(e=>{H(a,e),H(l,n(M))},[()=>Z(`organization.invitation_link`)]),t(e,r)};i(N,e=>{n(M)&&e(L)});var B=u(N,2);{let e=e=>{var r=Yo(),a=d(r);Y(a,21,()=>h,([e,t])=>e,(e,r)=>{var i=P(()=>I(n(r),2));let a=()=>n(i)[0],o=()=>n(i)[1];var s=qo(),l=G(s,!0);c(()=>{F(s,`aria-pressed`,n(D)===a()),H(l,o())}),f(`click`,s,()=>C(D,a(),!0)),t(e,s)}),U(a);var o=u(a,2),s=e=>{var n=Jo(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`organization.members.add`)]),f(`click`,n,oe),t(e,n)};i(o,e=>{n(g).archivedAt||e(s)}),c(e=>F(a,`aria-label`,e),[()=>Z(`organization.members.who`)]),t(e,r)},r=P(()=>Z(`organization.members.title`)),p=P(()=>Z(`organization.members.lede`));Q(B,{get title(){return n(r)},get lede(){return n(p)},actions:e,children:(e,r)=>{var p=ts(),m=d(p),h=e=>{var r=Xo(),i=d(r),a=s(i);{let e=P(()=>Z(`organization.members.email`));$(a,{get label(){return n(e)},type:`email`,placeholder:`person@example.com`,get value(){return n(E).email},set value(e){n(E).email=e}})}var o=u(a,2);{let e=P(()=>Z(`organization.members.role`));$i(o,{get label(){return n(e)},get value(){return n(E).role},get options(){return n(R)},onchange:e=>n(E).role=e})}var l=u(o,2),p=s(l),m=G(p,!0),h=u(p,2),g=G(h,!0);U(l),U(i);var _=u(i,2),v=G(_,!0);c((e,t,n,r)=>{p.disabled=e,H(m,t),H(g,n),H(v,r)},[()=>n(S)||!n(E).email.trim(),()=>Z(`organization.members.invite`),()=>Z(`organization.members.cancel`),()=>Z(`organization.members.hint`)]),f(`click`,p,se),f(`click`,h,()=>C(E,null)),t(e,r)};i(m,e=>{n(E)&&e(h)});var g=u(m,2);{let e=e=>{var r=V(),f=d(r);Y(f,17,()=>n(te),e=>e.actor.uuid,(e,r)=>{var d=es(),f=s(d),p=s(f),m=s(p),h=s(m);{let e=P(()=>`/actors/${n(r).actor.uuid}`);nt(h,{get to(){return n(e)},class:`link link-hover font-medium break-all`,children:(e,i)=>{j();var a=o();c(e=>H(a,e),[()=>K(n(r))]),t(e,a)},$$slots:{default:!0}})}var g=u(h,2),_=e=>{var n=Zo(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`organization.members.expired`)]),t(e,n)},v=e=>{var n=Qo(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`organization.members.invited`)]),t(e,n)};i(g,e=>{n(r).expired?e(_):n(r).pending&&e(v,1)});var y=u(g,2),b=e=>{var n=$o(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`organization.members.last_owner`)]),t(e,n)},x=P(()=>q(n(r)));i(y,e=>{n(x)&&e(b)}),U(m);var S=u(m,2),C=G(S,!0),w=u(S,2),T=s(w),E=s(T);a(E,()=>n(r)),U(T);var D=u(T,2),O=s(D);l(O,()=>n(r)),U(D),U(w),U(p),U(f);var k=u(f),A=s(k);a(A,()=>n(r)),U(k);var M=u(k),N=s(M);l(N,()=>n(r)),U(M),U(d),c(e=>H(C,e),[()=>J(n(r))]),t(e,d)}),t(e,r)},r=P(()=>[Z(`organization.members.person`),{label:Z(`organization.members.role`),hide:!0},{label:``,right:!0,hide:!0}]),f=P(()=>Z(`organization.members.empty.${n(D)}`));Pt(g,{get columns(){return n(r)},get count(){return n(te).length},get empty(){return n(f)},rows:e,$$slots:{rows:!0}})}t(e,p)},$$slots:{actions:!0,default:!0}})}var ae=u(B,2),ce=s(ae),ue=s(ce);{let e=P(()=>Z(`organization.signing_in.title`)),r=P(()=>Z(`organization.signing_in.lede`));Q(ue,{get title(){return n(e)},get lede(){return n(r)},children:(e,r)=>{var a=os(),l=d(a);{let e=P(()=>Z(`organization.signing_in.policy`)),t=P(()=>n(g).signInPolicy?.key??``),r=P(()=>[[``,Z(`organization.signing_in.inherited`)],...n(_).map(e=>[e.key,e.name])]);$i(l,{get label(){return n(e)},get value(){return n(t)},get options(){return n(r)},get disabled(){return n(S)},onchange:Se})}var p=u(l,2),m=s(p),h=G(m,!0),x=u(m,2);Y(x,17,()=>n(g).providers,e=>e.key,(e,r)=>{var i=ns(),a=s(i),o=s(a),l=G(o,!0),d=u(o,2),p=G(d,!0);U(a);var m=u(a,2),h=s(m),g=G(h,!0),_=u(h,2),v=G(_,!0);U(m),U(i),c((e,t,i)=>{H(l,n(r).name),H(p,e),h.disabled=n(S),H(g,t),_.disabled=n(S),H(v,i)},[()=>Z(`organization.signing_in.joins_as`,{mapping:Object.keys(n(r).roleMap).length?Object.entries(n(r).roleMap).map(([e,t])=>`${e} → ${t}`).join(`, `):Z(`organization.signing_in.no_groups_mapped`),role:n(r).unmappedRole??`member`}),()=>Z(`organization.signing_in.edit`),()=>Z(`organization.signing_in.hand_back`)]),f(`click`,h,()=>be(n(r).key)),f(`click`,_,()=>X(n(r))),t(e,i)},e=>{var n=rs(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`organization.signing_in.no_providers`)]),t(e,n)});var w=u(x,2),T=e=>{{let t=P(()=>Z(`organization.signing_in.give_provider`)),r=P(()=>[[``,Z(`organization.signing_in.give_provider`)],...n(ye).map(e=>[e.key,e.name])]);$i(e,{value:``,get name(){return n(t)},get options(){return n(r)},onchange:be})}};i(w,e=>{n(ye).length&&!n(b).provider&&e(T)}),U(p);var E=u(p,2),D=e=>{var r=is(),i=s(r),a=G(i,!0),o=u(i,2),l=s(o);{let e=P(()=>Z(`organization.signing_in.groups_claim`));$(l,{get label(){return n(e)},placeholder:`groups`,get value(){return n(b).roleClaim},set value(e){n(b).roleClaim=e}})}var d=u(l,2);{let e=P(()=>Z(`organization.signing_in.unmapped_role`)),t=P(()=>[[``,`member`],...n(R).filter(([e])=>e!==`member`)]);$i(d,{get label(){return n(e)},get value(){return n(b).unmappedRole},get options(){return n(t)},onchange:e=>n(b).unmappedRole=e})}U(o);var p=u(o,2),m=s(p),h=G(m,!0),g=u(m,2);ne(g);var _=u(g,2),x=G(_,!0);U(p);var w=u(p,2),T=s(w),E=G(T,!0),D=u(T,2),O=G(D,!0);U(w),U(r),c((e,t,r,i,o)=>{H(a,e),H(h,t),H(x,r),T.disabled=n(S),H(E,i),H(O,o)},[()=>n(v).find(e=>e.key===n(b).provider)?.name??n(b).provider,()=>Z(`organization.signing_in.role_map`),()=>Z(`organization.signing_in.role_map_hint`),()=>Z(`organization.signing_in.save`),()=>Z(`organization.signing_in.cancel`)]),ee(g,()=>n(b).roleMap,e=>n(b).roleMap=e),f(`click`,T,xe),f(`click`,D,()=>C(b,y(),!0)),t(e,r)};i(E,e=>{n(b).provider&&e(D)});var O=u(E,2),k=s(O),A=G(k,!0),M=u(k,2);Y(M,17,()=>n(g).domains,e=>e.domain,(e,r)=>{var i=as(),a=s(i),o=G(a,!0),l=u(a,2),d=G(l);U(i),c(e=>{H(o,n(r).domain),H(d,`${e??``} · ${n(r).provider?.name??``}`)},[()=>n(r).verifiedAt?Z(`organization.signing_in.proven`,{day:_t(n(r).verifiedAt)}):Z(`organization.signing_in.waiting`)]),t(e,i)},e=>{var n=Uo(),r=s(n);nt(u(r),{to:`/settings`,class:`link`,children:(e,n)=>{j();var r=o();c(e=>H(r,e),[()=>Z(`organization.signing_in.domains_link`)]),t(e,r)},$$slots:{default:!0}}),U(n),c(e=>H(r,`${e??``} `),[()=>Z(`organization.signing_in.no_domains`)]),t(e,n)}),U(O);var N=u(O,2),F=s(N),I=G(F,!0),L=u(F,2),z=s(L);nt(u(z),{to:`/directory`,class:`link`,children:(e,n)=>{j();var r=o();c(e=>H(r,e),[()=>Z(`organization.signing_in.provisioning_link`)]),t(e,r)},$$slots:{default:!0}}),U(L),U(N),c((e,t,n,r)=>{H(h,e),H(A,t),H(I,n),H(z,`${r??``} `)},[()=>Z(`organization.signing_in.providers`),()=>Z(`organization.signing_in.domains`),()=>Z(`organization.signing_in.provisioning`),()=>n(g).provisioningTokens.length?Z(`organization.signing_in.tokens_reach`,{count:n(g).provisioningTokens.length}):Z(`organization.signing_in.no_tokens`)]),t(e,a)},$$slots:{default:!0}})}U(ce);var de=u(ce,2),fe=s(de);{let e=P(()=>Z(`organization.roles.title`)),r=P(()=>Z(`organization.roles.lede`));Q(fe,{get title(){return n(e)},get lede(){return n(r)},children:(e,r)=>{var a=ls(),o=d(a);Y(o,20,()=>n(g).roles,e=>e,(e,r)=>{var a=cs(),o=s(a),l=G(o,!0),d=u(o,2),p=G(d,!0),h=u(d,2),g=e=>{var i=ss();c((e,t)=>{F(i,`aria-label`,e),F(i,`title`,t),i.disabled=n(S)||n(z)[r]>0},[()=>Z(`organization.roles.stop_offering`,{role:r}),()=>n(z)[r]?Z(`organization.roles.held`,{count:n(z)[r]}):Z(`organization.roles.stop_offering`,{role:r})]),f(`click`,i,()=>he(r)),t(e,i)},_=P(()=>!m.includes(r));i(h,e=>{n(_)&&e(g)}),U(a),c(e=>{le(a,1,`badge badge-lg gap-1.5 ${e??``}`),H(l,r),H(p,n(z)[r]??0)},[()=>m.includes(r)?`badge-ghost`:`badge-outline`]),t(e,a)}),U(o);var l=u(o,2);{let e=P(()=>Z(`organization.roles.offer`)),t=P(()=>Z(`organization.roles.add`));$(l,{get label(){return n(e)},placeholder:`support`,autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,onsave:me,get save(){return n(t)},get value(){return n(A)},set value(e){C(A,e,!0)}})}var p=u(l,2),h=G(p,!0);c(e=>H(h,e),[()=>Z(`organization.roles.hint`)]),t(e,a)},$$slots:{default:!0}})}var pe=u(fe,2);{let e=P(()=>Z(`organization.details.title`));Q(pe,{get title(){return n(e)},children:(e,r)=>{var i=ts(),a=d(i);{let e=P(()=>Z(`organization.details.name`));$(a,{get label(){return n(e)},onsave:ge,get value(){return n(k)},set value(e){C(k,e,!0)}})}Ii(u(a,2),{get rows(){return n(ie)}}),t(e,i)},$$slots:{default:!0}})}U(de),U(ae);var _e=u(ae,2);{let e=P(()=>Z(`organization.activity.title`)),t=P(()=>Z(`organization.activity.lede`));Q(_e,{get title(){return n(e)},get lede(){return n(t)},children:(e,t)=>{{let t=P(()=>Z(`organization.activity.empty`));jr(e,{get events(){return n(g).events},get empty(){return n(t)}})}},$$slots:{default:!0}})}var ve=u(_e,2),Te=e=>{{let r=P(()=>Z(`organization.archive.title`)),i=P(()=>W(`organization.archive.lede`,`organization.archive.lede_tokens`));Q(e,{get title(){return n(r)},get lede(){return n(i)},children:(e,r)=>{var i=us(),a=G(i,!0);c(e=>{i.disabled=n(S),H(a,e)},[()=>Z(`organization.archive.button`,{organization:n(g).name})]),f(`click`,i,Ce),t(e,i)},$$slots:{default:!0}})}};i(ve,e=>{n(g).archivedAt||e(Te)}),t(e,r)};i(N,e=>{n(x)&&!n(g)?e(L):n(g)?e(ae,-1):e(B,1)}),t(e,T)},$$slots:{default:!0}})}B()}l([`click`]);var ps=p(`<span class="badge badge-warning badge-soft badge-sm"> </span>`),ms=p(`<span class="badge badge-ghost badge-sm"> </span>`),hs=p(`<button type="button" class="btn btn-sm"> </button>`),gs=p(`<p class="hint w-full"> <code class="font-mono text-xs break-all"> </code> <code class="font-mono text-xs break-all"> </code></p>`),_s=p(`<li class="flex-wrap"><code class="min-w-0 truncate font-mono text-sm"> </code> <!> <div class="ml-auto flex items-center gap-1"><!> <button type="button" class="btn btn-ghost btn-xs">×</button></div> <!></li>`),vs=p(`<ul class="compact-list"></ul>`),ys=p(`<button type="button" class="btn btn-ghost btn-sm"> </button>`),bs=p(`<form class="flex flex-wrap items-center gap-2"><span class="text-sm"> </span> <input class="input input-sm w-full max-w-60 font-mono" autocapitalize="none" spellcheck="false"/> <button type="submit" class="btn btn-sm"> </button> <!></form>`),xs=p(`<!> <form class="join"><input class="input input-sm join-item w-full max-w-60 font-mono" placeholder="acme.example" autocapitalize="none" spellcheck="false"/> <button type="submit" class="btn btn-sm join-item"> </button></form> <!>`,1),Ss=p(`<!> <!>`,1);function Cs(e,r){O(r,!0);let a=ct(),o=T(null),l=T(!1),p=T(``),m=T(``);async function h(){let e=await a.attempt(()=>r.api.query(`
|
|
333
|
+
query Domains {
|
|
334
|
+
domainClaims { domain recordName recordValue verifiedAt missingSince provider { key name } }
|
|
335
|
+
providers { key name }
|
|
336
|
+
tenant { customHost origins }
|
|
337
|
+
}
|
|
338
|
+
`));e&&(C(o,e,!0),C(m,e.tenant.customHost??``,!0))}h();let g=P(()=>[[``,Z(`domains.here`)],...(n(o)?.providers??[]).map(e=>[e.key,Z(`domains.to`,{name:e.name})])]),_=P(()=>(n(o)?.domainClaims??[]).filter(e=>e.verifiedAt));async function y(e,t,n){C(l,!0);let i=await a.attempt(()=>r.api.query(e,t),n);return C(l,!1),i&&await h(),i}async function b(){let e=n(p).trim();e&&await y(`mutation Claim($domain: String!) { claimDomain(domain: $domain) { domainClaim { domain } } }`,{domain:e},Z(`domains.claimed`,{domain:e}))&&C(p,``)}async function x(e){C(l,!0);let t=await a.attempt(()=>r.api.query(`mutation Check($domain: String!) { checkDomain(domain: $domain) { found } }`,{domain:e.domain}));C(l,!1),t&&(t.checkDomain.found?a.say(Z(`domains.proven`,{domain:e.domain})):a.blame(Z(`domains.unanswered`,{name:e.recordName})),await h())}function S(e,t){y(`mutation Route($domain: String!, $provider: ID) {
|
|
339
|
+
updateDomainClaim(domain: $domain, provider: $provider) { domainClaim { domain } }
|
|
340
|
+
}`,{domain:e.domain,provider:t||null},Z(t?`domains.routed_away`:`domains.routed_here`,{domain:e.domain}))}function w(e){confirm(Z(`domains.release_confirm`,{domain:e.domain}))&&y(`mutation Release($domain: String!) { releaseDomain(domain: $domain) { domain } }`,{domain:e.domain},Z(`domains.released`,{domain:e.domain}))}function E(e){(e||confirm(Z(`domains.stop_confirm`,{host:n(o).tenant.customHost})))&&y(`mutation Serve($host: String) { serveDomain(host: $host) { tenant { customHost } } }`,{host:e},e?Z(`domains.served`,{host:e}):Z(`domains.unserved`))}{let r=P(()=>Z(`domains.title`)),h=P(()=>Z(`domains.help`));Q(e,{row:!0,get title(){return n(r)},get help(){return n(h)},children:(e,r)=>{var h=Ss(),y=d(h);vn(y,{get feedback(){return a.state}});var T=u(y,2),D=e=>{var r=xs(),a=d(r),h=e=>{var r=vs();Y(r,21,()=>n(o).domainClaims,e=>e.domain,(e,r)=>{var a=_s(),o=s(a),d=G(o,!0),p=u(o,2),m=e=>{var i=ps(),a=G(i,!0);c(e=>H(a,e),[()=>Z(`domains.missing`,{since:yt(n(r).missingSince)})]),t(e,i)},h=e=>{var n=ms(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`domains.unproven`)]),t(e,n)};i(p,e=>{n(r).missingSince?e(m):n(r).verifiedAt||e(h,1)});var _=u(p,2),v=s(_),y=e=>{{let t=P(()=>Z(`domains.send`,{domain:n(r).domain})),i=P(()=>n(r).provider?.key??``);$i(e,{get name(){return n(t)},get value(){return n(i)},get options(){return n(g)},get disabled(){return n(l)},onchange:e=>S(n(r),e)})}},b=e=>{var i=hs(),a=G(i,!0);c(e=>{i.disabled=n(l),H(a,e)},[()=>Z(`domains.check`)]),f(`click`,i,()=>x(n(r))),t(e,i)};i(v,e=>{n(r).verifiedAt&&!n(r).missingSince?e(y):e(b,-1)});var C=u(v,2);U(_);var T=u(_,2),E=e=>{var i=gs(),a=s(i),o=u(a),l=G(o,!0),d=u(o,2),f=G(d,!0);U(i),c(e=>{H(a,`${e??``} `),H(l,n(r).recordName),H(f,n(r).recordValue)},[()=>Z(`domains.record`)]),t(e,i)};i(T,e=>{(!n(r).verifiedAt||n(r).missingSince)&&e(E)}),U(a),c(e=>{H(d,n(r).domain),F(C,`aria-label`,e),C.disabled=n(l)},[()=>Z(`domains.release`,{domain:n(r).domain})]),f(`click`,C,()=>w(n(r))),t(e,a)}),U(r),t(e,r)};i(a,e=>{n(o).domainClaims.length&&e(h)});var y=u(a,2),T=s(y);M(T);var D=u(T,2),O=G(D,!0);U(y);var k=u(y,2),A=e=>{var r=bs(),a=s(r),d=G(a,!0),p=u(a,2);M(p);var h=u(p,2),g=G(h,!0),y=u(h,2),b=e=>{var r=ys(),i=G(r,!0);c(e=>{r.disabled=n(l),H(i,e)},[()=>Z(`domains.stop`)]),f(`click`,r,()=>E(null)),t(e,r)};i(y,e=>{n(o).tenant.customHost&&e(b)}),U(r),c((e,t,r,i)=>{H(d,e),F(p,`aria-label`,t),F(p,`placeholder`,`login.${n(_)[0]?.domain??`acme.example`??``}`),h.disabled=r,H(g,i)},[()=>Z(`domains.serve`),()=>Z(`domains.serve`),()=>n(l)||!n(m).trim()||n(m).trim()===n(o).tenant.customHost,()=>Z(`domains.save`)]),v(`submit`,r,e=>{e.preventDefault(),E(n(m).trim())}),ee(p,()=>n(m),e=>C(m,e)),t(e,r)};i(k,e=>{(n(_).length||n(o).tenant.customHost)&&e(A)}),c((e,t,n)=>{F(T,`aria-label`,e),D.disabled=t,H(O,n)},[()=>Z(`domains.new`),()=>n(l)||!n(p).trim(),()=>Z(`domains.add`)]),v(`submit`,y,e=>{e.preventDefault(),b()}),ee(T,()=>n(p),e=>C(p,e)),t(e,r)};i(T,e=>{n(o)&&e(D)}),t(e,h)},$$slots:{default:!0}})}B()}l([`click`]);var ws=p(`<li><span class="min-w-0 truncate text-sm font-medium"> </span> <code class="hint font-mono"> </code> <span class="hint"> </span> <button type="button" class="btn btn-ghost btn-xs ml-auto">×</button></li>`),Ts=p(`<ul class="compact-list"></ul>`),Es=p(`<p class="hint"> </p>`),Ds=p(`<!> <!> <form class="join"><input class="input input-sm join-item w-full max-w-60"/> <button type="submit" class="btn btn-sm join-item"> </button></form> <!>`,1);function Os(e,r){O(r,!0);let a=ct(),o=T(w([])),l=T(``),p=P(()=>n(l).trim().toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``));async function m(){let e=await a.attempt(()=>r.api.query(`query Groups { groups { key name memberCount } }`));e&&C(o,e.groups,!0)}m();async function h(){if(!n(p))return;let e=n(l).trim();await a.attempt(()=>r.api.query(`mutation Create($key: String!, $name: String!) { createGroup(key: $key, name: $name) { group { key } } }`,{key:n(p),name:e}),Z(`groups.added`,{name:e}))&&(C(l,``),await m())}async function g(e){confirm(Z(`groups.delete_confirm`,{name:e.name}))&&await a.attempt(()=>r.api.query(`mutation Delete($key: String!) { deleteGroup(key: $key) { key } }`,{key:e.key}),Z(`groups.deleted`,{name:e.name}))&&await m()}{let r=P(()=>Z(`groups.title`)),m=P(()=>Z(`groups.lede`));Q(e,{row:!0,get title(){return n(r)},get help(){return n(m)},children:(e,r)=>{var m=Ds(),_=d(m);vn(_,{get feedback(){return a.state}});var y=u(_,2),b=e=>{var r=Ts();Y(r,21,()=>n(o),e=>e.key,(e,r)=>{var i=ws(),a=s(i),o=G(a,!0),l=u(a,2),d=G(l,!0),p=u(l,2),m=G(p,!0),h=u(p,2);U(i),c((e,t)=>{H(o,n(r).name),H(d,n(r).key),H(m,e),F(h,`aria-label`,t)},[()=>Z(`groups.people`,{count:n(r).memberCount}),()=>Z(`groups.delete`,{name:n(r).name})]),f(`click`,h,()=>g(n(r))),t(e,i)}),U(r),t(e,r)};i(y,e=>{n(o).length&&e(b)});var x=u(y,2),S=s(x);M(S);var w=u(S,2),T=G(w,!0);U(x);var E=u(x,2),D=e=>{var r=Es(),i=G(r,!0);c(e=>H(i,e),[()=>Z(`groups.key`,{key:n(p)})]),t(e,r)};i(E,e=>{n(p)&&e(D)}),c((e,t,r)=>{F(S,`aria-label`,e),F(S,`placeholder`,t),w.disabled=!n(p),H(T,r)},[()=>Z(`groups.new`),()=>Z(`groups.new`),()=>Z(`groups.add`)]),v(`submit`,x,e=>{e.preventDefault(),h()}),ee(S,()=>n(l),e=>C(l,e)),t(e,m)},$$slots:{default:!0}})}B()}l([`click`]);var ks=m(`<path></path>`),As=m(`<rect class="chart-hit" y="0" tabindex="-1" role="presentation"></rect>`),js=p(`<div class="chart-tip" aria-hidden="true"><strong> </strong> <span> </span></div>`),Ms=p(`<span> </span>`),Ns=p(`<tr><td> </td><td> </td></tr>`),Ps=p(`<figure class="chart"><figcaption class="chart-head"><span class="sr-only"> </span> <span class="chart-peak"> </span></figcaption> <div class="chart-plot tray"><svg class="chart-svg" role="img"><line class="chart-base" x1="0"></line><!><!></svg> <!></div> <div class="chart-axis"></div> <table class="sr-only"><caption> </caption><thead><tr><th> </th><th> </th></tr></thead><tbody></tbody></table></figure>`);function Fs(e,r){O(r,!0);let a=P(()=>Math.max(1,...r.points.map(e=>e.value))),o=P(()=>720/Math.max(r.points.length,1)),l=P(()=>Math.max(n(o)-2,1)),d=P(()=>r.points.reduce((e,t)=>e+t.value,0)),f=T(null);function p(e){return(e+.5)/Math.max(r.points.length,1)*100}function m(e,t){let r=e===0?2:Math.max(e/n(a)*138,3),i=146-r,o=Math.min(2,n(l)/2,r);return[`M ${t} 146`,`L ${t} ${i+o}`,`Q ${t} ${i} ${t+o} ${i}`,`L ${t+n(l)-o} ${i}`,`Q ${t+n(l)} ${i} ${t+n(l)} ${i+o}`,`L ${t+n(l)} 146`,`Z`].join(` `)}let h=P(()=>r.points.length?[0,Math.floor((r.points.length-1)/2),r.points.length-1].filter((e,t,n)=>n.indexOf(e)===t).map(e=>({at:e,point:r.points[e]})):[]);var g=Ps(),_=s(g),y=s(_),b=G(y,!0),x=u(y,2),S=G(x,!0);U(_);var w=u(_,2),E=s(w);F(E,`viewBox`,`0 0 720 168`);var D=s(E);F(D,`y1`,146),F(D,`x2`,720),F(D,`y2`,146);var k=u(D);Y(k,19,()=>r.points,e=>e.key,(e,r,i)=>{var a=ks();let s;c(e=>{s=le(a,0,`chart-bar`,null,s,{"chart-bar-idle":n(r).value===0,"chart-bar-on":n(f)?.index===n(i)}),F(a,`d`,e)},[()=>m(n(r).value,n(i)*n(o))]),t(e,a)});var A=u(k);Y(A,19,()=>r.points,e=>e.key,(e,r,i)=>{var a=As();F(a,`height`,146),c(()=>{F(a,`x`,n(i)*n(o)),F(a,`width`,n(o))}),v(`mouseenter`,a,()=>C(f,{...n(r),index:n(i)},!0)),v(`mouseleave`,a,()=>C(f,null)),v(`focus`,a,()=>C(f,{...n(r),index:n(i)},!0)),v(`blur`,a,()=>C(f,null)),t(e,a)}),U(E);var j=u(E,2),M=e=>{var r=js(),i=s(r),a=G(i,!0),o=u(i),l=u(o),d=G(l,!0);U(r),c((e,t)=>{ce(r,`--at: ${e??``}%`),H(a,n(f).value),H(o,` ${t??``} `),H(d,n(f).label)},[()=>p(n(f).index),()=>Z(`ui.bar_chart.unit`,{count:n(f).value})]),t(e,r)};i(j,e=>{n(f)&&e(M)}),U(w);var N=u(w,2);Y(N,21,()=>n(h),e=>e.at,(e,r)=>{var i=Ms(),a=G(i,!0);c(e=>{ce(i,`--at: ${e??``}%`),H(a,n(r).point.label)},[()=>p(n(r).at)]),t(e,i)}),U(N);var I=u(N,2),L=s(I),R=G(L,!0),z=u(L),V=s(z),ee=s(V),te=G(ee,!0),ne=u(ee),W=G(ne,!0);U(V),U(z);var re=u(z);Y(re,21,()=>r.points,e=>e.key,(e,r)=>{var i=Ns(),a=s(i),o=G(a,!0),l=u(a),d=G(l,!0);U(i),c(()=>{H(o,n(r).label),H(d,n(r).value)}),t(e,i)}),U(re),U(I),U(g),c((e,t,n,i)=>{H(b,r.label),H(S,e),F(E,`aria-label`,t),H(R,r.label),H(te,n),H(W,i)},[()=>Z(`ui.bar_chart.peak`,{peak:n(a)}),()=>Z(`ui.bar_chart.summary`,{label:r.label,total:n(d),days:r.points.length,peak:n(a)}),()=>Z(`ui.bar_chart.day`),()=>Z(`ui.bar_chart.units`)]),t(e,g),B()}var Is=p(`<div class="alert alert-error alert-soft text-sm" role="alert"><span> </span> <button type="button" class="btn btn-sm"> </button></div>`);function Ls(e,n){O(n,!0);let r=w({loading:!0,failure:null,data:null});async function a(){r.loading=!0,r.failure=null;try{r.data=await n.load()}catch(e){r.failure=e.message}finally{r.loading=!1}}a();var o=V(),l=d(o),p=e=>{it(e,{})},m=e=>{var n=Is(),i=s(n),o=G(i,!0),l=u(i,2),d=G(l,!0);U(n),c(e=>{H(o,r.failure),H(d,e)},[()=>Z(`ui.retry`)]),f(`click`,l,a),t(e,n)},h=e=>{var i=V(),o=d(i);y(o,()=>n.children,()=>r.data,()=>a),t(e,i)};i(l,e=>{r.loading?e(p):r.failure?e(m,1):e(h,-1)}),t(e,o),B()}l([`click`]);var Rs=p(`<div class="alert alert-error alert-soft text-sm" role="alert"> </div>`),zs=p(`<button type="button" class="btn btn-ghost btn-sm"> </button>`),Bs=p(`<span class="text-sm opacity-80"> </span>`),Vs=p(`<li class="flex flex-wrap items-start justify-between gap-3"><div class="flex min-w-0 flex-1 flex-col gap-0.5"><span> </span> <!></div> <!></li>`),Hs=p(`<ol class="flex flex-col gap-3"></ol>`),Us=p(`<button type="button"> </button>`),Ws=p(`<div class="range" role="group"></div>`),Gs=p(`<td><!></td> <td class="text-right text-sm"><!></td>`,1),Ks=p(`<!> <!>`,1),qs=p(`<!> <!> <div class="dash"><div class="dash-main"><!> <!></div> <div class="dash-side"><!></div></div>`,1),Js=p(`<img alt="" width="48" height="48" class="rounded-lg"/>`),Ys=p(`<div class="flex flex-wrap items-center gap-3"><!> <label class="btn btn-sm"> <input type="file" class="hidden" accept="image/png,image/jpeg,image/webp,image/gif"/></label> <!></div> <div class="flex flex-wrap items-center gap-3"><label class="flex items-center gap-2 text-sm"><input type="color"/> </label> <!></div>`,1),Xs=p(`<div class="ml-auto flex gap-1"><button type="button" class="btn btn-xs"> </button> <button type="button" class="btn btn-xs btn-ghost"> </button></div>`),Zs=p(`<li class="flex-wrap"><code class="font-mono text-sm"> </code> <span> </span> <span class="hint text-xs"> <!></span> <!></li>`),Qs=p(`<ul class="compact-list"></ul> <div class="flex flex-wrap items-center gap-2"><!> <button type="button" class="btn btn-sm"> </button> <button type="button" class="btn btn-sm btn-ghost"> </button></div>`,1),$s=p(`<!> <div class="grid gap-4"><!> <!> <!> <!> <!> <!> <!> <!></div>`,1);function ec(e,r){O(r,!0);let l=z(r,`overview`,3,!1),p=`
|
|
341
|
+
id action label createdAt ipAddress details
|
|
342
|
+
actor { uuid identifier }
|
|
343
|
+
by { uuid identifier }
|
|
344
|
+
client { clientId name }
|
|
345
|
+
device { id label }
|
|
346
|
+
`,m=`
|
|
347
|
+
query Recent {
|
|
348
|
+
worrying: events(grave: true, limit: 8) { ${p} }
|
|
349
|
+
latest: events(limit: 8) { ${p} }
|
|
350
|
+
}
|
|
351
|
+
`,h=[7,30,90],g=[[30,Z(`settings.retention.days_30`)],[90,Z(`settings.retention.days_90`)],[180,Z(`settings.retention.days_180`)],[365,Z(`settings.retention.a_year`)],[1095,Z(`settings.retention.three_years`)],[2555,Z(`settings.retention.seven_years`)]],_=(e,t)=>!t||e.some(([e])=>e===t)?e:[...e,[t,Z(`settings.after_days`,{days:t})]],v={staged:`badge-warning`,active:`badge-success`,retiring:`badge-info`,retired:`badge-ghost`},y=new Intl.DateTimeFormat(void 0,{day:`numeric`,month:`short`}),b=ct(),x=T(null),S=T(``),w=T(!0),E=T(30),D=P(()=>n(x)?[{to:`/actors`,label:Z(`settings.counts.actors`),value:n(x).tally.actors},{to:`/clients`,label:Z(`settings.counts.clients`),value:n(x).tally.clients},{to:`/organizations`,label:Z(`settings.counts.organizations`),value:n(x).tally.organizations},{to:`/actors#devices`,label:Z(`settings.counts.devices`),value:n(x).tally.devices}]:[]),k=`masks:manage:started`,A=T(!1);try{C(A,localStorage.getItem(k)===`1`)}catch{}function I(){C(A,!0);try{localStorage.setItem(k,`1`)}catch{}}let L=P(()=>n(x)?[{done:n(x).tenant.mails,title:Z(`settings.starting.mail.title`),detail:Z(`settings.starting.mail.detail`),to:`/messages`,action:Z(`settings.starting.mail.action`)},{done:n(x).tally.clients>0,title:Z(`settings.starting.client.title`),detail:Z(`settings.starting.client.detail`),to:`/clients`,action:Z(`settings.starting.client.action`)},{done:n(x).tally.actors>1,title:Z(`settings.starting.invite.title`),detail:Z(`settings.starting.invite.detail`),to:`/actors`,action:Z(`settings.starting.invite.action`)}]:[]),R=e=>e.map(e=>({key:e.date,value:e.signIns,label:y.format(new Date(`${e.date}T00:00:00`))}));async function ee(){C(w,!0);try{C(x,await r.api.query(`
|
|
352
|
+
query Tenant {
|
|
353
|
+
tenant {
|
|
354
|
+
uuid subdomain name dynamicRegistration dynamicClientScopes createdAt mails accentColor logoUrl keyRotationDays
|
|
355
|
+
eventRetentionDays
|
|
356
|
+
signingKeys { kid algorithm activatedAt retiredAt state }
|
|
357
|
+
}
|
|
358
|
+
viewer { identifier scopes }
|
|
359
|
+
tally { actors clients devices organizations }
|
|
360
|
+
namespaces {
|
|
361
|
+
name resource claimedAt releasable
|
|
362
|
+
client { clientId name }
|
|
363
|
+
}
|
|
364
|
+
scopesSupported
|
|
365
|
+
}
|
|
366
|
+
`),!0),C(S,n(x).tenant.name,!0)}catch(e){b.blame(e)}finally{C(w,!1)}}ee();async function ne(e,t){await b.attempt(()=>r.api.query(`mutation Update(
|
|
367
|
+
$name: String, $dynamicClientScopes: [String!], $dynamicRegistration: String,
|
|
368
|
+
$eventRetentionDays: Int, $accentColor: String, $keyRotationDays: Int
|
|
369
|
+
) {
|
|
370
|
+
updateTenant(
|
|
371
|
+
name: $name
|
|
372
|
+
dynamicClientScopes: $dynamicClientScopes
|
|
373
|
+
dynamicRegistration: $dynamicRegistration
|
|
374
|
+
eventRetentionDays: $eventRetentionDays
|
|
375
|
+
accentColor: $accentColor
|
|
376
|
+
keyRotationDays: $keyRotationDays
|
|
377
|
+
) { tenant { name } }
|
|
378
|
+
}`,e),t)&&await ee()}async function W(e){let t=e.currentTarget,n=t.files?.[0];n&&(await re(`mutation Logo($logo: Upload!) { uploadTenantLogo(logo: $logo) { tenant { logoUrl } } }`,{logo:n},Z(`settings.branding.logo_updated`)),t.value=``)}async function re(e,t,n){await b.attempt(()=>r.api.query(e,t),n)&&await ee()}let ie=()=>re(`mutation Stage { stageSigningKey { signingKey { kid } } }`,{},Z(`settings.keys.staged_notice`));function K(e){if(confirm(Z(`settings.keys.activate_confirm`)))return re(`mutation Activate($kid: ID!) { activateSigningKey(kid: $kid) { signingKey { kid } } }`,{kid:e},Z(`settings.keys.activated_notice`))}function q(e){if(confirm(Z(`settings.keys.discard_confirm`)))return re(`mutation Discard($kid: ID!) { discardSigningKey(kid: $kid) { kid } }`,{kid:e},Z(`settings.keys.discarded`))}function J(){if(confirm(Z(`settings.keys.rotate_confirm`)))return re(`mutation Rotate { rotateSigningKey { signingKey { kid } } }`,{},Z(`settings.keys.rotated`))}var ae=V(),oe=d(ae),se=e=>{it(e,{})},ce=e=>{var n=Rs(),r=G(n,!0);c(()=>H(r,b.state.failure)),t(e,n)},ue=e=>{wn(e,{get title(){return n(x).tenant.name},get id(){return r.boot.issuer},hero:!0,children:(e,l)=>{var p=qs(),g=d(p),_=e=>{{let r=e=>{var n=zs(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`settings.starting.hide`)]),f(`click`,n,I),t(e,n)},a=P(()=>Z(`settings.starting.title`));Q(e,{get title(){return n(a)},actions:r,children:(e,r)=>{var a=Hs();Y(a,21,()=>n(L),e=>e.title,(e,r)=>{var a=Vs(),l=s(a),d=s(l);let f;var p=G(d),m=u(d,2),h=e=>{var i=Bs(),a=G(i,!0);c(()=>H(a,n(r).detail)),t(e,i)};i(m,e=>{n(r).done||e(h)}),U(l);var g=u(l,2),_=e=>{nt(e,{get to(){return n(r).to},class:`btn btn-sm`,children:(e,i)=>{j();var a=o();c(()=>H(a,n(r).action)),t(e,a)},$$slots:{default:!0}})};i(g,e=>{n(r).done||e(_)}),U(a),c(()=>{f=le(d,1,`text-sm font-semibold`,null,f,{"line-through":n(r).done,"opacity-60":n(r).done}),H(p,`${n(r).done?`✓ `:``}${n(r).title??``}`)}),t(e,a)}),U(a),t(e,a)},$$slots:{actions:!0,default:!0}})}},v=P(()=>!n(A)&&n(L).some(e=>!e.done));i(g,e=>{n(v)&&e(_)});var y=u(g,2);Bo(y,{get counts(){return n(D)}});var b=u(y,2),S=s(b),w=s(S);{let e=e=>{var r=Ws();Y(r,20,()=>h,e=>e,(e,r)=>{var i=Us(),a=G(i,!0);c(e=>{F(i,`aria-pressed`,n(E)===r),H(a,e)},[()=>Z(`settings.sign_ins.span`,{days:r})]),f(`click`,i,()=>C(E,r,!0)),t(e,i)}),U(r),c(e=>F(r,`aria-label`,e),[()=>Z(`settings.sign_ins.range`)]),t(e,r)},i=P(()=>Z(`settings.sign_ins.title`));Q(w,{get title(){return n(i)},actions:e,children:(e,i)=>{var o=V(),s=d(o);a(s,()=>n(E),e=>{Ls(e,{load:()=>r.api.query(`
|
|
379
|
+
query Activity($days: Int) {
|
|
380
|
+
activity(days: $days) { date signIns }
|
|
381
|
+
}
|
|
382
|
+
`,{days:n(E)}),children:(e,t=N)=>{{let r=P(()=>R(t().activity)),i=P(()=>Z(`settings.sign_ins.chart`));Fs(e,{get points(){return n(r)},get label(){return n(i)}})}},$$slots:{default:!0}})}),t(e,o)},$$slots:{actions:!0,default:!0}})}var T=u(w,2);{let e=e=>{nt(e,{to:`/organizations`,class:`btn btn-ghost btn-sm`,children:(e,r)=>{j();var i=o();c(e=>H(i,e),[()=>n(x).tally.organizations>5?Z(`settings.organizations.all_count`,{count:n(x).tally.organizations}):Z(`settings.organizations.all`)]),t(e,i)},$$slots:{default:!0}})},i=P(()=>Z(`settings.organizations.title`));Q(T,{get title(){return n(i)},actions:e,children:(e,i)=>{Ls(e,{load:()=>r.api.query(`
|
|
383
|
+
query Organizations {
|
|
384
|
+
organizations(limit: 5) { key name memberCount ownerCount pendingCount }
|
|
385
|
+
}
|
|
386
|
+
`),children:(e,r=N)=>{{let i=e=>{var i=V(),a=d(i);Y(a,17,()=>r().organizations,e=>e.key,(e,r)=>{{let i=P(()=>`/organizations/${n(r).key}`);kt(e,{get to(){return n(i)},children:(e,i)=>{var a=Gs(),o=d(a);wo(s(o),{get organization(){return n(r)}}),U(o);var c=u(o,2);Do(s(c),{get organization(){return n(r)},class:`flex flex-col items-end`}),U(c),t(e,a)},$$slots:{default:!0}})}}),t(e,i)},a=P(()=>[Z(`settings.organizations.organization`),{label:Z(`settings.organizations.members`),right:!0}]),o=P(()=>Z(`settings.organizations.empty`));Pt(e,{get columns(){return n(a)},get count(){return r().organizations.length},get empty(){return n(o)},rows:i,$$slots:{rows:!0}})}},$$slots:{default:!0}})},$$slots:{actions:!0,default:!0}})}U(S);var O=u(S,2);Ls(s(O),{load:()=>r.api.query(m),children:(e,r=N)=>{var a=Ks(),s=d(a),l=e=>{{let i=e=>{nt(e,{to:`/activity`,class:`btn btn-sm`,children:(e,n)=>{j();var r=o();c(e=>H(r,e),[()=>Z(`settings.recent.all`)]),t(e,r)},$$slots:{default:!0}})},a=P(()=>Z(`settings.recent.worrying`));Q(e,{get title(){return n(a)},actions:i,children:(e,t)=>{jr(e,{get events(){return r().worrying}})},$$slots:{actions:!0,default:!0}})}};i(s,e=>{r().worrying.length&&e(l)});var f=u(s,2);{let e=e=>{nt(e,{to:`/activity`,class:`btn btn-ghost btn-sm`,children:(e,n)=>{j();var r=o();c(e=>H(r,e),[()=>Z(`settings.recent.all`)]),t(e,r)},$$slots:{default:!0}})},i=P(()=>Z(`settings.recent.lately`));Q(f,{get title(){return n(i)},actions:e,children:(e,t)=>{{let t=P(()=>Z(`settings.recent.empty`));jr(e,{get events(){return r().latest},get empty(){return n(t)}})}},$$slots:{actions:!0,default:!0}})}t(e,a)},$$slots:{default:!0}}),U(O),U(b),t(e,p)},$$slots:{default:!0}})},de=e=>{{let a=P(()=>Z(`settings.title`));wn(e,{get title(){return n(a)},children:(e,a)=>{var l=$s(),p=d(l);vn(p,{get feedback(){return b.state}});var m=u(p,2),h=s(m);{let e=P(()=>Z(`settings.tenant.title`)),i=P(()=>Z(`settings.tenant.help`));Q(h,{row:!0,get title(){return n(e)},get help(){return n(i)},children:(e,i)=>{var a=Ks(),o=d(a);{let e=P(()=>Z(`settings.tenant.name`));$(o,{get label(){return n(e)},onsave:()=>ne({name:n(S)},Z(`settings.tenant.renamed`)),get value(){return n(S)},set value(e){C(S,e,!0)}})}var s=u(o,2);{let e=P(()=>[{term:Z(`settings.tenant.subdomain`),value:n(x).tenant.subdomain,mono:!0},{term:Z(`settings.tenant.issuer`),value:r.boot.issuer,mono:!0},{term:Z(`settings.tenant.resource`),value:r.boot.resource,mono:!0},{term:Z(`settings.tenant.since`),value:_t(n(x).tenant.createdAt)}]);Ii(s,{get rows(){return n(e)}})}t(e,a)},$$slots:{default:!0}})}var y=u(h,2);{let e=P(()=>Z(`settings.branding.title`)),r=P(()=>Z(`settings.branding.help`));Q(y,{row:!0,get title(){return n(e)},get help(){return n(r)},children:(e,r)=>{var a=Ys(),o=d(a),l=s(o),p=e=>{var r=Js();c(()=>F(r,`src`,n(x).tenant.logoUrl)),t(e,r)};i(l,e=>{n(x).tenant.logoUrl&&e(p)});var m=u(l,2),h=s(m),g=u(h);U(m);var _=u(m,2),v=e=>{var n=zs(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`settings.branding.remove`)]),f(`click`,n,()=>re(`mutation { removeTenantLogo { tenant { logoUrl } } }`,{},Z(`settings.branding.logo_removed`))),t(e,n)};i(_,e=>{n(x).tenant.logoUrl&&e(v)}),U(o);var y=u(o,2),b=s(y),S=s(b);M(S);var C=u(S);U(b);var w=u(b,2),T=e=>{var n=zs(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`settings.branding.own`)]),f(`click`,n,()=>ne({accentColor:``},Z(`settings.branding.color_reset`))),t(e,n)};i(w,e=>{n(x).tenant.accentColor&&e(T)}),U(y),c((e,t)=>{H(h,`${e??``} `),te(S,n(x).tenant.accentColor??`#b3380f`),H(C,` ${t??``}`)},[()=>n(x).tenant.logoUrl?Z(`settings.branding.change_logo`):Z(`settings.branding.upload_logo`),()=>Z(`settings.branding.accent`)]),f(`change`,g,W),f(`change`,S,e=>ne({accentColor:e.currentTarget.value},Z(`settings.branding.color_updated`))),t(e,a)},$$slots:{default:!0}})}var w=u(y,2);{let e=P(()=>Z(`settings.retention.title`)),t=P(()=>Z(`settings.retention.help`));Q(w,{row:!0,get title(){return n(e)},get help(){return n(t)},children:(e,t)=>{{let t=P(()=>_(g,n(x).tenant.eventRetentionDays));$i(e,{get value(){return n(x).tenant.eventRetentionDays},get options(){return n(t)},onchange:e=>ne({eventRetentionDays:Number(e)},Z(`settings.retention.updated`))})}},$$slots:{default:!0}})}var T=u(w,2);{let e=P(()=>Z(`settings.registration.title`)),r=P(()=>Z(`settings.registration.help`));Q(T,{row:!0,get title(){return n(e)},get help(){return n(r)},children:(e,r)=>{var a=Ks(),o=d(a);{let e=P(()=>[[`off`,Z(`settings.registration.off`)],[`anything`,Z(`settings.registration.on`)],[`bounded`,Z(`settings.registration.bounded`)]]);$i(o,{get value(){return n(x).tenant.dynamicRegistration},get options(){return n(e)},onchange:e=>ne({dynamicRegistration:e},Z(`settings.registration.updated`))})}var s=u(o,2),c=e=>{{let t=P(()=>n(x).tenant.dynamicClientScopes??[]);un(e,{get value(){return n(t)},get available(){return n(x).scopesSupported},onchange:e=>ne({dynamicClientScopes:e},Z(`settings.registration.ceiling_updated`))})}};i(s,e=>{n(x).tenant.dynamicRegistration===`bounded`&&e(c)}),t(e,a)},$$slots:{default:!0}})}var E=u(T,2),D=e=>{Ha(e,{get api(){return r.api},get rows(){return n(x).namespaces},onreleased:ee,showClient:!0,row:!0})};i(E,e=>{n(x).namespaces.length&&e(D)});var O=u(E,2);{let e=P(()=>Z(`settings.keys.title`)),r=P(()=>Z(`settings.keys.help`));Q(O,{row:!0,get title(){return n(e)},get help(){return n(r)},children:(e,r)=>{var a=Qs(),l=d(a);Y(l,21,()=>n(x).tenant.signingKeys,e=>e.kid,(e,r)=>{var a=Zs(),l=s(a),d=G(l,!0),p=u(l,2),m=G(p,!0),h=u(p,2),g=s(h),_=u(g),y=e=>{var i=o();c(e=>H(i,e),[()=>Z(`settings.keys.until`,{day:_t(n(r).retiredAt)})]),t(e,i)},b=e=>{var i=o();c(e=>H(i,e),[()=>_t(n(r).activatedAt,Z(`settings.keys.not_yet`))]),t(e,i)};i(_,e=>{n(r).state===`retiring`?e(y):e(b,-1)}),U(h);var x=u(h,2),S=e=>{var i=Xs(),a=s(i),o=G(a,!0),l=u(a,2),d=G(l,!0);U(i),c((e,t)=>{H(o,e),H(d,t)},[()=>Z(`settings.keys.activate`),()=>Z(`settings.keys.discard`)]),f(`click`,a,()=>K(n(r).kid)),f(`click`,l,()=>q(n(r).kid)),t(e,i)};i(x,e=>{n(r).state===`staged`&&e(S)}),U(a),c((e,t)=>{H(d,e),le(p,1,`badge badge-sm ${v[n(r).state]??``}`),H(m,t),H(g,`${n(r).algorithm??``} · `)},[()=>n(r).kid.slice(0,8),()=>v[n(r).state]?Z(`settings.keys.states.${n(r).state}`):n(r).state]),t(e,a)}),U(l);var p=u(l,2),m=s(p);{let e=P(()=>Z(`settings.keys.schedule`)),t=P(()=>String(n(x).tenant.keyRotationDays??0)),r=P(()=>[0,30,90,180,365].map(e=>[String(e),e?Z(`settings.keys.every`,{count:e}):Z(`settings.keys.by_hand`)]));$i(m,{get name(){return n(e)},get value(){return n(t)},get options(){return n(r)},onchange:e=>ne({keyRotationDays:Number(e)},Z(`settings.keys.scheduled`))})}var h=u(m,2),g=G(h,!0),_=u(h,2),y=G(_,!0);U(p),c((e,t)=>{H(g,e),H(y,t)},[()=>Z(`settings.keys.stage`),()=>Z(`settings.keys.rotate`)]),f(`click`,h,ie),f(`click`,_,J),t(e,a)},$$slots:{default:!0}})}var k=u(O,2);Os(k,{get api(){return r.api}}),Cs(u(k,2),{get api(){return r.api}}),U(m),t(e,l)},$$slots:{default:!0}})}};i(oe,e=>{n(w)&&!n(x)?e(se):n(x)?l()?e(ue,2):e(de,-1):e(ce,1)}),t(e,ae),B()}l([`click`,`change`]);var tc=p(`<nav class="settings-tabs"><!> <!></nav>`);function nc(e,r){O(r,!0);var i=tc(),a=s(i);{let e=P(()=>r.part===`log`?`settings-tab-on`:``);nt(a,{to:`/activity`,get class(){return`settings-tab ${n(e)??``}`},children:(e,n)=>{j();var r=o();c(e=>H(r,e),[()=>Z(`activity.parts.log`)]),t(e,r)},$$slots:{default:!0}})}var l=u(a,2);{let e=P(()=>r.part===`streams`?`settings-tab-on`:``);nt(l,{to:`/activity/streams`,get class(){return`settings-tab ${n(e)??``}`},children:(e,n)=>{j();var r=o();c(e=>H(r,e),[()=>Z(`activity.parts.streams`)]),t(e,r)},$$slots:{default:!0}})}U(i),c(e=>F(i,`aria-label`,e),[()=>Z(`activity.title`)]),t(e,i),B()}var rc=p(`<span> <!> </span>`),ic=p(`<span> </span>`),ac=p(`<div class="alert alert-info alert-soft flex-wrap items-center gap-3 text-sm" role="status"><!> <!></div>`),oc=p(`<option> </option>`),sc=p(`<div class="flex flex-wrap items-end gap-4"><label class="flex flex-col gap-1.5"><span class="legend"> </span> <select class="select select-sm w-full max-w-xs"><option> </option><!></select></label> <label class="flex items-center gap-2 pb-1 text-sm"><input type="checkbox" class="toggle toggle-sm"/> </label> <div class="flex flex-col gap-1.5 md:ml-auto"><span class="legend flex items-center gap-2"> <!></span> <div class="flex flex-wrap items-center gap-2"><input class="input input-sm w-auto" type="date"/> <span class="hint">–</span> <input class="input input-sm w-auto" type="date"/> <button type="button" class="btn btn-sm"> </button></div></div></div>`),cc=p(`<!> <!>`,1),lc=p(`<!> <!> <!> <!> <!>`,1);function uc(e,r){O(r,!0);let a=at(),l=ct(),p=Ze(),m=T(w([])),h=T(w([])),g=T(!1),_=()=>new Date().toISOString().slice(0,10),v=w({from:(e=>new Date(Date.now()-e*864e5).toISOString().slice(0,10))(30),to:_()}),y=T(``),b=T(!1),D=T(!0),k=T(null),A=P(()=>p.query.get(`actor`)),N=P(()=>p.query.get(`client`)),I=P(()=>!!(n(A)||n(N)));async function R(){C(D,!0);let e=await l.attempt(()=>r.api.query(`
|
|
387
|
+
query Activity(
|
|
388
|
+
$action: String, $grave: Boolean, $afterId: ID, $limit: Int,
|
|
389
|
+
$actor: ID, $client: ID
|
|
390
|
+
) {
|
|
391
|
+
events(
|
|
392
|
+
action: $action, grave: $grave, afterId: $afterId, limit: $limit,
|
|
393
|
+
actor: $actor, client: $client
|
|
394
|
+
) {
|
|
395
|
+
id action label createdAt ipAddress userAgent details
|
|
396
|
+
actor { uuid identifier }
|
|
397
|
+
by { uuid identifier }
|
|
398
|
+
client { clientId name }
|
|
399
|
+
device { id label }
|
|
400
|
+
}
|
|
401
|
+
eventCount(action: $action, grave: $grave, actor: $actor, client: $client)
|
|
402
|
+
eventActions { action label }
|
|
403
|
+
}
|
|
404
|
+
`,{action:n(y)||null,grave:n(b),afterId:a.cursor,limit:a.size,actor:n(A),client:n(N)}));C(D,!1),e&&(C(h,e.eventActions,!0),C(m,e.events,!0),a.counted(e.eventCount))}function z(e){e===`forward`?a.forward(n(m).at(-1)?.id):a.back(),R()}async function V(){if(C(k,null),n(A)){let e=await r.api.query(`query About($uuid: ID!) { actor(uuid: $uuid) { uuid identifier } }`,{uuid:n(A)}).catch(()=>null);e?.actor&&C(k,{label:e.actor.identifier,to:`/actors/${e.actor.uuid}`,noun:Z(`activity.nouns.actor`)},!0);return}if(!n(N))return;let e=await r.api.query(`query About($clientId: ID!) { client(clientId: $clientId) { clientId name } }`,{clientId:n(N)}).catch(()=>null);e?.client&&C(k,{label:e.client.name,to:`/clients/${e.client.clientId}`,noun:Z(`activity.nouns.client`)},!0)}x(()=>{n(A),n(N),S(()=>{a.reset(),R(),V()})});function te(e){C(y,e,!0),a.reset(),R()}function ne(e){C(b,e,!0),e&&C(y,``),a.reset(),R()}async function W(){C(g,!0);let e=await l.attempt(()=>r.api.query(`mutation Export($from: ISO8601DateTime!, $to: ISO8601DateTime!, $action: String, $actor: ID) {
|
|
405
|
+
exportEvents(from: $from, to: $to, action: $action, actor: $actor) { url count }
|
|
406
|
+
}`,{from:new Date(`${v.from}T00:00:00`).toISOString(),to:new Date(new Date(`${v.to}T00:00:00`).getTime()+864e5).toISOString(),action:n(y)||null,actor:n(A)||null}));C(g,!1),e&&(l.say(Z(`activity.downloading`,{count:e.exportEvents.count})),location.assign(e.exportEvents.url))}{let r=P(()=>Z(`activity.title`));wn(e,{get title(){return n(r)},children:(e,r)=>{var p=lc(),x=d(p);nc(x,{part:`log`});var S=u(x,2);vn(S,{get feedback(){return l.state}});var C=u(S,2),w=e=>{var r=ac(),a=s(r),l=e=>{var r=rc(),i=s(r),a=u(i);nt(a,{get to(){return n(k).to},class:`link font-medium`,children:(e,r)=>{j();var i=o();c(()=>H(i,n(k).label)),t(e,i)},$$slots:{default:!0}});var l=u(a,1,!0);U(r),c((e,t)=>{H(i,`${e??``} `),H(l,t)},[()=>Z(`activity.involves`,{noun:n(k).noun}),()=>Z(`activity.involves_end`)]),t(e,r)},d=e=>{var r=ic(),i=G(r,!0);c(e=>H(i,e),[()=>Z(n(A)?`activity.gone.actor`:`activity.gone.client`)]),t(e,r)};i(a,e=>{n(k)?e(l):e(d,-1)}),nt(u(a,2),{to:`/activity`,class:`btn btn-sm`,children:(e,n)=>{j();var r=o();c(e=>H(r,e),[()=>Z(`activity.everything`)]),t(e,r)},$$slots:{default:!0}}),U(r),t(e,r)};i(C,e=>{n(I)&&e(w)});var T=u(C,2);Q(T,{children:(e,r)=>{var i=sc(),a=s(i),o=s(a),l=G(o,!0),d=u(o,2),p=s(d),m=G(p,!0);p.value=p.__value=``;var x=u(p);Y(x,17,()=>n(h),e=>e.action,(e,r)=>{var i=oc(),a=G(i,!0),o={};c(()=>{H(a,n(r).label),o!==(o=n(r).action)&&(i.value=(i.__value=o)??``)}),t(e,i)}),U(d);var S;L(d),U(a);var C=u(a,2),w=s(C);M(w);var T=u(w);U(C);var D=u(C,2),O=s(D),k=s(O),A=u(k);{let e=P(()=>Z(`activity.export.lede`)),t=P(()=>Z(`activity.export.title`));St(A,{get text(){return n(e)},get label(){return n(t)}})}U(O);var j=u(O,2),N=s(j);M(N);var I=u(N,4);M(I);var R=u(I,2),z=G(R,!0);U(j),U(D),U(i),c((e,t,r,i,a,o,s,c)=>{H(l,e),d.disabled=n(b),H(m,t),S!==(S=n(y))&&(d.value=(d.__value=S)??``,E(d,S)),ie(w,n(b)),H(T,` ${r??``}`),H(k,`${i??``} `),F(N,`aria-label`,a),F(N,`max`,v.to),F(I,`aria-label`,o),F(I,`min`,v.from),F(I,`max`,s),R.disabled=n(g)||!v.from||!v.to,H(z,c)},[()=>Z(`activity.show`),()=>Z(`activity.all`),()=>Z(`activity.grave`),()=>Z(`activity.export.title`),()=>Z(`activity.export.from`),()=>Z(`activity.export.through`),()=>_(),()=>Z(`activity.export.download`)]),f(`change`,d,e=>te(e.currentTarget.value)),f(`change`,w,e=>ne(e.currentTarget.checked)),ee(N,()=>v.from,e=>v.from=e),ee(I,()=>v.to,e=>v.to=e),f(`click`,R,W),t(e,i)},$$slots:{default:!0}});var O=u(T,2),N=e=>{it(e,{})},R=e=>{Q(e,{children:(e,r)=>{var i=cc(),o=d(i);{let e=P(()=>n(b)?Z(`activity.empty.grave`):Z(`activity.empty.plain`));jr(o,{get events(){return n(m)},get empty(){return n(e)}})}st(u(o,2),{get pages(){return a},get shown(){return n(m).length},get busy(){return n(D)},onpage:z}),t(e,i)},$$slots:{default:!0}})};i(O,e=>{n(D)&&n(m).length===0?e(N):e(R,-1)}),t(e,p)},$$slots:{default:!0}})}B()}l([`change`,`click`]);var dc=p(`<button type="button" class="btn btn-primary btn-sm"> </button>`),fc=p(`<button type="button" class="btn btn-ghost btn-sm"> </button>`),pc=p(`<button type="button" class="flex items-baseline justify-between gap-3 sheet sheet-press px-3 py-2.5 text-left"><span class="text-sm font-medium"> </span> <span class="font-mono text-xs opacity-75"> </span></button>`),mc=p(`<div class="grid gap-2 sm:grid-cols-2 lg:grid-cols-3"></div>`),hc=p(`<p class="text-sm opacity-85"> <a class="link" target="_blank" rel="noreferrer noopener"> </a>.</p>`),gc=p(`<div class="flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1"><span class="hint"> </span> <button type="button" class="link font-mono text-xs break-all"> </button></div>`),_c=p(`<div class="grid gap-3 sm:grid-cols-2"></div>`),vc=p(`<option> </option>`),yc=p(`<div class="flex flex-col gap-3"><span class="legend"> </span> <div class="flex flex-wrap items-end gap-3"><div class="min-w-64 flex-1"><!></div> <button type="button" class="btn btn-sm"> </button></div> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea textarea-sm w-full font-mono text-xs" rows="3"></textarea></label> <p class="hint"> </p> <div class="grid gap-3 sm:grid-cols-2"><!> <!></div> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea textarea-sm w-full font-mono text-xs" rows="4"></textarea></label> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <select class="select select-sm w-full"></select></label></div>`),bc=p(`<span class="font-mono text-xs break-all opacity-85"> </span>`),xc=p(`<div class="flex flex-col gap-2"><!> <p class="hint"> </p></div>`),Sc=p(`<div class="flex flex-wrap items-end gap-3"><div class="min-w-64 flex-1"><!></div> <button type="button" class="btn btn-sm"> </button></div>`),Cc=p(`<div class="grid gap-3 sm:grid-cols-2"><!> <!> <!> <!></div>`),wc=p(`<div class="grid gap-3 sm:grid-cols-2"><!> <!></div> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea textarea-sm w-full font-mono text-xs" rows="4"></textarea></label>`,1),Tc=p(`<div class="grid gap-3 sm:grid-cols-2"><label class="flex flex-col gap-1.5"><span class="field-label"> </span> <select class="select select-sm w-full"><option> </option><option> </option><option> </option></select></label> <!></div>`),Ec=p(`<div class="flex flex-col gap-3"><span class="legend"> </span> <div class="grid gap-3 sm:grid-cols-2"><!> <!></div> <!> <!></div>`),Dc=p(`<details class="text-sm"><summary class="cursor-pointer opacity-85"> </summary> <div class="grid gap-3 pt-3 sm:grid-cols-2"><!> <!></div></details>`),Oc=p(`<label class="flex items-start gap-3 text-sm"><input type="checkbox" class="toggle toggle-sm"/> <span> <span class="hint block"> </span></span></label>`),kc=p(`<div class="grid gap-3 sm:grid-cols-2"><!> <!></div> <p class="hint"> <span class="font-mono"> </span> </p>`,1),Ac=p(`<div class="flex flex-col gap-3 tray p-3"><span class="legend"> </span> <!> <!></div>`),jc=p(`<label class="flex items-start gap-3 text-sm"><input type="checkbox" class="toggle toggle-sm"/> <span> <span class="hint block"> <code> </code> </span></span></label>`),Mc=p(`<div class="flex flex-col gap-3 tray p-3"><span class="legend"> </span> <label class="flex items-start gap-3 text-sm"><input type="checkbox" class="toggle toggle-sm"/> <span> <span class="hint block"> </span></span></label> <!> <!> <div class="grid gap-3 sm:grid-cols-2"><!> <!></div></div>`),Nc=p(`<!> <div class="flex flex-col gap-2 tray p-3"><span class="legend"> </span> <!></div> <div class="grid gap-3 sm:grid-cols-2"><!> <!></div> <!> <!> <!> <!> <!> <!> <!> <!> <!> <div class="flex gap-2"><button type="button" class="btn btn-primary btn-sm"> </button> <button type="button" class="btn btn-ghost btn-sm"> </button></div>`,1),Pc=p(`<button type="button" class="btn btn-sm"> </button>`),Fc=p(`<button type="button" class="btn btn-sm"> </button> <!> <button type="button" class="btn btn-sm btn-error btn-outline"> </button>`,1),Ic=p(`<span class="badge badge-ghost badge-sm"> </span>`),Lc=p(`<span class="badge badge-warning badge-sm"> </span>`),Rc=p(`<span class="badge badge-info badge-sm"> </span>`),zc=p(`<span class="badge badge-ghost badge-sm font-mono"> </span>`),Bc=p(`<div class="sm:col-span-2"><dt class="term"> </dt> <dd><a class="link font-mono text-xs break-all" target="_blank" rel="noreferrer"> </a></dd></div> <div><dt class="term"> </dt> <dd class="font-mono text-xs break-all"> </dd></div> <div><dt class="term"> </dt> <dd class="text-xs"><!></dd></div>`,1),Vc=p(`<span class="text-warning"> </span>`),Hc=p(`<div><dt class="term"> </dt> <dd class="font-mono text-xs break-all"> </dd></div>`),Uc=p(`<div><dt class="term"> </dt> <dd class="font-mono break-all"> </dd></div> <div><dt class="term"> </dt> <dd><!></dd></div> <!> <div><dt class="term"> </dt> <dd class="font-mono text-xs break-all"> </dd></div>`,1),Wc=p(`<div class="sm:col-span-2"><dt class="term"> </dt> <dd class="font-mono text-xs break-all"> </dd></div> <div><dt class="term"> </dt> <dd class="text-xs"> </dd></div>`,1),Gc=p(`<div class="sm:col-span-2"><dt class="term"> </dt> <dd class="font-mono text-xs break-all"> </dd></div>`),Kc=p(`<div><dt class="term"> </dt> <dd class="font-mono text-xs break-all"> </dd></div> <div><dt class="term"> </dt> <dd> </dd></div> <!>`,1),qc=p(`<span class="hint"> </span>`),Jc=p(`<details class="text-sm"><summary class="cursor-pointer opacity-85"> </summary> <div class="pt-3"><!></div></details>`),Yc=p(`<div class="flex flex-wrap gap-2"><span class="badge badge-ghost badge-sm"> </span> <!> <!> <!> <!> <!></div> <dl class="grid gap-x-6 gap-y-2 text-sm sm:grid-cols-2"><div class="sm:col-span-2"><dt class="term"> </dt> <dd><button type="button" class="link font-mono text-xs break-all"> </button></dd></div> <!> <!> <!> <div><dt class="term"> </dt> <dd> <!></dd></div></dl> <!>`,1),Xc=p(`<li class="slat"><div class="flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1"><span class="flex flex-wrap items-baseline gap-2"><span class="text-sm font-medium"> </span> <span class="font-mono text-xs opacity-75"> </span></span> <span class="flex items-baseline gap-3 text-xs"><span class="opacity-80"> </span> <button type="button" class="link"> </button></span></div></li>`),Zc=p(`<ul class="slats"></ul>`),Qc=p(`<!> <!>`,1),$c=p(`<!> <!> <!> <!>`,1);function el(e,r){O(r,!0);let a=Object.fromEntries([`oidc`,`oauth2`,`saml`,`mcp`].map(e=>[e,Z(`providers.protocols.${e}`)])),l=[`email`,`email_verified`,`name`,`given_name`,`family_name`,`preferred_username`,`picture`].map(e=>[e,Z(`providers.claims.${e}`)]),p=[[``,Z(`providers.name_id_formats.any`)],[`urn:oasis:names:tc:SAML:2.0:nameid-format:persistent`,Z(`providers.name_id_formats.persistent`)],[`urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress`,Z(`providers.name_id_formats.email`)],[`urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified`,Z(`providers.name_id_formats.unspecified`)]],m={domain:[Z(`providers.asked.domain`),`acme.okta.com`],tenant:[Z(`providers.asked.tenant`),`00000000-0000-0000-0000-000000000000`],realm:[Z(`providers.asked.realm`),`staff`]},h=`
|
|
407
|
+
key name protocol preset authorizationUrl tokenUrl userinfoUrl emailsUrl clientId
|
|
408
|
+
scopes authorizeParams subjectClaim claims tokenAuthMethod responseMode teamId keyId
|
|
409
|
+
secretHeld privateKeyHeld connections signedIn archivedAt createdAt callbackUrl
|
|
410
|
+
issuer jwksUri role trustsEmail receivesSignals emailDomains signupScopes
|
|
411
|
+
idpEntityId idpSsoUrl idpCertificates metadataUrl metadataFetchedAt nameIdFormat spEntityId
|
|
412
|
+
delegates delegatedScopes delegationParams delegationScope resourceUrl registeredAt delegations
|
|
413
|
+
`,g=`
|
|
414
|
+
query Providers {
|
|
415
|
+
active: providers { ${h} }
|
|
416
|
+
archived: providers(archived: true) { ${h} }
|
|
417
|
+
providerPresets { key name protocol asks needs defaults guide custom trustsEmail delegates delegatedScopes }
|
|
418
|
+
connections {
|
|
419
|
+
id subject label email emailVerified connectedAt signedInAt delegable
|
|
420
|
+
provider { key name }
|
|
421
|
+
actor { uuid identifier }
|
|
422
|
+
delegations { id releasedAt client { clientId name } }
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
`,_=[[`name`,`String`],[`protocol`,`String`],[`authorizationUrl`,`String`],[`tokenUrl`,`String`],[`userinfoUrl`,`String`],[`emailsUrl`,`String`],[`clientId`,`String`],[`clientSecret`,`String`],[`scopes`,`[String!]`],[`subjectClaim`,`String`],[`claims`,`JSON`],[`issuer`,`String`],[`jwksUri`,`String`],[`tokenAuthMethod`,`String`],[`responseMode`,`String`],[`teamId`,`String`],[`keyId`,`String`],[`privateKey`,`String`],[`idpEntityId`,`String`],[`idpSsoUrl`,`String`],[`idpCertificates`,`String`],[`metadataUrl`,`String`],[`nameIdFormat`,`String`],[`role`,`String`],[`trustsEmail`,`Boolean`],[`receivesSignals`,`Boolean`],[`emailDomains`,`[String!]`],[`signupScopes`,`[String!]`],[`delegates`,`Boolean`],[`delegatedScopes`,`[String!]`],[`delegationParams`,`JSON`],[`resourceUrl`,`String`]],v=e=>[...e,..._].map(([e,t])=>`$${e}: ${t}`).join(`, `),y=e=>[...e,..._].map(([e])=>`${e}: $${e}`).join(`, `),b=[[`key`,`ID!`],[`preset`,`ID`],[`presetValues`,`JSON`]],x=`
|
|
426
|
+
mutation Create(${v(b).replace(`$name: String`,`$name: String!`)}) {
|
|
427
|
+
createProvider(${y(b)}) { provider { key callbackUrl } }
|
|
428
|
+
}
|
|
429
|
+
`,S=`
|
|
430
|
+
mutation Update(${v([[`key`,`ID!`]])}) {
|
|
431
|
+
updateProvider(${y([[`key`,`ID!`]])}) { provider { key } }
|
|
432
|
+
}
|
|
433
|
+
`,E=e=>({key:e.custom?``:e.key,name:e.custom?``:e.name,preset:e.custom?null:e.key,protocol:e.protocol,asked:{...e.defaults},authorizationUrl:``,tokenUrl:``,userinfoUrl:``,emailsUrl:``,clientId:``,clientSecret:``,scopes:``,subjectClaim:e.protocol===`oidc`?`sub`:e.protocol===`saml`?`name_id`:`id`,claims:{},issuer:``,jwksUri:``,tokenAuthMethod:e.needs.includes(`private_key`)?`signed_secret`:`client_secret_post`,responseMode:``,teamId:``,keyId:``,privateKey:``,idpEntityId:``,idpSsoUrl:``,idpCertificates:``,metadataUrl:``,metadataXml:``,nameIdFormat:``,role:`credential`,trustsEmail:!!e.trustsEmail,receivesSignals:!1,emailDomains:``,signupScopes:``,delegates:!!e.delegates,delegatedScopes:(e.delegatedScopes??[]).join(` `),delegationParams:``,resourceUrl:``}),D=ct(),k=T(w([])),A=T(w([])),N=T(w([])),z=T(w([])),V=T(!0),te=T(!1),W=T(!1),re=T(null),K=T(null),J=T(null);async function ae(){C(V,!0);let e=await D.attempt(()=>r.api.query(g));C(V,!1),e&&(C(k,e.active,!0),C(A,e.archived,!0),C(N,e.providerPresets,!0),C(z,e.connections,!0))}ae();let oe=e=>n(z).filter(t=>t.provider.key===e.key),se=e=>n(N).find(t=>t.key===e),ce=P(()=>n(re)===``),le=P(()=>!n(ce)||!!n(K)?.custom),ue=P(()=>n(J)?.protocol===`saml`),de=P(()=>n(J)?.protocol===`oauth2`),fe=P(()=>n(J)?.protocol===`oidc`),pe=P(()=>n(J)?.protocol===`mcp`),me=P(()=>n(J)?.tokenAuthMethod===`signed_secret`),he=typeof window>`u`?``:window.location.origin,ge=P(()=>`${he}/login/provider/${n(J)?.key?.trim()||`…`}/callback`),_e=P(()=>`${he}/login/provider/${n(J)?.key?.trim()||`…`}/metadata`);function ve(){C(W,!0),C(re,null),C(J,null),D.clear()}function ye(e){C(K,e,!0),C(W,!1),C(re,``),C(J,E(e),!0),D.clear()}function be(e){C(W,!1),C(K,se(e.preset)??null,!0),C(re,e.key,!0),C(J,{...E({key:e.key,name:e.name,protocol:e.protocol,needs:[],defaults:{},custom:!0}),key:e.key,name:e.name,preset:e.preset,authorizationUrl:e.authorizationUrl??``,tokenUrl:e.tokenUrl??``,userinfoUrl:e.userinfoUrl??``,emailsUrl:e.emailsUrl??``,clientId:e.clientId??``,scopes:e.scopes.join(` `),subjectClaim:e.subjectClaim,claims:{...e.claims},issuer:e.issuer??``,jwksUri:e.jwksUri??``,tokenAuthMethod:e.tokenAuthMethod,responseMode:e.responseMode??``,teamId:e.teamId??``,keyId:e.keyId??``,idpEntityId:e.idpEntityId??``,idpSsoUrl:e.idpSsoUrl??``,idpCertificates:e.idpCertificates??``,metadataUrl:e.metadataUrl??``,nameIdFormat:e.nameIdFormat??``,role:e.role,trustsEmail:e.trustsEmail,receivesSignals:e.receivesSignals,emailDomains:e.emailDomains.join(` `),signupScopes:e.signupScopes.join(` `),delegates:e.delegates,delegatedScopes:e.delegatedScopes.join(` `),delegationParams:Ce(e.delegationParams),resourceUrl:e.resourceUrl??``},!0),D.clear()}function xe(){C(W,!1),C(re,null),C(J,null),D.clear()}let X=e=>e?.trim()||null,Se=e=>e.split(/[\s,]+/).filter(Boolean),Ce=e=>Object.entries(e??{}).map(([e,t])=>`${e}=${t}`).join(` `),we=e=>Object.fromEntries(Se(e).map(e=>e.split(`=`)).filter(([e,t])=>e&&t!==void 0).map(([e,...t])=>[e,t.join(`=`)]));function Te(){return Object.fromEntries(Object.entries(n(J).claims).map(([e,t])=>[e,t?.trim()]).filter(([,e])=>e))}function Ee(){let e={key:n(J).key.trim(),name:n(J).name.trim(),role:n(J).role,trustsEmail:!n(ue)&&n(J).trustsEmail,receivesSignals:n(fe)?n(J).receivesSignals:!1,emailDomains:Se(n(J).emailDomains),signupScopes:Se(n(J).signupScopes),clientSecret:X(n(J).clientSecret),privateKey:X(n(J).privateKey),delegates:n(ue)?!1:n(pe)||n(J).delegates,delegatedScopes:n(ue)?[]:Se(n(J).delegatedScopes),delegationParams:n(ue)?{}:we(n(J).delegationParams)};return n(ce)&&!n(le)?{...e,preset:n(J).preset,presetValues:n(J).asked,clientId:X(n(J).clientId),teamId:X(n(J).teamId),keyId:X(n(J).keyId),metadataUrl:X(n(J).metadataUrl),...n(ue)?De():{},...n(pe)?{resourceUrl:X(n(J).resourceUrl)}:{}}:{...e,protocol:n(J).protocol,authorizationUrl:n(ue)?null:X(n(J).authorizationUrl),tokenUrl:n(ue)?null:X(n(J).tokenUrl),userinfoUrl:n(ue)?null:X(n(J).userinfoUrl),emailsUrl:n(de)?X(n(J).emailsUrl):null,clientId:n(ue)?null:X(n(J).clientId),scopes:n(ue)?[]:Se(n(J).scopes),subjectClaim:n(J).subjectClaim.trim(),claims:Te(),issuer:n(fe)?X(n(J).issuer):null,jwksUri:n(fe)?X(n(J).jwksUri):null,tokenAuthMethod:n(J).tokenAuthMethod,responseMode:X(n(J).responseMode),teamId:n(me)?X(n(J).teamId):null,keyId:n(me)?X(n(J).keyId):null,metadataUrl:n(ue)?X(n(J).metadataUrl):null,nameIdFormat:n(ue)?X(n(J).nameIdFormat):null,resourceUrl:n(pe)?X(n(J).resourceUrl):null,...n(ue)?De():{idpEntityId:null,idpSsoUrl:null,idpCertificates:null}}}let De=()=>({idpEntityId:X(n(J).idpEntityId),idpSsoUrl:X(n(J).idpSsoUrl),idpCertificates:X(n(J).idpCertificates),nameIdFormat:X(n(J).nameIdFormat)});async function Oe(){C(te,!0);let e=await D.attempt(()=>r.api.query(`
|
|
434
|
+
mutation Discover($issuer: String!) {
|
|
435
|
+
discoverProvider(issuer: $issuer) { issuer authorizationUrl tokenUrl userinfoUrl jwksUri }
|
|
436
|
+
}
|
|
437
|
+
`,{issuer:n(J).issuer.trim()}),Z(`providers.notices.discovered`));if(C(te,!1),!e)return;let t=e.discoverProvider;n(J).issuer=t.issuer,n(J).authorizationUrl=t.authorizationUrl,n(J).tokenUrl=t.tokenUrl,n(J).jwksUri=t.jwksUri,n(J).userinfoUrl=t.userinfoUrl??n(J).userinfoUrl}async function ke(){C(te,!0);let e=await D.attempt(()=>r.api.query(`
|
|
438
|
+
mutation Metadata($metadataUrl: String, $metadataXml: String) {
|
|
439
|
+
readSamlMetadata(metadataUrl: $metadataUrl, metadataXml: $metadataXml) {
|
|
440
|
+
idpEntityId idpSsoUrl idpCertificates
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
`,{metadataUrl:X(n(J).metadataUrl),metadataXml:X(n(J).metadataXml)}),Z(`providers.notices.metadata_read`));C(te,!1),e&&(Object.assign(n(J),e.readSamlMetadata),n(J).metadataXml=``)}async function Ae(){C(te,!0);let e=n(ce),t=await D.attempt(()=>r.api.query(e?x:S,Ee()),e?n(pe)?Z(`providers.notices.registered`,{name:n(J).name}):Z(`providers.notices.added`,{name:n(J).name}):Z(`providers.notices.saved`,{name:n(J).name}));C(te,!1),t&&(xe(),await ae())}async function je(e,t,n,i=null){(!i||confirm(i))&&await D.attempt(()=>r.api.query(`mutation Act($key: ID!) { ${e}(key: $key) { provider { key } } }`,{key:t.key}),n)&&await ae()}let Me=e=>je(`archiveProvider`,e,Z(`providers.notices.archived`,{name:e.name}),Z(`providers.confirm.archive`,{name:e.name})),Ne=e=>je(`restoreProvider`,e,Z(`providers.notices.restored`,{name:e.name})),Pe=e=>je(`registerProvider`,e,Z(`providers.notices.reregistered`,{name:e.name}),Z(`providers.confirm.register`,{name:e.name}));function Fe(e){navigator.clipboard?.writeText(e),D.clear()}let Ie=P(()=>!n(ue)&&!n(pe)&&!n(me)&&(!n(ce)||(n(K)?.needs??[`client_secret`]).includes(`client_secret`))),Le=P(()=>!n(J)?.key.trim()||!n(J).name.trim()?!1:n(ce)&&!n(le)?(n(K)?.asks??[]).every(e=>n(J).asked[e]?.trim()):n(ue)?n(J).idpEntityId.trim()&&n(J).idpSsoUrl.trim()&&n(J).idpCertificates.trim():n(pe)?!n(ce)||n(J).resourceUrl.trim():n(J).clientId.trim()&&n(J).authorizationUrl.trim()&&n(J).tokenUrl.trim());{let h=e=>{var n=dc(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`providers.add`)]),f(`click`,n,ve),t(e,n)},g=P(()=>Z(`providers.title`));wn(e,{get title(){return n(g)},actions:h,children:(e,h)=>{var g=$c(),_=d(g);vn(_,{get feedback(){return D.state}});var v=u(_,2),y=e=>{{let r=e=>{var n=fc(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`providers.cancel`)]),f(`click`,n,xe),t(e,n)},i=P(()=>Z(`providers.add`)),a=P(()=>Z(`providers.picker.help`));Q(e,{get title(){return n(i)},get help(){return n(a)},actions:r,children:(e,r)=>{var i=mc();Y(i,21,()=>n(N),e=>e.key,(e,r)=>{var i=pc(),a=s(i),o=G(a,!0),l=u(a,2),d=G(l,!0);U(i),c(()=>{H(o,n(r).name),H(d,n(r).protocol)}),f(`click`,i,()=>ye(n(r))),t(e,i)}),U(i),t(e,i)},$$slots:{actions:!0,default:!0}})}};i(v,e=>{n(W)&&e(y)});var b=u(v,2),x=e=>{{let r=P(()=>n(ce)?Z(`providers.form.add_title`,{name:n(K)?.custom?a[n(J).protocol]:n(K)?.name}):Z(`providers.form.edit_title`,{name:n(J).name})),o=P(()=>n(K)?.guide?null:a[n(J).protocol]);Q(e,{get title(){return n(r)},get lede(){return n(o)},children:(e,r)=>{var a=Nc(),o=d(a),h=e=>{var r=hc(),i=s(r),a=u(i),o=G(a,!0);j(),U(r),c((e,t)=>{H(i,`${e??``} `),F(a,`href`,n(K).guide),H(o,t)},[()=>Z(`providers.form.guide_lead`,{name:n(K).name}),()=>Z(`providers.form.guide_link`,{name:n(K).name})]),t(e,r)};i(o,e=>{n(K)?.guide&&n(ce)&&e(h)});var g=u(o,2),_=s(g),v=G(_,!0),y=u(_,2);Y(y,17,()=>n(ue)?[[Z(`providers.form.acs_url`),n(ge)],[Z(`providers.form.sp_entity_id`),n(_e)]]:[[Z(`providers.form.redirect_uri`),n(ge)]],([e,t])=>e,(e,r)=>{var i=P(()=>I(n(r),2));let a=()=>n(i)[0],o=()=>n(i)[1];var l=gc(),d=s(l),p=G(d,!0),m=u(d,2),h=G(m,!0);U(l),c(()=>{H(p,a()),H(h,o())}),f(`click`,m,()=>Fe(o())),t(e,l)}),U(g);var b=u(g,2),x=s(b);{let e=P(()=>Z(`providers.form.name`));$(x,{get label(){return n(e)},placeholder:`Acme`,get value(){return n(J).name},set value(e){n(J).name=e}})}var S=u(x,2);{let e=P(()=>Z(`providers.form.key`)),t=P(()=>!n(ce));$(S,{get label(){return n(e)},get disabled(){return n(t)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,placeholder:`acme`,get value(){return n(J).key},set value(e){n(J).key=e}})}U(b);var C=u(b,2),w=e=>{var r=_c();Y(r,20,()=>n(K).asks,e=>e,(e,t)=>{{let r=P(()=>m[t]?.[0]??t),i=P(()=>m[t]?.[1]??``);$(e,{get label(){return n(r)},get placeholder(){return n(i)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,get value(){return n(J).asked[t]},set value(e){n(J).asked[t]=e}})}}),U(r),t(e,r)};i(C,e=>{n(ce)&&!n(le)&&n(K).asks.length&&e(w)});var T=u(C,2),E=e=>{var r=yc(),i=s(r),a=G(i,!0),o=u(i,2),l=s(o),d=s(l);{let e=P(()=>Z(`providers.form.metadata_url`));$(d,{get label(){return n(e)},placeholder:`https://idp.acme.test/metadata`,autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,get value(){return n(J).metadataUrl},set value(e){n(J).metadataUrl=e}})}U(l);var m=u(l,2),h=G(m,!0);U(o);var g=u(o,2),_=s(g),v=G(_,!0),y=u(_,2);ne(y),U(g);var b=u(g,2),x=G(b,!0),S=u(b,2),C=s(S);{let e=P(()=>Z(`providers.form.entity_id`));$(C,{get label(){return n(e)},get value(){return n(J).idpEntityId},set value(e){n(J).idpEntityId=e}})}var w=u(C,2);{let e=P(()=>Z(`providers.form.sign_in_url`));$(w,{get label(){return n(e)},get value(){return n(J).idpSsoUrl},set value(e){n(J).idpSsoUrl=e}})}U(S);var T=u(S,2),E=s(T),D=G(E,!0),O=u(E,2);ne(O),U(T);var k=u(T,2),A=s(k),j=G(A,!0),M=u(A,2);Y(M,21,()=>p,([e,t])=>e,(e,r)=>{var i=P(()=>I(n(r),2));let a=()=>n(i)[0],o=()=>n(i)[1];var s=vc(),l=G(s,!0),u={};c(()=>{H(l,o()),u!==(u=a())&&(s.value=(s.__value=u)??``)}),t(e,s)}),U(M),L(M),U(k),U(r),c((e,t,n,r,i,o,s)=>{H(a,e),m.disabled=t,H(h,n),H(v,r),H(x,i),H(D,o),H(j,s)},[()=>Z(`providers.form.identity_provider`),()=>n(te)||!(n(J).metadataUrl.trim()||n(J).metadataXml.trim()),()=>Z(`providers.form.read`),()=>Z(`providers.form.paste_metadata`),()=>Z(`providers.form.metadata_hint`),()=>Z(`providers.form.certificates`),()=>Z(`providers.form.name_id_format`)]),f(`click`,m,ke),ee(y,()=>n(J).metadataXml,e=>n(J).metadataXml=e),ee(O,()=>n(J).idpCertificates,e=>n(J).idpCertificates=e),R(M,()=>n(J).nameIdFormat,e=>n(J).nameIdFormat=e),t(e,r)};i(T,e=>{n(ue)&&e(E)});var D=u(T,2),O=e=>{var r=xc(),a=s(r),o=e=>{{let t=P(()=>Z(`providers.form.mcp_url`));$(e,{get label(){return n(t)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,placeholder:`https://mcp.acme.test/mcp`,get value(){return n(J).resourceUrl},set value(e){n(J).resourceUrl=e}})}},l=e=>{var r=bc(),i=G(r,!0);c(()=>H(i,n(J).resourceUrl)),t(e,r)};i(a,e=>{n(ce)&&n(le)?e(o):e(l,-1)});var d=u(a,2),f=G(d,!0);U(r),c(e=>H(f,e),[()=>Z(`providers.form.mcp_hint`)]),t(e,r)};i(D,e=>{n(pe)&&e(O)});var k=u(D,2),A=e=>{var r=Sc(),i=s(r),a=s(i);{let e=P(()=>Z(`providers.form.issuer`));$(a,{get label(){return n(e)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,placeholder:`https://id.acme.test`,get value(){return n(J).issuer},set value(e){n(J).issuer=e}})}U(i);var o=u(i,2),l=G(o,!0);U(r),c((e,t)=>{o.disabled=e,H(l,t)},[()=>n(te)||!n(J).issuer.trim(),()=>Z(`providers.form.discover`)]),f(`click`,o,Oe),t(e,r)};i(k,e=>{n(le)&&n(fe)&&e(A)});var N=u(k,2),z=e=>{var r=Cc(),a=s(r);{let e=P(()=>Z(`providers.form.authorization_url`));$(a,{get label(){return n(e)},get value(){return n(J).authorizationUrl},set value(e){n(J).authorizationUrl=e}})}var o=u(a,2);{let e=P(()=>Z(`providers.form.token_url`));$(o,{get label(){return n(e)},get value(){return n(J).tokenUrl},set value(e){n(J).tokenUrl=e}})}var c=u(o,2);{let e=P(()=>Z(`providers.form.userinfo_url`)),t=P(()=>n(de)?``:Z(`providers.form.optional`));$(c,{get label(){return n(e)},get placeholder(){return n(t)},get value(){return n(J).userinfoUrl},set value(e){n(J).userinfoUrl=e}})}var l=u(c,2),d=e=>{{let t=P(()=>Z(`providers.form.emails_url`)),r=P(()=>Z(`providers.form.optional`));$(e,{get label(){return n(t)},get placeholder(){return n(r)},get value(){return n(J).emailsUrl},set value(e){n(J).emailsUrl=e}})}},f=e=>{{let t=P(()=>Z(`providers.form.jwks_uri`)),r=P(()=>Z(`providers.form.discovered_if_empty`));$(e,{get label(){return n(t)},get placeholder(){return n(r)},get value(){return n(J).jwksUri},set value(e){n(J).jwksUri=e}})}};i(l,e=>{n(de)?e(d):e(f,-1)}),U(r),t(e,r)};i(N,e=>{n(le)&&!n(ue)&&!n(pe)&&e(z)});var B=u(N,2),V=e=>{var r=Ec(),a=s(r),o=G(a,!0),l=u(a,2),f=s(l);{let e=P(()=>n(me)?Z(`providers.form.services_id`):Z(`providers.form.client_id`));$(f,{get label(){return n(e)},autocomplete:`off`,get value(){return n(J).clientId},set value(e){n(J).clientId=e}})}var p=u(f,2),m=e=>{{let t=P(()=>Z(`providers.form.client_secret`)),r=P(()=>n(ce)?``:Z(`providers.form.unchanged`));$(e,{get label(){return n(t)},type:`password`,autocomplete:`off`,get placeholder(){return n(r)},get value(){return n(J).clientSecret},set value(e){n(J).clientSecret=e}})}};i(p,e=>{n(Ie)&&e(m)}),U(l);var h=u(l,2),g=e=>{var r=wc(),i=d(r),a=s(i);{let e=P(()=>Z(`providers.form.team_id`));$(a,{get label(){return n(e)},autocomplete:`off`,get value(){return n(J).teamId},set value(e){n(J).teamId=e}})}var o=u(a,2);{let e=P(()=>Z(`providers.form.key_id`));$(o,{get label(){return n(e)},autocomplete:`off`,get value(){return n(J).keyId},set value(e){n(J).keyId=e}})}U(i);var l=u(i,2),f=s(l),p=G(f,!0),m=u(f,2);ne(m),U(l),c((e,t)=>{H(p,e),F(m,`placeholder`,t)},[()=>Z(`providers.form.private_key`),()=>n(ce)?`-----BEGIN PRIVATE KEY-----`:Z(`providers.form.unchanged`)]),ee(m,()=>n(J).privateKey,e=>n(J).privateKey=e),t(e,r)};i(h,e=>{n(me)&&e(g)});var _=u(h,2),v=e=>{var r=Tc(),i=s(r),a=s(i),o=G(a,!0),l=u(a,2),d=s(l),f=G(d,!0);d.value=d.__value=`client_secret_post`;var p=u(d),m=G(p,!0);p.value=p.__value=`client_secret_basic`;var h=u(p),g=G(h,!0);h.value=h.__value=`signed_secret`,U(l),L(l),U(i);var _=u(i,2);{let e=P(()=>Z(`providers.form.extra_scopes`)),t=P(()=>n(fe)?Z(`providers.form.oidc_scopes`):`read:user`);$(_,{get label(){return n(e)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,get placeholder(){return n(t)},get value(){return n(J).scopes},set value(e){n(J).scopes=e}})}U(r),c((e,t,n,r)=>{H(o,e),H(f,t),H(m,n),H(g,r)},[()=>Z(`providers.form.sends_secret`),()=>Z(`providers.form.secret_post`),()=>Z(`providers.form.secret_basic`),()=>Z(`providers.form.secret_signed`)]),R(l,()=>n(J).tokenAuthMethod,e=>n(J).tokenAuthMethod=e),t(e,r)};i(_,e=>{n(le)&&e(v)}),U(r),c(e=>H(o,e),[()=>Z(`providers.form.credentials`)]),t(e,r)};i(B,e=>{!n(ue)&&!n(pe)&&e(V)});var W=u(B,2),re=e=>{var r=Dc(),i=s(r),a=G(i,!0),o=u(i,2),d=s(o);{let e=P(()=>n(ue)?Z(`providers.form.subject_saml`):n(fe)?Z(`providers.form.subject_oidc`):Z(`providers.form.subject_path`));$(d,{get label(){return n(e)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,get value(){return n(J).subjectClaim},set value(e){n(J).subjectClaim=e}})}var f=u(d,2);Y(f,17,()=>l.filter(([e])=>!(n(ue)&&e===`email_verified`)),([e,t])=>e,(e,t)=>{var r=P(()=>I(n(t),2));let i=()=>n(r)[0],a=()=>n(r)[1];{let t=P(()=>n(ue)?Z(`providers.form.attribute_name`):i());$(e,{get label(){return a()},get placeholder(){return n(t)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,get value(){return n(J).claims[i()]},set value(e){n(J).claims[i()]=e}})}}),U(o),U(r),c(e=>{r.open=n(de)||n(ue),H(a,e)},[()=>Z(`providers.form.claims`)]),t(e,r)};i(W,e=>{n(le)&&!n(pe)&&e(re)});var ae=u(W,2),oe=e=>{var r=Ac(),a=s(r),o=G(a,!0),l=u(a,2),f=e=>{var r=Oc(),i=s(r);M(i);var a=u(i,2),o=s(a),l=u(o),d=G(l,!0);U(a),U(r),c((e,t)=>{H(o,`${e??``} `),H(d,t)},[()=>Z(`providers.form.delegates`,{name:n(J).name.trim()||Z(`providers.form.provider`)}),()=>Z(`providers.form.delegates_hint`,{name:n(J).name.trim()||Z(`providers.form.the_provider`)})]),q(i,()=>n(J).delegates,e=>n(J).delegates=e),t(e,r)};i(l,e=>{n(pe)||e(f)});var p=u(l,2),m=e=>{var r=kc(),i=d(r),a=s(i);{let e=P(()=>Z(`providers.form.delegated_scopes`)),t=P(()=>n(pe)?Z(`providers.form.server_grants`):`https://www.googleapis.com/auth/drive.readonly`);$(a,{get label(){return n(e)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,get placeholder(){return n(t)},get value(){return n(J).delegatedScopes},set value(e){n(J).delegatedScopes=e}})}var o=u(a,2);{let e=P(()=>Z(`providers.form.delegation_params`));$(o,{get label(){return n(e)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,placeholder:`access_type=offline prompt=consent`,get value(){return n(J).delegationParams},set value(e){n(J).delegationParams=e}})}U(i);var l=u(i,2),f=s(l),p=u(f),m=G(p),h=u(p);U(l),c((e,t,n)=>{H(f,`${e??``} `),H(m,`masks:delegate:${t??``}`),H(h,`.
|
|
444
|
+
${n??``}`)},[()=>Z(`providers.form.delegation_asks`),()=>n(J).key.trim()||`key`,()=>Z(`providers.form.delegation_reconnect`)]),t(e,r)};i(p,e=>{(n(J).delegates||n(pe))&&e(m)}),U(r),c(e=>H(o,e),[()=>Z(`providers.form.applications`)]),t(e,r)};i(ae,e=>{n(ue)||e(oe)});var se=u(ae,2),ve=e=>{var r=Mc(),a=s(r),o=G(a,!0),l=u(a,2),d=s(l);M(d);var p=u(d,2),m=s(p),h=u(m),g=G(h,!0);U(p),U(l);var _=u(l,2),v=e=>{var r=Oc(),i=s(r);M(i);var a=u(i,2),o=s(a),l=u(o),d=G(l,!0);U(a),U(r),c((e,t)=>{H(o,`${e??``} `),H(d,t)},[()=>Z(`providers.form.trusts_email`),()=>Z(`providers.form.trusts_email_hint`)]),q(i,()=>n(J).trustsEmail,e=>n(J).trustsEmail=e),t(e,r)};i(_,e=>{n(ue)||e(v)});var y=u(_,2),b=e=>{var r=jc(),i=s(r);M(i);var a=u(i,2),o=s(a),l=u(o),d=s(l),f=u(d),p=G(f),m=u(f);U(l),U(a),U(r),c((e,t,n)=>{H(o,`${e??``} `),H(d,`${t??``} `),H(p,`${he??``}/ssf/events`),H(m,`.
|
|
445
|
+
${n??``}`)},[()=>Z(`providers.form.signals`),()=>Z(`providers.form.signals_lead`),()=>Z(`providers.form.signals_rest`)]),q(i,()=>n(J).receivesSignals,e=>n(J).receivesSignals=e),t(e,r)};i(y,e=>{n(fe)&&e(b)});var x=u(y,2),S=s(x);{let e=P(()=>n(ue)?Z(`providers.form.saml_domains`):Z(`providers.form.domains`)),t=P(()=>Z(`providers.form.any_domain`));$(S,{get label(){return n(e)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,get placeholder(){return n(t)},get value(){return n(J).emailDomains},set value(e){n(J).emailDomains=e}})}var C=u(S,2),w=e=>{{let t=P(()=>Z(`providers.form.signup_scopes`));$(e,{get label(){return n(t)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,placeholder:`openid profile email offline_access identities`,get value(){return n(J).signupScopes},set value(e){n(J).signupScopes=e}})}};i(C,e=>{n(J).role===`delegate`&&e(w)}),U(x),U(r),c((e,t,r)=>{H(o,e),ie(d,n(J).role===`delegate`),H(m,`${t??``} `),H(g,r)},[()=>Z(`providers.form.signing_in`),()=>Z(`providers.form.owns`,{name:n(J).name.trim()||Z(`providers.form.this_provider`)}),()=>Z(`providers.form.owns_hint`,{name:n(J).name.trim()||Z(`providers.form.the_provider`)})]),f(`change`,d,e=>n(J).role=e.currentTarget.checked?`delegate`:`credential`),t(e,r)};i(se,e=>{n(pe)||e(ve)});var ye=u(se,2),be=s(ye),X=G(be,!0),Se=u(be,2),Ce=G(Se,!0);U(ye),c((e,t,r)=>{H(v,e),be.disabled=n(te)||!n(Le),H(X,t),H(Ce,r)},[()=>Z(`providers.form.give`,{name:n(J).name.trim()||Z(`providers.form.the_provider`)}),()=>n(te)?Z(`providers.form.saving`):n(ce)?Z(`providers.form.add`):Z(`providers.form.save`),()=>Z(`providers.cancel`)]),f(`click`,be,Ae),f(`click`,Se,xe),t(e,a)},$$slots:{default:!0}})}};i(b,e=>{n(J)&&e(x)});var S=u(b,2),C=e=>{it(e,{})},w=e=>{$e(e,{children:(e,n)=>{j();var r=o();c(e=>H(r,e),[()=>Z(`providers.empty`)]),t(e,r)},$$slots:{default:!0}})},T=e=>{var l=Qc(),p=d(l);Y(p,17,()=>n(k),e=>e.key,(e,l)=>{Q(e,{get title(){return n(l).name},get lede(){return n(l).key},actions:e=>{var r=Fc(),a=d(r),o=G(a,!0),s=u(a,2),p=e=>{var r=Pc(),i=G(r,!0);c(e=>H(i,e),[()=>Z(`providers.register`)]),f(`click`,r,()=>Pe(n(l))),t(e,r)};i(s,e=>{n(l).protocol===`mcp`&&e(p)});var m=u(s,2),h=G(m,!0);c((e,t)=>{H(o,e),H(h,t)},[()=>Z(`providers.edit`),()=>Z(`providers.archive`)]),f(`click`,a,()=>be(n(l))),f(`click`,m,()=>Me(n(l))),t(e,r)},children:(e,p)=>{var m=Yc(),h=d(m),g=s(h),_=G(g,!0),v=u(g,2),y=e=>{var n=Ic(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`providers.badges.never_signs_in`)]),t(e,n)},b=e=>{var n=Lc(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`providers.badges.owns_accounts`)]),t(e,n)},x=e=>{var n=Ic(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`providers.badges.existing_only`)]),t(e,n)};i(v,e=>{n(l).protocol===`mcp`?e(y):n(l).role===`delegate`?e(b,1):e(x,-1)});var S=u(v,2),C=e=>{var n=Ic(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`providers.badges.trusts_email`)]),t(e,n)};i(S,e=>{n(l).trustsEmail&&e(C)});var w=u(S,2),T=e=>{var n=Ic(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`providers.badges.signals`)]),t(e,n)};i(w,e=>{n(l).receivesSignals&&e(T)});var E=u(w,2),O=e=>{var n=Rc(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`providers.badges.delegates`)]),t(e,n)};i(E,e=>{n(l).delegates&&e(O)});var k=u(E,2);Y(k,16,()=>n(l).emailDomains,e=>e,(e,n)=>{var r=zc(),i=G(r);c(()=>H(i,`@${n??``}`)),t(e,r)}),U(h);var A=u(h,2),j=s(A),M=s(j),N=G(M,!0),I=u(M,2),L=s(I),R=G(L,!0);U(I),U(j);var z=u(j,2),B=e=>{var r=Bc(),a=d(r),f=s(a),p=G(f,!0),m=u(f,2),h=s(m),g=G(h,!0);U(m),U(a);var _=u(a,2),v=s(_),y=G(v,!0),b=u(v,2),x=G(b,!0);U(_);var S=u(_,2),C=s(S),w=G(C,!0),T=u(C,2),E=s(T),D=e=>{var r=o();c(e=>H(r,e),[()=>Z(`providers.facts.metadata_read`,{day:n(l).metadataFetchedAt?_t(n(l).metadataFetchedAt):Z(`providers.facts.never`)})]),t(e,r)},O=e=>{var n=o();c(e=>H(n,e),[()=>Z(`providers.facts.pasted`)]),t(e,n)};i(E,e=>{n(l).metadataUrl?e(D):e(O,-1)}),U(T),U(S),c((e,t,r)=>{H(p,e),F(h,`href`,n(l).spEntityId),H(g,n(l).spEntityId),H(y,t),H(x,n(l).idpEntityId),H(w,r)},[()=>Z(`providers.facts.sp_entity_id`),()=>Z(`providers.facts.identity_provider`),()=>Z(`providers.facts.metadata`)]),t(e,r)},V=e=>{var r=Uc(),a=d(r),f=s(a),p=G(f,!0),m=u(f,2),h=G(m,!0);U(a);var g=u(a,2),_=s(g),v=G(_,!0),y=u(_,2),b=s(y),x=e=>{var n=o();c(e=>H(n,e),[()=>Z(`providers.facts.held`)]),t(e,n)},S=e=>{var n=Vc(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`providers.facts.none_set`)]),t(e,n)};i(b,e=>{(n(l).tokenAuthMethod===`signed_secret`?n(l).privateKeyHeld:n(l).secretHeld)?e(x):e(S,-1)}),U(y),U(g);var C=u(g,2),w=e=>{var r=Hc(),i=s(r),a=G(i,!0),o=u(i,2),d=G(o,!0);U(r),c(e=>{H(a,e),H(d,n(l).issuer)},[()=>Z(`providers.facts.issuer`)]),t(e,r)};i(C,e=>{n(l).issuer&&e(w)});var T=u(C,2),E=s(T),D=G(E,!0),O=u(E,2),k=G(O,!0);U(T),c((e,t,r,i)=>{H(p,e),H(h,n(l).clientId),H(v,t),H(D,r),H(k,i)},[()=>Z(`providers.facts.client_id`),()=>n(l).tokenAuthMethod===`signed_secret`?Z(`providers.facts.signing_key`):Z(`providers.facts.secret`),()=>Z(`providers.facts.scopes`),()=>n(l).scopes.join(` `)||`—`]),t(e,r)};i(z,e=>{n(l).protocol===`saml`?e(B):n(l).protocol!==`mcp`&&e(V,1)});var ee=u(z,2),te=e=>{var r=Wc(),i=d(r),a=s(i),o=G(a,!0),f=u(a,2),p=G(f,!0);U(i);var m=u(i,2),h=s(m),g=G(h,!0),_=u(h,2),v=G(_,!0);U(m),c((e,t,r)=>{H(o,e),H(p,n(l).resourceUrl),H(g,t),H(v,r)},[()=>Z(`providers.facts.mcp_server`),()=>Z(`providers.facts.registered`),()=>n(l).registeredAt?_t(n(l).registeredAt):Z(`providers.facts.never`)]),t(e,r)};i(ee,e=>{n(l).protocol===`mcp`&&e(te)});var ne=u(ee,2),W=e=>{var r=Kc(),a=d(r),o=s(a),f=G(o,!0),p=u(o,2),m=G(p,!0);U(a);var h=u(a,2),g=s(h),_=G(g,!0),v=u(g,2),y=G(v,!0);U(h);var b=u(h,2),x=e=>{var r=Gc(),i=s(r),a=G(i,!0),o=u(i,2),d=G(o,!0);U(r),c((e,t)=>{H(a,e),H(d,t)},[()=>Z(`providers.facts.delegated_scopes`),()=>n(l).delegatedScopes.join(` `)]),t(e,r)};i(b,e=>{n(l).delegatedScopes.length&&e(x)}),c((e,t)=>{H(f,e),H(m,n(l).delegationScope),H(_,t),H(y,n(l).delegations)},[()=>Z(`providers.facts.delegation_scope`),()=>Z(`providers.facts.delegations`)]),t(e,r)};i(ne,e=>{n(l).delegates&&e(W)});var re=u(ne,2),ie=s(re),K=G(ie,!0),q=u(ie,2),J=s(q),se=u(J),ce=e=>{var r=qc(),i=G(r);c(e=>H(i,`· ${e??``}`),[()=>Z(`providers.facts.signed_in`,{count:n(l).signedIn})]),t(e,r)};i(se,e=>{n(l).signedIn&&e(ce)}),U(q),U(re),U(A);var le=u(A,2),ue=e=>{var i=Jc(),a=s(i),o=G(a,!0),d=u(a,2),f=s(d);{let e=P(()=>oe(n(l)));sr(f,{get api(){return r.api},get feedback(){return D},get rows(){return n(e)},onchange:ae,showActor:!0})}U(d),U(i),c(e=>H(o,e),[()=>Z(`providers.connected`,{count:oe(n(l)).length})]),t(e,i)},de=P(()=>oe(n(l)).length);i(le,e=>{n(de)&&e(ue)}),c((e,t)=>{H(_,a[n(l).protocol]),H(N,e),H(R,n(l).callbackUrl),H(K,t),H(J,`${n(l).connections??``} `)},[()=>n(l).protocol===`saml`?Z(`providers.facts.acs_url`):Z(`providers.facts.redirect_uri`),()=>Z(`providers.facts.connections`)]),f(`click`,L,()=>Fe(n(l).callbackUrl)),t(e,m)},$$slots:{actions:!0,default:!0}})});var m=u(p,2),h=e=>{{let r=P(()=>Z(`providers.archived`));Q(e,{get title(){return n(r)},children:(e,r)=>{var i=Zc();Y(i,21,()=>n(A),e=>e.key,(e,r)=>{var i=Xc(),a=s(i),o=s(a),l=s(o),d=G(l,!0),p=u(l,2),m=G(p,!0);U(o);var h=u(o,2),g=s(h),_=G(g,!0),v=u(g,2),y=G(v,!0);U(h),U(a),U(i),c((e,t)=>{H(d,n(r).name),H(m,n(r).key),H(_,e),H(y,t)},[()=>Z(`providers.archived_on`,{day:_t(n(r).archivedAt)}),()=>Z(`providers.restore`)]),f(`click`,v,()=>Ne(n(r))),t(e,i)}),U(i),t(e,i)},$$slots:{default:!0}})}};i(m,e=>{n(A).length&&e(h)}),t(e,l)};i(S,e=>{n(V)&&n(k).length===0&&n(A).length===0?e(C):n(k).length===0&&n(A).length===0&&!n(W)&&!n(J)?e(w,1):e(T,-1)}),t(e,g)},$$slots:{actions:!0,default:!0}})}B()}l([`click`,`change`]);var tl=p(`<option> </option>`),nl=p(`<label class="flex flex-col gap-1.5"><span class="field-label"> </span> <select class="select select-sm w-full"></select></label>`),rl=p(`<p class="hint"> </p>`),il=p(`<div class="flex flex-col gap-1 sm:col-span-2"><!> <!></div>`),al=p(`<div class="flex flex-col gap-1"><!> <!></div>`),ol=p(`<!> <div class="grid gap-3 sm:grid-cols-2"><!> <!></div> <div class="grid gap-3 sm:grid-cols-2"></div> <!> <div class="flex gap-2"><button type="button" class="btn btn-primary btn-sm"> </button> <button type="button" class="btn btn-ghost btn-sm"> </button></div>`,1),sl=p(`<button type="button" class="btn btn-sm"> </button>`),cl=p(`<span class="badge badge-success badge-sm"> </span>`),ll=p(`<button type="button" class="btn btn-ghost btn-sm"> </button>`),ul=p(`<div class="flex flex-col gap-3 sheet p-3"><div class="flex flex-wrap items-center justify-between gap-2"><div class="flex min-w-0 flex-col"><span class="font-medium"> <!></span> <span class="hint"> <span class="font-mono"> </span> </span></div> <div class="flex flex-wrap gap-2"><!> <button type="button" class="btn btn-sm"> </button> <button type="button" class="btn btn-ghost btn-sm"> </button></div></div> <!></div>`),dl=p(`<div class="flex flex-wrap items-center justify-between gap-2"><span class="text-sm"> <span class="hint"> </span></span> <button type="button" class="btn btn-ghost btn-sm"> </button></div>`),fl=p(`<!> <!> <!>`,1),pl=p(`<div class="console-page"><!> <!></div>`);function ml(e,r){O(r,!0);let a=`key name kind service label primary settings secretsHeld archivedAt createdAt`,o=`
|
|
446
|
+
query Senders {
|
|
447
|
+
active: senders { ${a} }
|
|
448
|
+
archived: senders(archived: true) { ${a} }
|
|
449
|
+
senderServices {
|
|
450
|
+
service kind label
|
|
451
|
+
fields { key label type secret required options default hint }
|
|
452
|
+
}
|
|
453
|
+
tenant { mails texts }
|
|
454
|
+
}
|
|
455
|
+
`,l=[{kind:`mail`,title:Z(`senders.kinds.mail.title`),lede:Z(`senders.kinds.mail.lede`),idle:Z(`senders.kinds.mail.idle`),to:`you@example.com`},{kind:`sms`,title:Z(`senders.kinds.sms.title`),lede:Z(`senders.kinds.sms.lede`),idle:Z(`senders.kinds.sms.idle`),to:`+15551234567`}],p=ct(),m=T(null),h=T(!0),g=T(!1),_=T(null),v=T(null),y=w({}),b=P(()=>n(m)?.senderServices??[]),x=e=>n(b).find(t=>t.service===e),S=(e,t)=>(e??[]).filter(e=>e.kind===t);async function D(){C(h,!0);let e=await p.attempt(()=>r.api.query(o));C(h,!1),e&&C(m,e,!0)}D();function k(e){return Object.fromEntries(e.fields.map(e=>[e.key,e.secret?``:e.default??(e.type!==`boolean`&&``)]))}function A(e){let t=n(b).find(t=>t.kind===e);C(_,``),C(v,{kind:e,service:t.service,key:``,name:``,primary:S(n(m).active,e).length===0,config:k(t)},!0),p.clear()}function j(e){let t=x(e);n(v).service=e,n(v).config=k(t),n(v).key||(n(v).key=e.replace(/_/g,`-`)),n(v).name||(n(v).name=t.label)}function M(e){let t=x(e.service);C(_,e.key,!0),C(v,{kind:e.kind,service:e.service,key:e.key,name:e.name,primary:e.primary,secretsHeld:e.secretsHeld,config:Object.fromEntries(t.fields.map(t=>[t.key,t.secret?``:e.settings[t.key]??t.default??``]))},!0),p.clear()}function N(){C(_,null),C(v,null),p.clear()}function F(){let e=x(n(v).service);return Object.fromEntries(e.fields.filter(e=>!(e.secret&&!n(v).config[e.key])).map(e=>[e.key,e.type===`integer`?Number(n(v).config[e.key])||null:n(v).config[e.key]]))}async function I(){C(g,!0);let e=n(_)===``,t=await p.attempt(()=>e?r.api.query(`mutation Create($key: ID!, $service: String!, $name: String!, $config: JSON, $primary: Boolean) {
|
|
456
|
+
createSender(key: $key, service: $service, name: $name, config: $config, primary: $primary) {
|
|
457
|
+
sender { key }
|
|
458
|
+
}
|
|
459
|
+
}`,{key:n(v).key.trim(),service:n(v).service,name:n(v).name.trim(),config:F(),primary:n(v).primary}):r.api.query(`mutation Update($key: ID!, $name: String, $config: JSON, $primary: Boolean) {
|
|
460
|
+
updateSender(key: $key, name: $name, config: $config, primary: $primary) {
|
|
461
|
+
sender { key }
|
|
462
|
+
}
|
|
463
|
+
}`,{key:n(v).key,name:n(v).name.trim(),config:F(),primary:n(v).primary}),Z(e?`senders.added`:`senders.saved`,{name:n(v).name}));C(g,!1),t&&(N(),await D())}async function z(e,t,n,i=null){(!i||confirm(i))&&await p.attempt(()=>r.api.query(`mutation Act($key: ID!) { ${e}(key: $key) { sender { key } } }`,{key:t.key}),n)&&await D()}async function ee(e){await p.attempt(()=>r.api.query(`mutation Primary($key: ID!) { updateSender(key: $key, primary: true) { sender { key } } }`,{key:e.key}),Z(`senders.primary_notice`,{name:e.name}))&&await D()}async function te(e){let t=(y[e.key]??``).trim();if(!t)return;C(g,!0);let n=await p.attempt(()=>r.api.query(`mutation Test($key: ID!, $to: String!) { testSender(key: $key, to: $to) { delivered failure } }`,{key:e.key,to:t}));C(g,!1),n&&(n.testSender.delivered?p.say(Z(`senders.tested`,{name:e.name,to:t})):p.blame(n.testSender.failure))}let ne=P(()=>{if(!n(v))return!1;let e=x(n(v).service);return n(v).key.trim()&&n(v).name.trim()&&e.fields.every(e=>!e.required||e.type===`boolean`||e.secret&&n(v).secretsHeld?.includes(e.key)||String(n(v).config[e.key]??``).trim())});var W=pl(),re=s(W);vn(re,{get feedback(){return p.state}});var ie=u(re,2),K=e=>{it(e,{})},q=e=>{var r=fl(),a=d(r),o=e=>{{let r=P(()=>n(_)===``?Z(`senders.form.add`):Z(`senders.form.edit`,{name:n(v).name}));Q(e,{get title(){return n(r)},children:(e,r)=>{var a=ol(),o=d(a),l=e=>{var r=nl(),i=s(r),a=G(i,!0),o=u(i,2);Y(o,21,()=>n(b).filter(e=>e.kind===n(v).kind),e=>e.service,(e,r)=>{var i=tl(),a=G(i,!0),o={};c(()=>{H(a,n(r).label),o!==(o=n(r).service)&&(i.value=(i.__value=o)??``)}),t(e,i)}),U(o);var l;L(o),U(r),c(e=>{H(a,e),l!==(l=n(v).service)&&(o.value=(o.__value=l)??``,E(o,l))},[()=>Z(`senders.form.service`)]),f(`change`,o,e=>j(e.currentTarget.value)),t(e,r)};i(o,e=>{n(_)===``&&e(l)});var p=u(o,2),m=s(p);{let e=P(()=>Z(`senders.form.key`)),t=P(()=>n(_)!==``);$(m,{get label(){return n(e)},get disabled(){return n(t)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,get value(){return n(v).key},set value(e){n(v).key=e}})}var h=u(m,2);{let e=P(()=>Z(`senders.form.name`));$(h,{get label(){return n(e)},get value(){return n(v).name},set value(e){n(v).name=e}})}U(p);var y=u(p,2);Y(y,21,()=>x(n(v).service).fields,e=>e.key,(e,r)=>{var a=V(),o=d(a),l=e=>{var a=il(),o=s(a);ta(o,{get label(){return n(r).label},get checked(){return n(v).config[n(r).key]},set checked(e){n(v).config[n(r).key]=e}});var l=u(o,2),d=e=>{var i=rl(),a=G(i,!0);c(()=>H(a,n(r).hint)),t(e,i)};i(l,e=>{n(r).hint&&e(d)}),U(a),t(e,a)},f=e=>{var i=nl(),a=s(i),o=G(a,!0),l=u(a,2);Y(l,20,()=>n(r).options,e=>e,(e,n)=>{var r=tl(),i=G(r,!0),a={};c(()=>{H(i,n),a!==(a=n)&&(r.value=(r.__value=a)??``)}),t(e,r)}),U(l),L(l),U(i),c(()=>H(o,n(r).label)),R(l,()=>n(v).config[n(r).key],e=>n(v).config[n(r).key]=e),t(e,i)},p=e=>{var a=al(),o=s(a);{let e=P(()=>n(r).required?n(r).label:Z(`senders.form.optional`,{label:n(r).label})),t=P(()=>n(r).secret?`password`:n(r).type===`integer`?`number`:`text`),i=P(()=>n(r).secret&&n(v).secretsHeld?.includes(n(r).key)?Z(`senders.form.unchanged`):``);$(o,{get label(){return n(e)},get type(){return n(t)},autocomplete:`off`,autocapitalize:`none`,spellcheck:`false`,get placeholder(){return n(i)},get value(){return n(v).config[n(r).key]},set value(e){n(v).config[n(r).key]=e}})}var l=u(o,2),d=e=>{var i=rl(),a=G(i,!0);c(()=>H(a,n(r).hint)),t(e,i)};i(l,e=>{n(r).hint&&e(d)}),U(a),t(e,a)};i(o,e=>{n(r).type===`boolean`?e(l):n(r).options?e(f,1):e(p,-1)}),t(e,a)}),U(y);var S=u(y,2);{let e=P(()=>Z(`senders.form.primary`));ta(S,{get label(){return n(e)},get checked(){return n(v).primary},set checked(e){n(v).primary=e}})}var C=u(S,2),w=s(C),T=G(w,!0),D=u(w,2),O=G(D,!0);U(C),c((e,t)=>{w.disabled=n(g)||!n(ne),H(T,e),H(O,t)},[()=>n(_)===``?Z(`senders.form.create`):Z(`senders.form.save`),()=>Z(`senders.form.cancel`)]),f(`click`,w,I),f(`click`,D,N),t(e,a)},$$slots:{default:!0}})}};i(a,e=>{n(v)&&e(o)});var p=u(a,2);Y(p,17,()=>l,e=>e.kind,(e,r)=>{let a=P(()=>S(n(m).active,n(r).kind));{let o=e=>{var i=sl(),a=G(i,!0);c(e=>H(a,e),[()=>Z(`senders.list.add`)]),f(`click`,i,()=>A(n(r).kind)),t(e,i)},l=P(()=>n(a).length?n(r).lede:n(r).idle);Q(e,{get title(){return n(r).title},get lede(){return n(l)},actions:o,children:(e,o)=>{var l=V(),p=d(l);Y(p,17,()=>n(a),e=>e.key,(e,a)=>{var o=ul(),l=s(o),d=s(l),p=s(d),m=s(p),h=u(m),g=e=>{var n=cl(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`senders.list.primary`)]),t(e,n)};i(h,e=>{n(a).primary&&e(g)}),U(p);var _=u(p,2),v=s(_),b=u(v),x=G(b,!0),S=u(b);U(_),U(d);var C=u(d,2),w=s(C),T=e=>{var r=ll(),i=G(r,!0);c(e=>H(i,e),[()=>Z(`senders.list.make_primary`)]),f(`click`,r,()=>ee(n(a))),t(e,r)};i(w,e=>{n(a).primary||e(T)});var E=u(w,2),D=G(E,!0),O=u(E,2),k=G(O,!0);U(C),U(l);var A=u(l,2);{let e=P(()=>Z(`senders.list.test_to`)),t=P(()=>Z(`senders.list.test`));$(A,{get label(){return n(e)},get placeholder(){return n(r).to},get save(){return n(t)},onsave:()=>te(n(a)),get value(){return y[n(a).key]},set value(e){y[n(a).key]=e}})}U(o),c((e,t,r)=>{H(m,`${n(a).name??``} `),H(v,`${n(a).label??``} · `),H(x,n(a).key),H(S,` · ${e??``}`),H(D,t),H(k,r)},[()=>Z(`senders.list.added`,{day:_t(n(a).createdAt)}),()=>Z(`senders.list.edit`),()=>Z(`senders.list.archive`)]),f(`click`,E,()=>M(n(a))),f(`click`,O,()=>z(`archiveSender`,n(a),Z(`senders.archived_notice`,{name:n(a).name}),Z(`senders.archive_confirm`,{name:n(a).name}))),t(e,o)}),t(e,l)},$$slots:{actions:!0,default:!0}})}});var h=u(p,2),C=e=>{{let r=P(()=>Z(`senders.archived.title`));Q(e,{get title(){return n(r)},children:(e,r)=>{var i=V(),a=d(i);Y(a,17,()=>n(m).archived,e=>e.key,(e,r)=>{var i=dl(),a=s(i),o=s(a),l=u(o),d=G(l);U(a);var p=u(a,2),m=G(p,!0);U(i),c(e=>{H(o,`${n(r).name??``} `),H(d,`${n(r).label??``} · ${n(r).kind??``}`),H(m,e)},[()=>Z(`senders.archived.restore`)]),f(`click`,p,()=>z(`restoreSender`,n(r),Z(`senders.restored`,{name:n(r).name}))),t(e,i)}),t(e,i)},$$slots:{default:!0}})}};i(h,e=>{n(m).archived.length&&e(C)}),t(e,r)};i(ie,e=>{n(h)&&!n(m)?e(K):n(m)&&e(q,1)}),U(W),t(e,W),B()}l([`change`,`click`]);var hl=p(`<button type="button" class="btn btn-sm btn-ghost"> </button>`),gl=p(`<details class="mail-template"><summary class="term"> </summary> <form class="flex flex-col gap-3 pt-3"><!> <!> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea textarea-sm w-full" rows="4" maxlength="2000"></textarea> <span class="hint"> <!></span></label> <div class="flex gap-2"><button type="submit" class="btn btn-sm btn-primary"> </button> <!></div></form></details>`);function _l(e,r){O(r,!0);let a=ct(),l=T(w(S(()=>r.template.subject)??``)),d=T(w(S(()=>r.template.message)??``)),p=T(!1),m=P(()=>r.template.kind===`signature`),h=P(()=>!!(r.template.subject||r.template.message)),g=P(()=>r.template.placeholders.map(e=>`{{${e}}}`).join(`, `));async function _(e=!1){C(p,!0);let t=await a.attempt(()=>r.api.query(`
|
|
464
|
+
mutation Word($kind: ID!, $subject: String, $message: String) {
|
|
465
|
+
updateMailTemplate(kind: $kind, subject: $subject, message: $message) { mailTemplate { kind } }
|
|
466
|
+
}
|
|
467
|
+
`,{kind:r.template.kind,subject:e||n(m)?``:n(l),message:e?``:n(d)}),Z(e?`mail_template.reset`:`mail_template.saved`,{title:r.title}));C(p,!1),t&&r.onsaved?.()}var y=gl(),b=s(y),x=G(b),E=u(b,2),D=s(E);vn(D,{get feedback(){return a.state}});var k=u(D,2),A=e=>{{let t=P(()=>Z(`mail_template.subject`)),r=P(()=>Z(`mail_template.subject_placeholder`));$(e,{get label(){return n(t)},maxlength:`150`,get placeholder(){return n(r)},get value(){return n(l)},set value(e){C(l,e,!0)}})}};i(k,e=>{n(m)||e(A)});var j=u(k,2),M=s(j),N=G(M,!0),I=u(M,2);ne(I);var L=u(I,2),R=s(L),z=u(R),V=e=>{var n=o();c(e=>H(n,e),[()=>Z(`mail_template.hint_more`)]),t(e,n)};i(z,e=>{n(m)||e(V)}),U(L),U(j);var te=u(j,2),W=s(te),re=G(W,!0),ie=u(W,2),K=e=>{var r=hl(),i=G(r,!0);c(e=>{r.disabled=n(p),H(i,e)},[()=>Z(`mail_template.use_default`)]),f(`click`,r,()=>_(!0)),t(e,r)};i(ie,e=>{n(h)&&e(K)}),U(te),U(E),U(y),c((e,t,r,i,a,o)=>{y.open=n(h)||void 0,H(x,`${e??``}${t??``}`),H(N,r),F(I,`placeholder`,i),H(R,`${a??``} `),W.disabled=n(p),H(re,o)},[()=>Z(n(m)?`mail_template.signature`:`mail_template.template`),()=>n(h)?Z(`mail_template.customized`):``,()=>Z(n(m)?`mail_template.closing`:`mail_template.opening`),()=>Z(n(m)?`mail_template.closing_placeholder`:`mail_template.opening_placeholder`),()=>Z(`mail_template.hint`,{names:n(g)}),()=>Z(`mail_template.save`)]),v(`submit`,E,e=>{e.preventDefault(),_()}),ee(I,()=>n(d),e=>C(d,e)),t(e,y),B()}l([`click`]);var vl=p(`<option> </option>`),yl=p(`<optgroup></optgroup>`),bl=p(`<select class="select select-sm w-full"><option> </option><!></select>`),xl=p(`<button type="button" class="mail-item"> </button>`),Sl=p(`<div class="mail-group"><div class="flex items-center gap-2"><span class="term"> </span> <!></div> <!> <!></div>`),Cl=p(`<iframe class="mail-frame" sandbox="allow-same-origin"></iframe>`),wl=p(`<pre class="mail-text"> </pre>`),Tl=p(`<div class="mail"><div class="mail-pick"><select class="select select-sm w-full"></select> <!></div> <nav class="mail-list"></nav> <article class="mail-view"><header class="mail-head"><div class="flex min-w-0 flex-col gap-0.5"><h2 class="mail-subject"> </h2> <p class="hint"> </p></div> <div class="range" role="group"><button type="button"> </button> <button type="button"> </button></div></header> <div class="mail-words"><!> <!></div> <!></article></div>`),El=p(`<div class="console-page"><!></div>`);function Dl(e,r){O(r,!0);let o=[`sign_in`,`manage`,`account`,`system`],l=e=>e===`invitation_organization`?`invitation`:e,p=T(``),m=T(0),h=T(null),g=T(`html`);function y(e){let t=e.currentTarget;t.style.height=`${t.contentDocument.documentElement.scrollHeight}px`}var b=El(),x=s(b);a(x,()=>`${n(p)}:${n(m)}`,e=>{Ls(e,{load:()=>r.api.query(`
|
|
468
|
+
query MailPreviews($client: ID) {
|
|
469
|
+
mailPreviews(client: $client) { key name journey heading subject from to html text }
|
|
470
|
+
clients { clientId name approvedAt }
|
|
471
|
+
mailTemplates { kind subject message placeholders }
|
|
472
|
+
}
|
|
473
|
+
`,{client:n(p)||null}),children:(e,b=N)=>{let x=P(()=>b().mailPreviews),S=P(()=>n(x).find(e=>e.key===n(h))??n(x)[0]),w=P(()=>Object.fromEntries(b().mailTemplates.map(e=>[e.kind,e]))),T=P(()=>n(w)[l(n(S).key)]);var D=Tl(),O=s(D),k=s(O);Y(k,20,()=>o,e=>e,(e,r)=>{let a=P(()=>n(x).filter(e=>e.journey===r));var o=V(),s=d(o),l=e=>{var i=yl();Y(i,21,()=>n(a),e=>e.key,(e,r)=>{var i=vl(),a=G(i,!0),o={};c(()=>{H(a,n(r).name),o!==(o=n(r).key)&&(i.value=(i.__value=o)??``)}),t(e,i)}),U(i),c(e=>F(i,`label`,e),[()=>Z(`emails.groups.${r}.title`)]),t(e,i)};i(s,e=>{n(a).length&&e(l)}),t(e,o)}),U(k);var A;L(k);var j=u(k,2),M=e=>{var r=bl(),i=s(r),a=G(i,!0);i.value=i.__value=``;var o=u(i);Y(o,17,()=>b().clients,e=>e.clientId,(e,r)=>{var i=vl(),a=G(i,!0),o={};c(e=>{H(a,e),o!==(o=n(r).clientId)&&(i.value=(i.__value=o)??``)},[()=>n(r).approvedAt?n(r).name:Z(`emails.not_approved`,{name:n(r).name})]),t(e,i)}),U(r);var l;L(r),c((e,t)=>{F(r,`aria-label`,e),H(a,t),l!==(l=n(p))&&(r.value=(r.__value=l)??``,E(r,l))},[()=>Z(`emails.app`),()=>Z(`emails.no_app`)]),f(`change`,r,e=>C(p,e.currentTarget.value,!0)),t(e,r)};i(j,e=>{n(S).journey===`sign_in`&&e(M)}),U(O);var I=u(O,2);Y(I,20,()=>o,e=>e,(e,r)=>{let a=P(()=>n(x).filter(e=>e.journey===r));var o=V(),l=d(o),m=e=>{var o=Sl(),l=s(o),d=s(l),m=G(d,!0),g=u(d,2);{let e=P(()=>Z(`emails.groups.${r}.help`)),t=P(()=>Z(`emails.groups.${r}.about`));St(g,{get text(){return n(e)},get label(){return n(t)}})}U(l);var _=u(l,2),v=e=>{var r=bl(),i=s(r),a=G(i,!0);i.value=i.__value=``;var o=u(i);Y(o,17,()=>b().clients,e=>e.clientId,(e,r)=>{var i=vl(),a=G(i,!0),o={};c(e=>{H(a,e),o!==(o=n(r).clientId)&&(i.value=(i.__value=o)??``)},[()=>n(r).approvedAt?n(r).name:Z(`emails.not_approved`,{name:n(r).name})]),t(e,i)}),U(r);var l;L(r),c((e,t)=>{F(r,`aria-label`,e),H(a,t),l!==(l=n(p))&&(r.value=(r.__value=l)??``,E(r,l))},[()=>Z(`emails.app`),()=>Z(`emails.no_app`)]),f(`change`,r,e=>C(p,e.currentTarget.value,!0)),t(e,r)};i(_,e=>{r===`sign_in`&&e(v)});var y=u(_,2);Y(y,17,()=>n(a),e=>e.key,(e,r)=>{var i=xl(),a=G(i,!0);c(()=>{F(i,`aria-current`,n(r).key===n(S).key?`true`:void 0),H(a,n(r).name)}),f(`click`,i,()=>C(h,n(r).key,!0)),t(e,i)}),U(o),c(e=>H(m,e),[()=>Z(`emails.groups.${r}.title`)]),t(e,o)};i(l,e=>{n(a).length&&e(m)}),t(e,o)}),U(I);var R=u(I,2),z=s(R),B=s(z),ee=s(B),te=G(ee,!0),ne=u(ee,2),W=G(ne,!0);U(B);var re=u(B,2),ie=s(re),K=G(ie,!0),q=u(ie,2),J=G(q,!0);U(re),U(z);var ae=u(z,2),oe=s(ae),se=e=>{var i=V(),o=d(i);a(o,()=>n(T).kind,e=>{_l(e,{get api(){return r.api},get template(){return n(T)},get title(){return n(S).name},onsaved:()=>_(m)})}),t(e,i)};i(oe,e=>{n(T)&&e(se)});var ce=u(oe,2);{let e=P(()=>Z(`emails.signature`));_l(ce,{get api(){return r.api},get template(){return n(w).signature},get title(){return n(e)},onsaved:()=>_(m)})}U(ae);var le=u(ae,2),de=e=>{var r=Cl();c(()=>{F(r,`title`,n(S).subject),F(r,`srcdoc`,n(S).html)}),v(`load`,r,y),ue(r),t(e,r)},fe=e=>{var r=wl(),i=G(r,!0);c(()=>H(i,n(S).text??``)),t(e,r)};i(le,e=>{n(g)===`html`&&n(S).html?e(de):e(fe,-1)}),U(R),U(D),c((e,t,r,i,a,o)=>{F(k,`aria-label`,e),A!==(A=n(S).key)&&(k.value=(k.__value=A)??``,E(k,A)),F(I,`aria-label`,t),H(te,n(S).subject),H(W,r),F(re,`aria-label`,i),F(ie,`aria-pressed`,n(g)===`html`),H(K,a),F(q,`aria-pressed`,n(g)===`text`),H(J,o)},[()=>Z(`emails.list`),()=>Z(`emails.list`),()=>Z(`emails.headed`,{heading:n(S).heading,from:n(S).from||Z(`emails.no_sender`),to:n(S).to}),()=>Z(`emails.part`),()=>Z(`emails.html`),()=>Z(`emails.text`)]),f(`change`,k,e=>C(h,e.currentTarget.value,!0)),f(`click`,ie,()=>C(g,`html`)),f(`click`,q,()=>C(g,`text`)),t(e,D)},$$slots:{default:!0}})}),U(b),t(e,b),B()}l([`change`,`click`]);var Ol=p(`<nav class="settings-tabs"><!> <!></nav> <!>`,1);function kl(e,r){O(r,!0);let a=z(r,`part`,3,null),l=P(()=>a()===`templates`);{let a=P(()=>Z(`messages.title`)),f=P(()=>Z(n(l)?`messages.templates.lede`:`messages.sending.lede`));wn(e,{get title(){return n(a)},get lede(){return n(f)},children:(e,a)=>{var f=Ol(),p=d(f),m=s(p);{let e=P(()=>n(l)?``:`settings-tab-on`);nt(m,{to:`/messages`,get class(){return`settings-tab ${n(e)??``}`},children:(e,n)=>{j();var r=o();c(e=>H(r,e),[()=>Z(`messages.sending.title`)]),t(e,r)},$$slots:{default:!0}})}var h=u(m,2);{let e=P(()=>n(l)?`settings-tab-on`:``);nt(h,{to:`/messages/templates`,get class(){return`settings-tab ${n(e)??``}`},children:(e,n)=>{j();var r=o();c(e=>H(r,e),[()=>Z(`messages.templates.title`)]),t(e,r)},$$slots:{default:!0}})}U(p);var g=u(p,2),_=e=>{Dl(e,{get api(){return r.api}})},v=e=>{ml(e,{get api(){return r.api}})};i(g,e=>{n(l)?e(_):e(v,-1)}),c(e=>F(p,`aria-label`,e),[()=>Z(`messages.parts`)]),t(e,f)},$$slots:{default:!0}})}B()}var Al=p(`<input class="input input-sm w-full font-mono" readonly=""/> <div><button type="button" class="btn btn-ghost btn-sm"> </button></div>`,1),jl=p(`<div class="grid gap-3 sm:grid-cols-2"><!> <!></div> <!> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea w-full font-mono" rows="4" placeholder="session.started
|
|
474
|
+
actor.deleted"></textarea> <p class="hint"> </p></label> <!> <div class="flex gap-2"><button type="button" class="btn btn-primary btn-sm"> </button> <button type="button" class="btn btn-ghost btn-sm"> </button></div>`,1),Ml=p(`<button type="button" class="btn btn-sm"> </button>`),Nl=p(`<span class="text-sm text-error"> </span>`),Pl=p(`<span class="hint"> </span>`),Fl=p(`<div class="flex flex-col gap-3 sheet p-3"><div class="flex flex-wrap items-center justify-between gap-2"><div class="flex min-w-0 flex-col"><span class="font-medium"> </span> <span class="hint break-all"><span class="font-mono"> </span> </span> <span class="hint"> </span> <!></div> <div class="flex flex-wrap gap-2"><button type="button" class="btn btn-sm"> </button> <button type="button" class="btn btn-sm"> </button> <button type="button" class="btn btn-ghost btn-sm"> </button> <button type="button" class="btn btn-ghost btn-sm"> </button></div></div></div>`),Il=p(`<div class="flex flex-wrap items-center justify-between gap-2"><span class="text-sm"> <span class="hint"> </span></span> <button type="button" class="btn btn-ghost btn-sm"> </button></div>`),Ll=p(`<!> <!> <!> <!>`,1),Rl=p(`<!> <!> <!>`,1);function zl(e,r){O(r,!0);let a=`key name url actions lastDeliveredAt lastFailure archivedAt createdAt organization { key name }`,o=`
|
|
475
|
+
query Streams {
|
|
476
|
+
active: eventStreams { ${a} }
|
|
477
|
+
archived: eventStreams(archived: true) { ${a} }
|
|
478
|
+
organizations { key name }
|
|
479
|
+
}
|
|
480
|
+
`,l=ct(),p=T(null),m=T(!0),h=T(!1),g=T(null),_=T(null),y=T(null);async function b(){C(m,!0);let e=await l.attempt(()=>r.api.query(o));C(m,!1),e&&C(p,e,!0)}b();let x=e=>e.split(/[\s,]+/).map(e=>e.trim()).filter(Boolean);function S(){C(g,``),C(_,{key:``,name:``,url:``,actions:``,organization:``},!0),C(y,null),l.clear()}function w(e){C(g,e.key,!0),C(_,{key:e.key,name:e.name,url:e.url,actions:e.actions.join(`
|
|
481
|
+
`),organization:e.organization?.key??``},!0),C(y,null),l.clear()}function E(){C(g,null),C(_,null),l.clear()}async function D(){C(h,!0);let e=n(g)===``,t={key:n(_).key.trim(),name:n(_).name.trim(),url:n(_).url.trim(),actions:x(n(_).actions),organization:n(_).organization},i=await l.attempt(()=>e?r.api.query(`mutation Create($key: ID!, $name: String!, $url: String!, $actions: [String!], $organization: ID) {
|
|
482
|
+
createEventStream(key: $key, name: $name, url: $url, actions: $actions, organization: $organization) { secret }
|
|
483
|
+
}`,t):r.api.query(`mutation Update($key: ID!, $name: String, $url: String, $actions: [String!], $organization: ID) {
|
|
484
|
+
updateEventStream(key: $key, name: $name, url: $url, actions: $actions, organization: $organization) {
|
|
485
|
+
eventStream { key }
|
|
486
|
+
}
|
|
487
|
+
}`,t),Z(e?`streams.added`:`streams.saved`,{name:n(_).name}));C(h,!1),i&&(C(y,e?i.createEventStream.secret:null,!0),E(),await b())}async function k(e,t,n,i=null){(!i||confirm(i))&&await l.attempt(()=>r.api.query(`mutation Act($key: ID!) { ${e}(key: $key) { eventStream { key } } }`,{key:t.key}),n)&&await b()}async function A(e){if(!confirm(Z(`streams.rotate_confirm`,{name:e.name})))return;let t=await l.attempt(()=>r.api.query(`mutation Rotate($key: ID!) { rotateEventStreamSecret(key: $key) { secret } }`,{key:e.key}));t&&C(y,t.rotateEventStreamSecret.secret,!0)}async function j(e){C(h,!0);let t=await l.attempt(()=>r.api.query(`mutation Test($key: ID!) { testEventStream(key: $key) { delivered failure } }`,{key:e.key}));C(h,!1),t&&(t.testEventStream.delivered?l.say(Z(`streams.tested`,{name:e.name})):l.blame(t.testEventStream.failure),await b())}let N=P(()=>n(_)?.key.trim()&&n(_).name.trim()&&n(_).url.trim());{let r=P(()=>Z(`activity.title`));wn(e,{get title(){return n(r)},children:(e,r)=>{var a=Rl(),o=d(a);nc(o,{part:`streams`});var b=u(o,2);vn(b,{get feedback(){return l.state}});var x=u(b,2),T=e=>{it(e,{})},O=e=>{var r=Ll(),a=d(r),o=e=>{{let r=P(()=>Z(`streams.secret.title`)),i=P(()=>Z(`streams.secret.lede`));Q(e,{get title(){return n(r)},get lede(){return n(i)},children:(e,r)=>{var i=Al(),a=d(i);M(a);var o=u(a,2),l=s(o),p=G(l,!0);U(o),c(e=>{te(a,n(y)),H(p,e)},[()=>Z(`streams.secret.saved`)]),v(`focus`,a,e=>e.currentTarget.select()),f(`click`,l,()=>C(y,null)),t(e,i)},$$slots:{default:!0}})}};i(a,e=>{n(y)&&e(o)});var l=u(a,2),m=e=>{{let r=P(()=>n(g)===``?Z(`streams.form.add`):Z(`streams.form.edit`,{name:n(_).name}));Q(e,{get title(){return n(r)},children:(e,r)=>{var a=jl(),o=d(a),l=s(o);{let e=P(()=>Z(`streams.form.key`)),t=P(()=>n(g)!==``);$(l,{get label(){return n(e)},get disabled(){return n(t)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,get value(){return n(_).key},set value(e){n(_).key=e}})}var m=u(l,2);{let e=P(()=>Z(`streams.form.name`));$(m,{get label(){return n(e)},get value(){return n(_).name},set value(e){n(_).name=e}})}U(o);var v=u(o,2);{let e=P(()=>Z(`streams.form.address`));$(v,{get label(){return n(e)},type:`url`,placeholder:`https://siem.example.com/masks`,autocapitalize:`none`,spellcheck:`false`,get value(){return n(_).url},set value(e){n(_).url=e}})}var y=u(v,2),b=s(y),x=G(b,!0),S=u(b,2);ne(S);var C=u(S,2),w=G(C,!0);U(y);var T=u(y,2),O=e=>{{let t=P(()=>Z(`streams.form.events_from`)),r=P(()=>[[``,Z(`streams.form.every_organization`)],...n(p).organizations.map(e=>[e.key,Z(`streams.form.only`,{name:e.name})])]);$i(e,{get label(){return n(t)},get value(){return n(_).organization},get options(){return n(r)},onchange:e=>n(_).organization=e})}};i(T,e=>{n(p).organizations.length&&e(O)});var k=u(T,2),A=s(k),j=G(A,!0),M=u(A,2),F=G(M,!0);U(k),c((e,t,r,i)=>{H(x,e),H(w,t),A.disabled=n(h)||!n(N),H(j,r),H(F,i)},[()=>Z(`streams.form.actions`),()=>Z(`streams.form.actions_hint`),()=>n(g)===``?Z(`streams.form.create`):Z(`streams.form.save`),()=>Z(`streams.form.cancel`)]),ee(S,()=>n(_).actions,e=>n(_).actions=e),f(`click`,A,D),f(`click`,M,E),t(e,a)},$$slots:{default:!0}})}};i(l,e=>{n(_)&&e(m)});var b=u(l,2);{let e=e=>{var n=Ml(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`streams.list.add`)]),f(`click`,n,S),t(e,n)},r=P(()=>Z(`streams.list.title`)),a=P(()=>n(p).active.length?Z(`streams.list.lede`):Z(`streams.list.empty`));Q(b,{get title(){return n(r)},get lede(){return n(a)},actions:e,children:(e,r)=>{var a=V(),o=d(a);Y(o,17,()=>n(p).active,e=>e.key,(e,r)=>{var a=Fl(),o=s(a),l=s(o),d=s(l),p=G(d,!0),m=u(d,2),g=s(m),_=G(g,!0),v=u(g);U(m);var y=u(m,2),b=G(y),x=u(y,2),S=e=>{var i=Nl(),a=G(i,!0);c(()=>H(a,n(r).lastFailure)),t(e,i)},C=e=>{var i=Pl(),a=G(i,!0);c(e=>H(a,e),[()=>Z(`streams.list.last_delivered`,{day:_t(n(r).lastDeliveredAt)})]),t(e,i)};i(x,e=>{n(r).lastFailure?e(S):n(r).lastDeliveredAt&&e(C,1)}),U(l);var T=u(l,2),E=s(T),D=G(E,!0),O=u(E,2),M=G(O,!0),N=u(O,2),P=G(N,!0),F=u(N,2),I=G(F,!0);U(T),U(o),U(a),c((e,t,i,a,o,s,c)=>{H(p,n(r).name),H(_,n(r).key),H(v,` · ${n(r).url??``} · ${e??``}`),H(b,`${t??``}${i??``}`),E.disabled=n(h),H(D,a),H(M,o),H(P,s),H(I,c)},[()=>Z(`streams.list.added`,{day:_t(n(r).createdAt)}),()=>n(r).actions.length?n(r).actions.join(`, `):Z(`streams.list.every_action`),()=>n(r).organization?Z(`streams.list.only`,{name:n(r).organization.name}):``,()=>Z(`streams.list.test`),()=>Z(`streams.list.edit`),()=>Z(`streams.list.rotate`),()=>Z(`streams.list.archive`)]),f(`click`,E,()=>j(n(r))),f(`click`,O,()=>w(n(r))),f(`click`,N,()=>A(n(r))),f(`click`,F,()=>k(`archiveEventStream`,n(r),Z(`streams.archived_notice`,{name:n(r).name}),Z(`streams.archive_confirm`,{name:n(r).name}))),t(e,a)}),t(e,a)},$$slots:{actions:!0,default:!0}})}var x=u(b,2),T=e=>{{let r=P(()=>Z(`streams.archived.title`));Q(e,{get title(){return n(r)},children:(e,r)=>{var i=V(),a=d(i);Y(a,17,()=>n(p).archived,e=>e.key,(e,r)=>{var i=Il(),a=s(i),o=s(a),l=u(o),d=G(l,!0);U(a);var p=u(a,2),m=G(p,!0);U(i),c(e=>{H(o,`${n(r).name??``} `),H(d,n(r).url),H(m,e)},[()=>Z(`streams.archived.restore`)]),f(`click`,p,()=>k(`restoreEventStream`,n(r),Z(`streams.restored`,{name:n(r).name}))),t(e,i)}),t(e,i)},$$slots:{default:!0}})}};i(x,e=>{n(p).archived.length&&e(T)}),t(e,r)};i(x,e=>{n(m)&&!n(p)?e(T):n(p)&&e(O,1)}),t(e,a)},$$slots:{default:!0}})}B()}l([`click`]);var Bl=p(`<!> <!> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <textarea class="textarea w-full font-mono" rows="3" placeholder="203.0.113.0/24"></textarea> <span class="hint"> </span></label> <div><button type="button" class="btn btn-sm"> </button></div>`,1),Vl=p(`<div class="grid max-w-xl gap-3 sm:grid-cols-2"><!> <!></div>`),Hl=p(`<!> <!> <!> <!>`,1),Ul=p(`<!> <!>`,1);function Wl(e,r){O(r,!0);let a=[[0,Z(`settings.idle.never`)],[90,Z(`settings.idle.after_90_days`)],[180,Z(`settings.idle.after_180_days`)],[365,Z(`settings.idle.after_a_year`)],[730,Z(`settings.idle.after_two_years`)]],o=[[0,Z(`settings.idle.never`)],[180,Z(`settings.idle.after_180_days`)],[365,Z(`settings.idle.after_a_year`)],[730,Z(`settings.idle.after_two_years`)],[1095,Z(`settings.idle.after_three_years`)]],l=(e,t)=>!t||e.some(([e])=>e===t)?e:[...e,[t,Z(`settings.after_days`,{days:t})]],p=ct(),m=T(null),h=T(``),g=T(``);async function _(){let e=await p.attempt(()=>r.api.query(`
|
|
488
|
+
query SignInRules {
|
|
489
|
+
tenant { namedBy browsersOnly blockedAgents riskyNetworks suspendAfter deleteAfter signInPolicy { key } }
|
|
490
|
+
signInPolicies { key name }
|
|
491
|
+
}
|
|
492
|
+
`));e&&(C(m,e,!0),C(h,e.tenant.blockedAgents??``,!0),C(g,e.tenant.riskyNetworks??``,!0))}_();async function v(e,t){await p.attempt(()=>r.api.query(`mutation Update(
|
|
493
|
+
$namedBy: String, $browsersOnly: Boolean, $blockedAgents: String, $signInPolicy: ID,
|
|
494
|
+
$riskyNetworks: String, $suspendAfter: Int, $deleteAfter: Int
|
|
495
|
+
) {
|
|
496
|
+
updateTenant(
|
|
497
|
+
namedBy: $namedBy
|
|
498
|
+
browsersOnly: $browsersOnly
|
|
499
|
+
blockedAgents: $blockedAgents
|
|
500
|
+
riskyNetworks: $riskyNetworks
|
|
501
|
+
signInPolicy: $signInPolicy
|
|
502
|
+
suspendAfter: $suspendAfter
|
|
503
|
+
deleteAfter: $deleteAfter
|
|
504
|
+
) { tenant { name } }
|
|
505
|
+
}`,e),t)&&await _()}function y(e){return e&&!confirm(Z(`settings.idle.delete_confirm`))?_():v({deleteAfter:e},Z(`settings.idle.updated`))}var b=Ul(),x=d(b);vn(x,{get feedback(){return p.state}});var S=u(x,2),w=e=>{var r=Hl(),i=d(r);{let e=P(()=>Z(`settings.naming.title`)),t=P(()=>Z(`settings.naming.help`));Q(i,{row:!0,get title(){return n(e)},get help(){return n(t)},children:(e,t)=>{{let t=P(()=>[[`nickname`,Z(`settings.naming.nickname`)],[`email`,Z(`settings.naming.email`)],[`either`,Z(`settings.naming.either`)]]);$i(e,{get value(){return n(m).tenant.namedBy},get options(){return n(t)},onchange:e=>v({namedBy:e},Z(`settings.naming.updated`))})}},$$slots:{default:!0}})}var p=u(i,2);{let e=P(()=>Z(`settings.policy.title`)),t=P(()=>Z(`settings.policy.help`));Q(p,{row:!0,get title(){return n(e)},get help(){return n(t)},children:(e,t)=>{{let t=P(()=>n(m).tenant.signInPolicy?.key??``),r=P(()=>[[``,Z(`settings.policy.built_in`)],...n(m).signInPolicies.map(e=>[e.key,e.name])]);$i(e,{get value(){return n(t)},get options(){return n(r)},onchange:e=>v({signInPolicy:e},Z(`settings.policy.updated`))})}},$$slots:{default:!0}})}var _=u(p,2);{let e=P(()=>Z(`settings.access.title`)),r=P(()=>Z(`settings.access.help`));Q(_,{row:!0,get title(){return n(e)},get help(){return n(r)},children:(e,r)=>{var i=Bl(),a=d(i);{let e=P(()=>Z(`settings.access.browsers_only`));ta(a,{get label(){return n(e)},get checked(){return n(m).tenant.browsersOnly},onchange:e=>v({browsersOnly:e},Z(`settings.access.updated`))})}var o=u(a,2);{let e=P(()=>Z(`settings.access.refused_agents`));$(o,{get label(){return n(e)},placeholder:`curl, python-requests`,onsave:()=>v({blockedAgents:n(h)},Z(`settings.access.updated`)),get value(){return n(h)},set value(e){C(h,e,!0)}})}var l=u(o,2),p=s(l),_=G(p,!0),y=u(p,2);ne(y);var b=u(y,2),x=G(b,!0);U(l);var S=u(l,2),w=s(S),T=G(w,!0);U(S),c((e,t,n)=>{H(_,e),H(x,t),H(T,n)},[()=>Z(`settings.access.risky_networks`),()=>Z(`settings.access.risky_hint`),()=>Z(`settings.access.save_networks`)]),ee(y,()=>n(g),e=>C(g,e)),f(`click`,w,()=>v({riskyNetworks:n(g)},Z(`settings.access.networks_saved`))),t(e,i)},$$slots:{default:!0}})}var b=u(_,2);{let e=P(()=>Z(`settings.idle.title`)),r=P(()=>Z(`settings.idle.help`));Q(b,{row:!0,get title(){return n(e)},get help(){return n(r)},children:(e,r)=>{var i=Vl(),c=s(i);{let e=P(()=>Z(`settings.idle.suspend`)),t=P(()=>n(m).tenant.suspendAfter??0),r=P(()=>l(a,n(m).tenant.suspendAfter));$i(c,{get label(){return n(e)},get value(){return n(t)},get options(){return n(r)},onchange:e=>v({suspendAfter:Number(e)},Z(`settings.idle.updated`))})}var d=u(c,2);{let e=P(()=>Z(`settings.idle.delete`)),t=P(()=>n(m).tenant.deleteAfter??0),r=P(()=>l(o,n(m).tenant.deleteAfter).map(([e,t])=>[e,t,e>0&&e<=(n(m).tenant.suspendAfter??0)]));$i(d,{get label(){return n(e)},get value(){return n(t)},get options(){return n(r)},onchange:e=>y(Number(e))})}U(i),t(e,i)},$$slots:{default:!0}})}t(e,r)};i(S,e=>{n(m)&&e(w)}),t(e,b),B()}l([`click`]);var Gl=p(`<button type="button" class="btn btn-primary btn-sm"> </button>`),Kl=p(`<option> </option>`),ql=p(`<p class="text-xs text-warning"> <!></p>`),Jl=p(`<div class="grid gap-3 sm:grid-cols-2"><!> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <select class="select select-sm w-full"></select></label> <label class="flex flex-col gap-1.5"><span class="field-label"> </span> <select class="select select-sm w-full"></select></label></div> <p class="hint"> </p> <!> <div class="flex flex-col gap-1.5"><span class="field-label"> </span> <!></div>`,1),Yl=p(`<p class="text-xs opacity-85"> </p> <!>`,1),Xl=p(`<p class="text-xs text-warning"> </p>`),Zl=p(`<label class="flex flex-col gap-1.5"><span class="field-label"> </span> <select class="select select-sm w-full"></select></label>`),Ql=p(`<div class="flex flex-wrap items-center gap-x-5 gap-y-2"><label class="flex items-center gap-2 text-sm"><input class="input input-sm w-16" type="number" min="8"/> </label> <!> <!></div>`),$l=p(`<div class="flex flex-wrap gap-x-5 gap-y-2"><!> <!></div>`),eu=p(`<div class="grid gap-3 sm:grid-cols-[2fr_1fr]"><!> <!></div> <div class="policy-rows"><div class="policy-row"><span class="legend"> </span> <div class="policy-controls"><!> <!> <!> <!></div></div> <div class="policy-row"><span class="legend"> </span> <div class="policy-controls"><div class="grid gap-3 sm:grid-cols-3"></div> <div class="flex flex-wrap gap-x-5 gap-y-2"><!> <!></div> <!></div></div> <div class="policy-row"><span class="legend"> </span> <div class="policy-controls"><div class="flex flex-wrap gap-x-5 gap-y-2"></div> <!> <!></div></div> <div class="policy-row"><span class="legend"> </span> <div class="policy-controls"><div class="flex flex-wrap gap-x-5 gap-y-2"></div> <!> <!></div></div> <div class="policy-row"><span class="legend"> </span> <div class="policy-controls"><div class="flex flex-wrap items-center gap-x-5 gap-y-2"><label class="flex items-center gap-2 text-sm"> <select class="select select-sm w-auto"></select></label> <label class="flex items-center gap-2 text-sm"> <select class="select select-sm w-auto"></select></label></div> <!> <p class="hint"> </p></div></div> <div class="policy-row"><span class="legend"> </span> <div class="policy-controls"><div class="flex flex-wrap items-center gap-x-5 gap-y-2"><label class="flex items-center gap-2 text-sm"> <select class="select select-sm w-auto"></select> </label> <label class="flex items-center gap-2 text-sm"> <select class="select select-sm w-auto"></select> </label></div> <p class="hint"> </p></div></div></div> <div class="flex gap-2"><button type="button" class="btn btn-primary btn-sm"> </button> <button type="button" class="btn btn-ghost btn-sm"> </button></div>`,1),tu=p(`<p class="text-sm opacity-85"> </p>`),nu=p(`<span class="badge badge-success badge-sm"> </span>`),ru=p(` <!>`,1),iu=p(`<span class="hint"> <!></span>`),au=p(`<button type="button" class="btn btn-ghost btn-sm"> </button>`),ou=p(`<div class="flex flex-wrap items-start justify-between gap-2 border-b border-base-300 pb-3 last:border-0 last:pb-0"><div class="flex min-w-0 flex-col gap-1"><span class="font-medium"> <!></span> <span class="hint"> </span> <!></div> <div class="flex gap-2"><button type="button" class="btn btn-sm"> </button> <!></div></div>`),su=p(`<!> <!>`,1),cu=p(`<div class="flex items-center justify-between gap-2"><span class="text-sm"> </span> <button type="button" class="btn btn-ghost btn-sm"> </button></div>`),lu=p(`<!> <!> <!> <!>`,1);function uu(e,r){O(r,!0);let l=`
|
|
506
|
+
key name signup nickname email emailVerified phone phoneVerified
|
|
507
|
+
passwordMinimum refuseCommonPasswords passwordRequired firstFactors secondFactors secondFactorRequired appsRequireSecondFactor
|
|
508
|
+
sessionLifetime sessionIdleTimeout refuseBreachedPasswords riskStepUpAt riskRefuseAt proofOfWork
|
|
509
|
+
emailDomains providers confirmation hidden signupScopes default archivedAt
|
|
510
|
+
clients { clientId name }
|
|
511
|
+
`,p=`
|
|
512
|
+
query Policies {
|
|
513
|
+
active: signInPolicies { ${l} }
|
|
514
|
+
archived: signInPolicies(archived: true) { ${l} }
|
|
515
|
+
providers { key name }
|
|
516
|
+
tenant { namedBy texts mails }
|
|
517
|
+
scopesSupported
|
|
518
|
+
}
|
|
519
|
+
`,m=`
|
|
520
|
+
$key: ID!, $name: String, $signup: Boolean, $nickname: String, $email: String,
|
|
521
|
+
$emailVerified: Boolean, $phone: String, $phoneVerified: Boolean, $passwordMinimum: Int,
|
|
522
|
+
$refuseCommonPasswords: Boolean, $passwordRequired: Boolean, $firstFactors: [String!], $secondFactors: [String!],
|
|
523
|
+
$secondFactorRequired: Boolean, $appsRequireSecondFactor: Boolean,
|
|
524
|
+
$sessionLifetime: Int, $sessionIdleTimeout: Int,
|
|
525
|
+
$refuseBreachedPasswords: Boolean, $riskStepUpAt: Int, $riskRefuseAt: Int, $proofOfWork: Int, $emailDomains: [String!], $providers: [String!],
|
|
526
|
+
$everyProvider: Boolean, $confirmation: String, $hidden: Boolean, $signupScopes: [String!]
|
|
527
|
+
`,h=`
|
|
528
|
+
key: $key, name: $name, signup: $signup, nickname: $nickname, email: $email,
|
|
529
|
+
emailVerified: $emailVerified, phone: $phone, phoneVerified: $phoneVerified,
|
|
530
|
+
passwordMinimum: $passwordMinimum, refuseCommonPasswords: $refuseCommonPasswords, passwordRequired: $passwordRequired,
|
|
531
|
+
firstFactors: $firstFactors, secondFactors: $secondFactors,
|
|
532
|
+
secondFactorRequired: $secondFactorRequired, appsRequireSecondFactor: $appsRequireSecondFactor,
|
|
533
|
+
sessionLifetime: $sessionLifetime, sessionIdleTimeout: $sessionIdleTimeout,
|
|
534
|
+
refuseBreachedPasswords: $refuseBreachedPasswords, riskStepUpAt: $riskStepUpAt, riskRefuseAt: $riskRefuseAt, proofOfWork: $proofOfWork, emailDomains: $emailDomains,
|
|
535
|
+
providers: $providers, everyProvider: $everyProvider, confirmation: $confirmation,
|
|
536
|
+
hidden: $hidden, signupScopes: $signupScopes
|
|
537
|
+
`,g=3600,_=24*g,v=[[null,Z(`policy_rules.values.default_lifetime`)],...[g,8*g,12*g,_,7*_,30*_,90*_].map(e=>[e,Na(e)])],y=[[null,Z(`policies.never`)],...[900,1800,g,4*g,_].map(e=>[e,Na(e)])],b=[[null,Z(`policies.never`)],...[30,50,70,90].map(e=>[e,Z(`policies.score`,{score:e})])],x=[[0,Z(`policies.form.signup.work_off`)],[14,Z(`policies.form.signup.work_light`)],[17,Z(`policies.form.signup.work_standard`)],[20,Z(`policies.form.signup.work_strong`)]],S=e=>x.some(([t])=>t===e)?x:[...x,[e,Z(`policies.form.signup.work_bits`,{bits:e})]],E=(e,t)=>t===null||e.some(([e])=>e===t)?e:[...e,[t,Z(`policy_rules.units.second`,{count:t})]],D=(e,t)=>t.map(t=>[t,Z(`policies.${e}.${t}`)]),k=D(`presence`,[`off`,`optional`,`required`]),A=D(`first`,[`password`,`passkey`,`provider`,`email_code`]),N=D(`second`,[`otp`,`passkey`,`backup_codes`,`email`,`sms`,`trusted_device`]),F=D(`confirmations`,[`none`,`code`,`link`,`approval`]),z=[`nickname`,`email`,`phone`].map(e=>[e,Z(`policies.form.account.${e}`)]),te={key:``,name:``,signup:!1,nickname:`optional`,email:`required`,emailVerified:!1,phone:`off`,phoneVerified:!1,passwordMinimum:8,refuseCommonPasswords:!0,passwordRequired:!1,firstFactors:[`password`,`passkey`,`provider`],secondFactors:[`otp`,`passkey`,`backup_codes`],secondFactorRequired:!1,appsRequireSecondFactor:!1,sessionLifetime:null,sessionIdleTimeout:null,refuseBreachedPasswords:!1,riskStepUpAt:null,riskRefuseAt:null,proofOfWork:17,emailDomains:``,providers:null,confirmation:`none`,hidden:!1,signupScopes:[]},ne=ct(),W=T(null),re=T(!0),ie=T(!1),K=T(null),q=T(w({...te}));async function ae(){C(re,!0);let e=await ne.attempt(()=>r.api.query(p));C(re,!1),e&&C(W,e,!0)}ae();function oe(){C(K,``),C(le,!1),C(q,structuredClone(te),!0),ne.clear()}function se(e){C(K,e.key,!0),C(q,{...structuredClone(J(e)),emailDomains:e.emailDomains.join(` `)},!0),ne.clear()}let ce=e=>e.toLowerCase().normalize(`NFKD`).replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``),le=T(!1);function ue(e){n(q).name=e,n(K)===``&&!n(le)&&(n(q).key=ce(e))}function de(){C(K,null),ne.clear()}let fe=(e,t,n)=>n?[...new Set([...e,t])]:e.filter(e=>e!==t);function pe(){return{key:n(q).key.trim(),name:n(q).name.trim(),signup:n(q).signup,nickname:n(q).nickname,email:n(q).email,emailVerified:n(q).emailVerified,phone:n(q).phone,phoneVerified:n(q).phoneVerified,passwordMinimum:Number(n(q).passwordMinimum)||8,refuseCommonPasswords:n(q).refuseCommonPasswords,passwordRequired:n(q).passwordRequired&&n(q).firstFactors.includes(`password`),firstFactors:n(q).firstFactors,secondFactors:n(q).secondFactors,secondFactorRequired:n(q).secondFactorRequired,appsRequireSecondFactor:n(q).appsRequireSecondFactor,sessionLifetime:n(q).sessionLifetime,sessionIdleTimeout:n(q).sessionIdleTimeout,refuseBreachedPasswords:n(q).refuseBreachedPasswords,riskStepUpAt:n(q).riskStepUpAt,riskRefuseAt:n(q).riskRefuseAt,proofOfWork:Number(n(q).proofOfWork)||0,emailDomains:n(q).emailDomains.split(/[\s,]+/).filter(Boolean),providers:n(q).providers??[],everyProvider:n(q).providers===null,confirmation:n(q).confirmation,hidden:n(q).hidden,signupScopes:n(q).signupScopes}}async function me(){C(ie,!0);let e=n(K)===``,t=await ne.attempt(()=>r.api.query(e?`mutation Create(${m}) { createSignInPolicy(${h}) { signInPolicy { key } } }`:`mutation Update(${m}) { updateSignInPolicy(${h}) { signInPolicy { key } } }`,pe()),Z(e?`policies.added`:`policies.saved`,{name:n(q).name}));C(ie,!1),t&&(C(K,null),await ae())}async function he(e,t,n,i=null){(!i||confirm(i))&&await ne.attempt(()=>r.api.query(`mutation Act($key: ID!) { ${e}(key: $key) { signInPolicy { key } } }`,{key:t.key}),n)&&await ae()}let ge=e=>[e.signup?Z(`policies.summary.signup_open`):Z(`policies.summary.invitation_only`),e.secondFactorRequired?Z(`policies.summary.second_factor_required`):null,e.appsRequireSecondFactor?Z(`policies.summary.apps_require_second_factor`):null,e.sessionLifetime?Z(`policies.summary.lifetime`,{duration:Na(e.sessionLifetime)}):null,e.sessionIdleTimeout?Z(`policies.summary.idle`,{duration:Na(e.sessionIdleTimeout)}):null,e.confirmation===`none`?null:Z(`policies.summary.confirmed_by`,{confirmation:e.confirmation}),e.phone===`required`?Z(`policies.summary.phone_required`):null,e.hidden?Z(`policies.summary.hidden`):null].filter(Boolean).join(` · `),_e=P(()=>n(W)?.providers??[]);{let l=e=>{var r=V(),a=d(r),o=e=>{var n=Gl(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`policies.add`)]),f(`click`,n,oe),t(e,n)};i(a,e=>{n(K)===null&&e(o)}),t(e,r)},p=P(()=>Z(`policies.title`));wn(e,{get title(){return n(p)},actions:l,children:(e,l)=>{var p=su(),m=d(p);vn(m,{get feedback(){return ne.state}});var h=u(m,2),g=e=>{it(e,{})},_=e=>{var l=lu(),p=d(l),m=e=>{{let r=P(()=>n(K)===``?Z(`policies.form.new`):n(q).name);Q(e,{get title(){return n(r)},children:(e,r)=>{var a=eu(),l=d(a),p=s(l);{let e=P(()=>Z(`policies.form.name`)),t=P(()=>Z(`policies.form.name_placeholder`));$(p,{get label(){return n(e)},get value(){return n(q).name},oninput:e=>ue(e.currentTarget.value),get placeholder(){return n(t)}})}var m=u(p,2);{let e=P(()=>Z(`policies.form.key`)),t=P(()=>n(K)!==``);$(m,{get label(){return n(e)},oninput:()=>C(le,!0),get disabled(){return n(t)},autocapitalize:`none`,autocorrect:`off`,spellcheck:`false`,class:`input input-sm w-full font-mono`,get value(){return n(q).key},set value(e){n(q).key=e}})}U(l);var h=u(l,2),g=s(h),_=s(g),x=G(_,!0),w=u(_,2),T=s(w);{let e=P(()=>Z(`policies.form.signup.open`));ta(T,{get label(){return n(e)},get checked(){return n(q).signup},set checked(e){n(q).signup=e}})}var D=u(T,2),O=e=>{var r=Jl(),a=d(r),l=s(a);{let e=P(()=>Z(`policies.form.signup.email_domains`)),t=P(()=>Z(`policies.form.signup.email_domains_placeholder`));$(l,{get label(){return n(e)},autocapitalize:`none`,spellcheck:`false`,get placeholder(){return n(t)},get value(){return n(q).emailDomains},set value(e){n(q).emailDomains=e}})}var f=u(l,2),p=s(f),m=G(p,!0),h=u(p,2);Y(h,21,()=>F,([e,t])=>e,(e,r)=>{var i=P(()=>I(n(r),2));let a=()=>n(i)[0],o=()=>n(i)[1];var s=Kl(),l=G(s,!0),u={};c(()=>{H(l,o()),u!==(u=a())&&(s.value=(s.__value=u)??``)}),t(e,s)}),U(h),L(h),U(f);var g=u(f,2),_=s(g),v=G(_,!0),y=u(_,2);Y(y,21,()=>S(n(q).proofOfWork),([e,t])=>e,(e,r)=>{var i=P(()=>I(n(r),2));let a=()=>n(i)[0],o=()=>n(i)[1];var s=Kl(),l=G(s,!0),u={};c(()=>{H(l,o()),u!==(u=a())&&(s.value=(s.__value=u)??``)}),t(e,s)}),U(y),L(y),U(g),U(a);var b=u(a,2),x=G(b,!0),C=u(b,2),w=e=>{var n=ql(),r=s(n);nt(u(r),{to:`/messages`,class:`link`,children:(e,n)=>{j();var r=o();c(e=>H(r,e),[()=>Z(`policies.form.add_one`)]),t(e,r)},$$slots:{default:!0}}),U(n),c(e=>H(r,`${e??``} `),[()=>Z(`policies.form.signup.no_mail`)]),t(e,n)};i(C,e=>{(n(q).confirmation===`code`||n(q).confirmation===`link`)&&!n(W).tenant.mails&&e(w)});var T=u(C,2),E=s(T),D=G(E,!0),O=u(E,2);{let e=P(()=>n(W).scopesSupported.filter(e=>!e.startsWith(`masks:`)));un(O,{get value(){return n(q).signupScopes},get available(){return n(e)},onchange:e=>n(q).signupScopes=e})}U(T),c((e,t,n,r)=>{H(m,e),H(v,t),H(x,n),H(D,r)},[()=>Z(`policies.form.signup.confirmation`),()=>Z(`policies.form.signup.work`),()=>Z(`policies.form.signup.work_hint`),()=>Z(`policies.form.signup.scopes`)]),R(h,()=>n(q).confirmation,e=>n(q).confirmation=e),R(y,()=>n(q).proofOfWork,e=>n(q).proofOfWork=e),t(e,r)};i(D,e=>{n(q).signup&&e(O)});var B=u(D,2);{let e=P(()=>Z(`policies.form.signup.hidden`));ta(B,{get label(){return n(e)},get checked(){return n(q).hidden},set checked(e){n(q).hidden=e}})}var te=u(B,2),ne=e=>{var r=Yl(),a=d(r),l=G(a,!0),f=u(a,2),p=e=>{var n=ql(),r=s(n);nt(u(r),{to:`/messages`,class:`link`,children:(e,n)=>{j();var r=o();c(e=>H(r,e),[()=>Z(`policies.form.add_one`)]),t(e,r)},$$slots:{default:!0}}),U(n),c(e=>H(r,`${e??``} `),[()=>Z(`policies.form.signup.hidden_no_mail`)]),t(e,n)};i(f,e=>{n(W).tenant.mails||e(p)}),c(e=>H(l,e),[()=>Z(`policies.form.signup.hidden_hint`)]),t(e,r)},re=e=>{var n=Xl(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`policies.form.signup.open_warning`)]),t(e,n)};i(te,e=>{n(q).hidden?e(ne):n(q).signup&&e(re,1)}),U(w),U(g);var J=u(g,2),ae=s(J),oe=G(ae,!0),se=u(ae,2),ce=s(se);Y(ce,21,()=>z,([e,t])=>e,(e,r)=>{var i=P(()=>I(n(r),2));let a=()=>n(i)[0],o=()=>n(i)[1];var l=Zl(),d=s(l),f=G(d,!0),p=u(d,2);Y(p,21,()=>k,([e,t])=>e,(e,r)=>{var i=P(()=>I(n(r),2));let a=()=>n(i)[0],o=()=>n(i)[1];var s=Kl(),l=G(s,!0),u={};c(()=>{H(l,o()),u!==(u=a())&&(s.value=(s.__value=u)??``)}),t(e,s)}),U(p),L(p),U(l),c(()=>H(f,o())),R(p,()=>n(q)[a()],e=>n(q)[a()]=e),t(e,l)}),U(ce);var pe=u(ce,2),he=s(pe);{let e=P(()=>Z(`policies.form.account.email_verified`));ta(he,{get label(){return n(e)},get checked(){return n(q).emailVerified},set checked(e){n(q).emailVerified=e}})}var ge=u(he,2);{let e=P(()=>Z(`policies.form.account.phone_verified`));ta(ge,{get label(){return n(e)},get checked(){return n(q).phoneVerified},set checked(e){n(q).phoneVerified=e}})}U(pe);var ve=u(pe,2),ye=e=>{var n=ql(),r=s(n);nt(u(r),{to:`/messages`,class:`link`,children:(e,n)=>{j();var r=o();c(e=>H(r,e),[()=>Z(`policies.form.add_one`)]),t(e,r)},$$slots:{default:!0}}),U(n),c(e=>H(r,`${e??``} `),[()=>Z(`policies.form.account.no_sms`)]),t(e,n)};i(ve,e=>{n(q).phone!==`off`&&n(q).phoneVerified&&!n(W).tenant.texts&&e(ye)}),U(se),U(J);var be=u(J,2),xe=s(be),X=G(xe,!0),Se=u(xe,2),Ce=s(Se);Y(Ce,21,()=>A,([e,t])=>e,(e,t)=>{var r=P(()=>I(n(t),2));let i=()=>n(r)[0],a=()=>n(r)[1];{let t=P(()=>n(q).firstFactors.includes(i()));ta(e,{get label(){return a()},get checked(){return n(t)},onchange:e=>n(q).firstFactors=fe(n(q).firstFactors,i(),e)})}}),U(Ce);var we=u(Ce,2),Te=e=>{var r=Ql(),a=s(r),o=s(a);M(o);var l=u(o);U(a);var d=u(a,2);{let e=P(()=>Z(`policies.form.sign_in.refuse_common`));ta(d,{get label(){return n(e)},get checked(){return n(q).refuseCommonPasswords},set checked(e){n(q).refuseCommonPasswords=e}})}var f=u(d,2),p=e=>{{let t=P(()=>Z(`policies.form.sign_in.password_required`));ta(e,{get label(){return n(t)},get checked(){return n(q).passwordRequired},set checked(e){n(q).passwordRequired=e}})}},m=P(()=>n(q).firstFactors.includes(`passkey`));i(f,e=>{n(m)&&e(p)}),U(r),c(e=>H(l,` ${e??``}`),[()=>Z(`policies.form.sign_in.characters`)]),ee(o,()=>n(q).passwordMinimum,e=>n(q).passwordMinimum=e),t(e,r)},Ee=P(()=>n(q).firstFactors.includes(`password`));i(we,e=>{n(Ee)&&e(Te)});var De=u(we,2),Oe=e=>{var r=$l(),a=s(r);{let e=P(()=>Z(`policies.form.sign_in.all_providers`)),t=P(()=>n(q).providers===null);ta(a,{get label(){return n(e)},get checked(){return n(t)},onchange:e=>n(q).providers=e?null:n(_e).map(e=>e.key)})}var o=u(a,2),c=e=>{var r=V(),i=d(r);Y(i,17,()=>n(_e),e=>e.key,(e,t)=>{{let r=P(()=>n(q).providers.includes(n(t).key));ta(e,{get label(){return n(t).name},get checked(){return n(r)},onchange:e=>n(q).providers=fe(n(q).providers,n(t).key,e)})}}),t(e,r)};i(o,e=>{n(q).providers!==null&&e(c)}),U(r),t(e,r)},ke=P(()=>n(q).firstFactors.includes(`provider`)&&n(_e).length);i(De,e=>{n(ke)&&e(Oe)}),U(Se),U(be);var Ae=u(be,2),je=s(Ae),Me=G(je,!0),Ne=u(je,2),Pe=s(Ne);Y(Pe,21,()=>N,([e,t])=>e,(e,t)=>{var r=P(()=>I(n(t),2));let i=()=>n(r)[0],a=()=>n(r)[1];{let t=P(()=>n(q).secondFactors.includes(i()));ta(e,{get label(){return a()},get checked(){return n(t)},onchange:e=>n(q).secondFactors=fe(n(q).secondFactors,i(),e)})}}),U(Pe);var Fe=u(Pe,2);{let e=P(()=>Z(`policies.form.second_factor.required`));ta(Fe,{get label(){return n(e)},get checked(){return n(q).secondFactorRequired},set checked(e){n(q).secondFactorRequired=e}})}var Ie=u(Fe,2);{let e=P(()=>Z(`policies.form.second_factor.apps`));ta(Ie,{get label(){return n(e)},get checked(){return n(q).appsRequireSecondFactor},set checked(e){n(q).appsRequireSecondFactor=e}})}U(Ne),U(Ae);var Le=u(Ae,2),Re=s(Le),ze=G(Re,!0),Be=u(Re,2),Ve=s(Be),He=s(Ve),Ue=s(He),We=u(Ue);Y(We,21,()=>E(b,n(q).riskStepUpAt),([e,t])=>e,(e,r)=>{var i=P(()=>I(n(r),2));let a=()=>n(i)[0],o=()=>n(i)[1];var s=Kl(),l=G(s,!0),u={};c(()=>{H(l,o()),u!==(u=a())&&(s.value=(s.__value=u)??``)}),t(e,s)}),U(We),L(We),U(He);var Ge=u(He,2),Ke=s(Ge),qe=u(Ke);Y(qe,21,()=>E(b,n(q).riskRefuseAt),([e,t])=>e,(e,r)=>{var i=P(()=>I(n(r),2));let a=()=>n(i)[0],o=()=>n(i)[1];var s=Kl(),l=G(s,!0),u={};c(()=>{H(l,o()),u!==(u=a())&&(s.value=(s.__value=u)??``)}),t(e,s)}),U(qe),L(qe),U(Ge),U(Ve);var Je=u(Ve,2);{let e=P(()=>Z(`policies.form.risk.refuse_breached`));ta(Je,{get label(){return n(e)},get checked(){return n(q).refuseBreachedPasswords},set checked(e){n(q).refuseBreachedPasswords=e}})}var Ye=u(Je,2),Xe=G(Ye,!0);U(Be),U(Le);var Ze=u(Le,2),Qe=s(Ze),$e=G(Qe,!0),et=u(Qe,2),tt=s(et),rt=s(tt),it=s(rt),at=u(it);Y(at,21,()=>E(v,n(q).sessionLifetime),([e,t])=>e,(e,r)=>{var i=P(()=>I(n(r),2));let a=()=>n(i)[0],o=()=>n(i)[1];var s=Kl(),l=G(s,!0),u={};c(()=>{H(l,o()),u!==(u=a())&&(s.value=(s.__value=u)??``)}),t(e,s)}),U(at),L(at);var ot=u(at);U(rt);var st=u(rt,2),ct=s(st),lt=u(ct);Y(lt,21,()=>E(y,n(q).sessionIdleTimeout),([e,t])=>e,(e,r)=>{var i=P(()=>I(n(r),2));let a=()=>n(i)[0],o=()=>n(i)[1];var s=Kl(),l=G(s,!0),u={};c(()=>{H(l,o()),u!==(u=a())&&(s.value=(s.__value=u)??``)}),t(e,s)}),U(lt),L(lt);var ut=u(lt);U(st),U(tt);var dt=u(tt,2),ft=G(dt,!0);U(et),U(Ze),U(h);var pt=u(h,2),mt=s(pt),ht=G(mt,!0),gt=u(mt,2),_t=G(gt,!0);U(pt),c((e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g)=>{H(x,e),H(oe,t),H(X,n),H(Me,r),H(ze,i),H(Ue,`${a??``} `),H(Ke,`${o??``} `),H(Xe,s),H($e,c),H(it,`${l??``} `),H(ot,` ${u??``}`),H(ct,`${d??``} `),H(ut,` ${f??``}`),H(ft,p),mt.disabled=m,H(ht,h),H(_t,g)},[()=>Z(`policies.form.signup.legend`),()=>Z(`policies.form.account.legend`),()=>Z(`policies.form.sign_in.legend`),()=>Z(`policies.form.second_factor.legend`),()=>Z(`policies.form.risk.legend`),()=>Z(`policies.form.risk.step_up`),()=>Z(`policies.form.risk.refuse`),()=>Z(`policies.form.risk.hint`),()=>Z(`policies.form.sessions.legend`),()=>Z(`policies.form.sessions.last`),()=>Z(`policies.form.sessions.after_sign_in`),()=>Z(`policies.form.sessions.end_after`),()=>Z(`policies.form.sessions.idle`),()=>Z(`policies.form.sessions.hint`),()=>n(ie)||!n(q).key.trim()||!n(q).name.trim(),()=>n(K)===``?Z(`policies.form.create`):Z(`policies.form.save`),()=>Z(`policies.form.cancel`)]),R(We,()=>n(q).riskStepUpAt,e=>n(q).riskStepUpAt=e),R(qe,()=>n(q).riskRefuseAt,e=>n(q).riskRefuseAt=e),R(at,()=>n(q).sessionLifetime,e=>n(q).sessionLifetime=e),R(lt,()=>n(q).sessionIdleTimeout,e=>n(q).sessionIdleTimeout=e),f(`click`,mt,me),f(`click`,gt,de),t(e,a)},$$slots:{default:!0}})}};i(p,e=>{n(K)!==null&&e(m)});var h=u(p,2);Q(h,{children:(e,r)=>{var a=su(),l=d(a),p=e=>{var n=tu(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`policies.list.empty`)]),t(e,n)};i(l,e=>{n(W).active.length===0&&e(p)});var m=u(l,2);Y(m,17,()=>n(W).active,e=>e.key,(e,r)=>{var a=ou(),l=s(a),p=s(l),m=s(p),h=u(m),g=e=>{var n=nu(),r=G(n,!0);c(e=>H(r,e),[()=>Z(`policies.list.default`)]),t(e,n)};i(h,e=>{n(r).default&&e(g)}),U(p);var _=u(p,2),v=G(_,!0),y=u(_,2),b=e=>{var i=iu(),a=s(i),l=u(a);Y(l,19,()=>n(r).clients,e=>e.clientId,(e,r,i)=>{j();var a=ru(),s=d(a,!0),l=u(s);{let e=P(()=>`/clients/${n(r).clientId}`);nt(l,{get to(){return n(e)},class:`link`,children:(e,i)=>{j();var a=o();c(()=>H(a,n(r).name)),t(e,a)},$$slots:{default:!0}})}c(()=>H(s,n(i)?`, `:``)),t(e,a)}),U(i),c(e=>H(a,`${e??``} `),[()=>Z(`policies.list.used_by`)]),t(e,i)};i(y,e=>{n(r).clients.length&&e(b)}),U(l);var x=u(l,2),S=s(x),C=G(S,!0),w=u(S,2),T=e=>{var i=au(),a=G(i,!0);c(e=>H(a,e),[()=>Z(`policies.list.archive`)]),f(`click`,i,()=>he(`archiveSignInPolicy`,n(r),Z(`policies.archived_notice`,{name:n(r).name}),Z(`policies.archive_confirm`,{name:n(r).name}))),t(e,i)};i(w,e=>{n(r).default||e(T)}),U(x),U(a),c((e,t)=>{H(m,`${n(r).name??``} `),H(v,e),H(C,t)},[()=>ge(n(r)),()=>Z(`policies.list.edit`)]),f(`click`,S,()=>se(n(r))),t(e,a)}),t(e,a)},$$slots:{default:!0}});var g=u(h,2),_=e=>{var i=V(),o=d(i);a(o,()=>n(W),e=>{Wl(e,{get api(){return r.api}})}),t(e,i)};i(g,e=>{n(K)===null&&e(_)});var x=u(g,2),w=e=>{{let r=P(()=>Z(`policies.archived.title`));Q(e,{get title(){return n(r)},children:(e,r)=>{var i=V(),a=d(i);Y(a,17,()=>n(W).archived,e=>e.key,(e,r)=>{var i=cu(),a=s(i),o=G(a,!0),l=u(a,2),d=G(l,!0);U(i),c(e=>{H(o,n(r).name),H(d,e)},[()=>Z(`policies.archived.restore`)]),f(`click`,l,()=>he(`restoreSignInPolicy`,n(r),Z(`policies.restored`,{name:n(r).name}))),t(e,i)}),t(e,i)},$$slots:{default:!0}})}};i(x,e=>{n(W).archived.length&&e(w)}),t(e,l)};i(h,e=>{n(re)&&!n(W)?e(g):n(W)&&e(_,1)}),t(e,p)},$$slots:{actions:!0,default:!0}})}B()}l([`click`]);var du=p(`<li><div class="min-w-0"><div class="text-sm font-medium"> </div> <code class="hint font-mono text-xs break-all"> </code> <div class="hint text-xs"> </div></div> <button type="button" class="btn btn-ghost btn-xs ml-auto"> </button></li>`),fu=p(`<ul class="compact-list"></ul>`),pu=p(`<div class="alert alert-warning alert-soft flex-col items-start gap-2" role="status"><span class="font-medium"> </span> <span class="text-xs"> </span> <code class="font-mono text-xs break-all"> </code> <span class="text-xs"> </span> <code class="font-mono text-xs break-all"> </code></div>`),mu=p(`<dl class="ldap-facts"><dt class="field-label"> </dt> <dd><code class="font-mono text-xs"> </code></dd> <dt class="field-label"> </dt> <dd><code class="font-mono text-xs break-all"> </code></dd></dl> <!> <form class="join"><input class="input input-sm join-item w-full max-w-48" placeholder="jellyfin"/> <button type="submit" class="btn btn-sm join-item"> </button></form> <p class="hint"> </p> <!> <!> <p class="hint"> </p>`,1),hu=p(`<!> <!>`,1);function gu(e,r){O(r,!0);let a=ct(),o=T(null),l=T(``),p=T(null);async function m(){try{C(o,await r.api.query(`
|
|
538
|
+
query Ldap {
|
|
539
|
+
ldapBaseDn
|
|
540
|
+
ldapPort
|
|
541
|
+
ldapTls
|
|
542
|
+
ldapCredentials { id label bindDn usedAt createdAt issuedBy { identifier } }
|
|
543
|
+
tenant { ldapEnabled ldapPasswordOnly }
|
|
544
|
+
}
|
|
545
|
+
`),!0)}catch(e){a.blame(e)}}m();async function h(){let e=await a.attempt(()=>r.api.query(`mutation Issue($label: String!) {
|
|
546
|
+
issueLdapCredential(label: $label) { secret ldapCredential { bindDn } }
|
|
547
|
+
}`,{label:n(l).trim()}));e&&(C(p,e.issueLdapCredential,!0),C(l,``),await m())}async function g(e){confirm(Z(`ldap.revoke_confirm`,{label:e.label}))&&await a.attempt(()=>r.api.query(`mutation Revoke($id: ID!) { revokeLdapCredential(id: $id) { ldapCredential { id } } }`,{id:e.id}),Z(`ldap.revoked`,{label:e.label}))&&await m()}async function _(e){await a.attempt(()=>r.api.query(`mutation Serve($ldapEnabled: Boolean) {
|
|
548
|
+
updateTenant(ldapEnabled: $ldapEnabled) { tenant { ldapEnabled } }
|
|
549
|
+
}`,{ldapEnabled:e}),Z(`ldap.serve.updated`))&&await m()}async function y(e){await a.attempt(()=>r.api.query(`mutation PasswordOnly($ldapPasswordOnly: Boolean) {
|
|
550
|
+
updateTenant(ldapPasswordOnly: $ldapPasswordOnly) { tenant { ldapPasswordOnly } }
|
|
551
|
+
}`,{ldapPasswordOnly:e}),Z(`ldap.binds.updated`))&&await m()}{let r=P(()=>Z(`ldap.title`)),m=P(()=>`${Z(`ldap.lede`)} ${Z(`ldap.serve.help`)}`);Q(e,{row:!0,get title(){return n(r)},get help(){return n(m)},children:(e,r)=>{var m=hu(),b=d(m);vn(b,{get feedback(){return a.state}});var x=u(b,2),S=e=>{var r=hu(),a=d(r);{let e=P(()=>Z(`ldap.serve.on`));ta(a,{get label(){return n(e)},get checked(){return n(o).tenant.ldapEnabled},onchange:_})}var m=u(a,2),b=e=>{var r=mu(),a=d(r),m=s(a),_=G(m,!0),b=u(m,2),x=s(b),S=G(x,!0);U(b);var w=u(b,2),T=G(w,!0),E=u(w,2),D=s(E),O=G(D,!0);U(E),U(a);var k=u(a,2),A=e=>{var r=fu();Y(r,21,()=>n(o).ldapCredentials,e=>e.id,(e,r)=>{var i=du(),a=s(i),o=s(a),l=G(o,!0),d=u(o,2),p=G(d,!0),m=u(d,2),h=G(m,!0);U(a);var _=u(a,2),v=G(_,!0);U(i),c((e,t)=>{H(l,n(r).label),H(p,n(r).bindDn),H(h,e),H(v,t)},[()=>Z(`ldap.credentials.used`,{used:yt(n(r).usedAt,Z(`ldap.credentials.never`))}),()=>Z(`ldap.credentials.revoke`)]),f(`click`,_,()=>g(n(r))),t(e,i)}),U(r),t(e,r)};i(k,e=>{n(o).ldapCredentials.length&&e(A)});var j=u(k,2),N=s(j);M(N);var I=u(N,2),L=G(I,!0);U(j);var R=u(j,2),z=G(R,!0),B=u(R,2),V=e=>{var r=pu(),i=s(r),a=G(i,!0),o=u(i,2),l=G(o,!0),d=u(o,2),f=G(d,!0),m=u(d,2),h=G(m,!0),g=u(m,2),_=G(g,!0);U(r),c((e,t,r)=>{H(a,e),H(l,t),H(f,n(p).ldapCredential.bindDn),H(h,r),H(_,n(p).secret)},[()=>Z(`ldap.connect.shown_once`),()=>Z(`ldap.connect.bind_dn`),()=>Z(`ldap.connect.secret`)]),t(e,r)};i(B,e=>{n(p)&&e(V)});var te=u(B,2);{let e=P(()=>Z(`ldap.binds.password_only`));ta(te,{get label(){return n(e)},get checked(){return n(o).tenant.ldapPasswordOnly},onchange:y})}var ne=u(te,2),W=G(ne,!0);c((e,t,r,i,a,s,c,l)=>{H(_,e),H(S,t),H(T,r),H(O,n(o).ldapBaseDn),F(N,`aria-label`,i),I.disabled=a,H(L,s),H(z,c),H(W,l)},[()=>Z(`ldap.connect.address`),()=>Z(n(o).ldapTls?`ldap.connect.ldaps`:`ldap.connect.port`,{port:n(o).ldapPort}),()=>Z(`ldap.connect.base_dn`),()=>Z(`ldap.connect.label`),()=>!n(l).trim(),()=>Z(`ldap.connect.issue`),()=>Z(`ldap.connect.help`),()=>Z(`ldap.binds.help`)]),v(`submit`,j,e=>{e.preventDefault(),h()}),ee(N,()=>n(l),e=>C(l,e)),t(e,r)};i(m,e=>{n(o).tenant.ldapEnabled&&e(b)}),t(e,r)};i(x,e=>{n(o)&&e(S)}),t(e,m)},$$slots:{default:!0}})}B()}l([`click`]);var _u=p(`<span class="hint"> </span>`),vu=p(`<li><div class="min-w-0"><div class="text-sm font-medium"> <!></div> <div class="hint text-xs"> </div></div> <button type="button" class="btn btn-ghost btn-xs ml-auto"> </button></li>`),yu=p(`<ul class="compact-list"></ul>`),bu=p(`<button type="button"> </button>`),xu=p(`<div class="alert alert-warning alert-soft flex-col items-start gap-2" role="status"><span class="font-medium"> </span> <code class="font-mono text-xs break-all"> </code></div>`),Su=p(`<div class="flex flex-col gap-1.5"><span class="field-label"> </span> <code class="tray px-2 py-1 font-mono text-xs break-all"> </code></div> <!> <form class="flex flex-wrap items-center gap-2"><input class="input input-sm w-full max-w-48" placeholder="Entra ID"/> <!> <div class="range" role="group"></div> <button type="submit" class="btn btn-sm"> </button></form> <!>`,1),Cu=p(`<!> <!>`,1);function wu(e,r){O(r,!0);let a=[[30,`month`],[90,`quarter`],[365,`year`]],o=ct(),l=T(null),p=T(``),m=T(``),h=T(90),g=T(null);async function _(){try{C(l,await r.api.query(`
|
|
552
|
+
query Provisioning {
|
|
553
|
+
scimBaseUrl
|
|
554
|
+
provisioningTokens { id label usedAt expiresAt createdAt issuedBy { identifier } organization { name } }
|
|
555
|
+
organizations { key name }
|
|
556
|
+
}
|
|
557
|
+
`),!0)}catch(e){o.blame(e)}}_();async function y(){let e=await o.attempt(()=>r.api.query(`mutation Issue($label: String!, $expiresIn: Int, $organization: ID) {
|
|
558
|
+
issueProvisioningToken(label: $label, expiresIn: $expiresIn, organization: $organization) { secret }
|
|
559
|
+
}`,{label:n(p).trim()||`Provisioning`,expiresIn:n(h)*86400,organization:n(m)||null}));e&&(C(g,e.issueProvisioningToken,!0),C(p,``),await _())}async function b(e){confirm(Z(`provisioning.revoke_confirm`,{label:e.label}))&&await o.attempt(()=>r.api.query(`mutation Revoke($id: ID!) { revokeProvisioningToken(id: $id) { provisioningToken { id } } }`,{id:e.id}),Z(`provisioning.revoked`,{label:e.label}))&&await _()}{let r=P(()=>Z(`provisioning.title`)),_=P(()=>`${Z(`provisioning.lede`)} ${Z(`provisioning.connect.help`)}`);Q(e,{row:!0,get title(){return n(r)},get help(){return n(_)},children:(e,r)=>{var _=Cu(),x=d(_);vn(x,{get feedback(){return o.state}});var S=u(x,2),w=e=>{var r=Su(),o=d(r),_=s(o),x=G(_,!0),S=u(_,2),w=G(S,!0);U(o);var T=u(o,2),E=e=>{var r=yu();Y(r,21,()=>n(l).provisioningTokens,e=>e.id,(e,r)=>{var a=vu(),o=s(a),l=s(o),d=s(l,!0),p=u(d),m=e=>{var i=_u(),a=G(i);c(()=>H(a,`· ${n(r).organization.name??``}`)),t(e,i)};i(p,e=>{n(r).organization&&e(m)}),U(l);var h=u(l,2),g=G(h,!0);U(o);var _=u(o,2),v=G(_,!0);U(a),c((e,t)=>{H(d,n(r).label),H(g,e),H(v,t)},[()=>n(r).issuedBy?Z(`provisioning.tokens.issued_by`,{identifier:n(r).issuedBy.identifier,used:yt(n(r).usedAt,Z(`provisioning.tokens.never`)),expires:_t(n(r).expiresAt)}):Z(`provisioning.tokens.detail`,{used:yt(n(r).usedAt,Z(`provisioning.tokens.never`)),expires:_t(n(r).expiresAt)}),()=>Z(`provisioning.tokens.revoke`)]),f(`click`,_,()=>b(n(r))),t(e,a)}),U(r),t(e,r)};i(T,e=>{n(l).provisioningTokens.length&&e(E)});var D=u(T,2),O=s(D);M(O);var k=u(O,2),A=e=>{{let t=P(()=>Z(`provisioning.connect.provisions`)),r=P(()=>[[``,Z(`provisioning.connect.every_account`)],...n(l).organizations.map(e=>[e.key,Z(`provisioning.connect.only_members`,{name:e.name})])]);$i(e,{get name(){return n(t)},get value(){return n(m)},get options(){return n(r)},onchange:e=>C(m,e,!0)})}};i(k,e=>{n(l).organizations.length&&e(A)});var j=u(k,2);Y(j,21,()=>a,([e,t])=>e,(e,r)=>{var i=P(()=>I(n(r),2));let a=()=>n(i)[0],o=()=>n(i)[1];var s=bu(),l=G(s,!0);c(e=>{F(s,`aria-pressed`,n(h)===a()),H(l,e)},[()=>Z(`provisioning.lifetimes.${o()}`)]),f(`click`,s,()=>C(h,a(),!0)),t(e,s)}),U(j);var N=u(j,2),L=G(N,!0);U(D);var R=u(D,2),z=e=>{var r=xu(),i=s(r),a=G(i,!0),o=u(i,2),l=G(o,!0);U(r),c(e=>{H(a,e),H(l,n(g).secret)},[()=>Z(`provisioning.connect.shown_once`)]),t(e,r)};i(R,e=>{n(g)&&e(z)}),c((e,t,r,i)=>{H(x,e),H(w,n(l).scimBaseUrl),F(O,`aria-label`,t),F(j,`aria-label`,r),H(L,i)},[()=>Z(`provisioning.connect.base_url`),()=>Z(`provisioning.connect.label`),()=>Z(`provisioning.connect.lifetime`),()=>Z(`provisioning.connect.issue`)]),v(`submit`,D,e=>{e.preventDefault(),y()}),ee(O,()=>n(p),e=>C(p,e)),t(e,r)};i(S,e=>{n(l)&&e(w)}),t(e,_)},$$slots:{default:!0}})}B()}l([`click`]);var Tu=p(`<div class="grid gap-4"><!> <!></div>`);function Eu(e,r){O(r,!0);{let i=P(()=>Z(`directory.title`)),a=P(()=>Z(`directory.lede`));wn(e,{get title(){return n(i)},get lede(){return n(a)},children:(e,n)=>{var i=Tu(),a=s(i);wu(a,{get api(){return r.api}}),gu(u(a,2),{get api(){return r.api}}),U(i),t(e,i)},$$slots:{default:!0}})}B()}var Du=p(`<img width="24" height="24" alt=""/>`),Ou=p(`<div class="settings"><div class="settings-bar"><nav class="settings-tabs"></nav> <div class="settings-me"><a class="settings-who"><!> <span> </span></a> <button type="button" class="settings-tab"> </button> <button type="button" class="settings-tab settings-quiet"> </button></div></div> <div class="min-w-0"><!></div></div>`);function ku(e,r){O(r,!0);let a=[`settings`,`policies`,`providers`,`directory`,`messages`,`activity`];function l(){confirm(Z(`settings_shell.forget_confirm`))&&r.onunpair()}var d=Ou(),p=s(d),m=s(p);Y(m,20,()=>a,e=>e,(e,i)=>{{let a=P(()=>`/${i}`),s=P(()=>r.current===i?`settings-tab-on`:``);nt(e,{get to(){return n(a)},get class(){return`settings-tab ${n(s)??``}`},children:(e,n)=>{j();var r=o();c(e=>H(r,e),[()=>Z(`settings_shell.tabs.${i}`)]),t(e,r)},$$slots:{default:!0}})}}),U(m);var h=u(m,2),g=s(h),_=s(g),b=e=>{var n=Du();let i;c(()=>{F(n,`src`,`${r.viewer.avatars.photo??r.viewer.avatars.identicon}?size=64`),i=le(n,1,``,null,i,{drawn:!r.viewer.avatars.photo})}),v(`error`,n,e=>e.currentTarget.src=`${r.viewer.avatars.identicon}?size=64`),ue(n),t(e,n)};i(_,e=>{r.viewer&&e(b)});var x=u(_,2),S=G(x,!0);U(g);var C=u(g,2),w=G(C,!0),T=u(C,2),E=G(T,!0);U(h),U(p);var D=u(p,2),k=s(D);y(k,()=>r.children),U(D),U(d),c((e,t,n,i)=>{F(m,`aria-label`,e),F(g,`href`,r.account),F(g,`title`,t),H(S,r.identifier),H(w,n),H(E,i)},[()=>Z(`settings_shell.label`),()=>Z(`settings_shell.account`),()=>Z(`settings_shell.sign_out`),()=>Z(`settings_shell.forget`)]),f(`click`,C,function(...e){r.onsignout?.apply(this,e)}),f(`click`,T,l),t(e,d),B()}l([`click`]);var Au=p(`<div class="grid min-h-screen place-items-center"><!></div>`),ju=p(`<div class="auth-page"><main class="auth-col surface-terminus"><div class="flow"><span class="state state-bad"> </span> <h1 class="prompt-title"> </h1> <p class="said"> </p> <button type="button" class="action"> </button></div></main></div>`),Mu=p(`<img src="/masks-public/icon.svg" alt="" class="brand-mark"/> `,1),Nu=p(`<span class="nav-count"> </span>`),Pu=p(` <!>`,1),Fu=m(`<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M17.03 8.46 L19.13 8.85 L19.13 11.15 L17.03 11.54 L16.06 13.88 L17.27 15.64 L15.64 17.27 L13.88 16.06 L11.54 17.03 L11.15 19.13 L8.85 19.13 L8.46 17.03 L6.12 16.06 L4.36 17.27 L2.73 15.64 L3.94 13.88 L2.97 11.54 L0.87 11.15 L0.87 8.85 L2.97 8.46 L3.94 6.12 L2.73 4.36 L4.36 2.73 L6.12 3.94 L8.46 2.97 L8.85 0.87 L11.15 0.87 L11.54 2.97 L13.88 3.94 L15.64 2.73 L17.27 4.36 L16.06 6.12 Z"></path><circle cx="10" cy="10" r="2.75"></circle></svg>`),Iu=p(`<p class="alert alert-info mb-4 text-sm" role="status"> </p>`),Lu=p(`<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"></svg> <span> </span>`,1),Ru=p(`<div class="flex min-h-screen flex-col"><header class="console-top sticky top-0 z-20"><div class="console-bar mx-auto flex w-full max-w-6xl items-center gap-x-6 py-2"><!> <nav class="nav md:flex-1"></nav> <!></div></header> <main class="console-main mx-auto w-full max-w-6xl flex-1"><!> <!></main> <nav class="tabbar md:hidden"></nav></div>`);function zu(e,a){O(a,!0);let l=S(()=>qe(a.boot)),p=S(()=>Ye(a.boot.root));Xe(p);let m=T(`starting`),h=T(null),g=T(null),_=T(null),v=P(()=>!n(_)||n(_).includes(`owner`)?null:n(_).includes(`security`)&&n(_).includes(`support`)?Z(`app.limited.both`):n(_).includes(`security`)?Z(`app.limited.security`):n(_).includes(`support`)?Z(`app.limited.support`):Z(`app.limited.read`)),y=[[``,`overview`,`<path d="M3.5 10.5 10 4l6.5 6.5"/><path d="M5.5 9v7h9V9"/>`],[`/actors`,`actors`,`<circle cx="10" cy="7" r="3"/><path d="M4 17c.8-3 3.2-4.5 6-4.5s5.2 1.5 6 4.5"/>`],[`/organizations`,`organizations`,`<rect x="3.5" y="7" width="13" height="9.5" rx="1.5"/><path d="M7.5 7V4.5h5V7"/><path d="M3.5 11h13"/>`],[`/clients`,`clients`,`<rect x="3" y="3" width="6" height="6" rx="1.5"/><rect x="11" y="3" width="6" height="6" rx="1.5"/><rect x="3" y="11" width="6" height="6" rx="1.5"/><rect x="11" y="11" width="6" height="6" rx="1.5"/>`]],b=[`settings`,`policies`,`providers`,`directory`,`messages`,`activity`],w=`masks:manage:repaired`;function E(e){if(e===`invalid_client`)return!0;if(e!==`invalid_scope`)return!1;try{return!sessionStorage.getItem(w)&&(sessionStorage.setItem(w,`1`),!0)}catch{return!1}}function D(){location.replace(We(a.boot))}async function k(){let e=new URLSearchParams(location.search);try{if(E(e.get(`error`))){l.unpair(),D();return}if(e.get(`error`)){C(h,e.get(`error_description`)||e.get(`error`),!0),p.replace(``),C(m,`failed`);return}if(e.get(`initial_access_token`)){await Ge(a.boot,e.get(`initial_access_token`)),p.replace(``),await l.authorize(``);return}if(!l.paired()){D();return}if(p.segments[0]===`callback`){let{returnTo:e}=await l.callback();p.replace(e||``),R();return}if(!l.signedIn()){await l.authorize(p.state.path.slice(a.boot.root.length));return}R()}catch(e){C(h,e.message,!0),C(m,`failed`)}}let A=T(0);async function M(){try{let e=await l.query(`query Waiting { approvals: actorCount(pendingApproval: true) help: actorCount(recoveryRequested: true) }`);C(A,e.approvals+e.help)}catch{C(A,0)}}let N=P(()=>p.segments[0]??``),L=P(()=>Z(`app.waiting`,{count:n(A)}));x(()=>{n(m)===`ready`&&n(N)!==void 0&&M()});function R(){C(m,`ready`),l.query(`query Viewer { viewer { identifier avatars { photo identicon } } manageLevels }`).then(e=>{C(g,e.viewer,!0),C(_,e.manageLevels,!0)}).catch(()=>{})}k();let z=P(()=>p.segments[0]??``),ee=P(()=>b.includes(n(z))),te=P(()=>n(g)?.identifier??l.state.identity?.preferred_username??Z(`app.account`));function ne(){location.assign(a.boot.root)}function W(){l.unpair(),ne()}async function re(){location.assign(await l.signOut()??a.boot.root)}var ie=V(),K=d(ie),q=e=>{var r=Au(),i=s(r);{let e=P(()=>Z(`app.starting`));it(i,{get label(){return n(e)}})}U(r),t(e,r)},J=e=>{var r=ju(),i=s(r),o=s(i),l=s(o),d=G(l,!0),p=u(l,2),m=G(p,!0),g=u(p,2),_=G(g,!0),v=u(g,2),y=G(v,!0);U(o),U(i),U(r),c((e,t,r)=>{H(d,e),H(m,t),H(_,n(h)),H(y,r)},[()=>Z(`app.stopped`),()=>Z(`app.failed`,{tenant:a.boot.tenant.name}),()=>Z(`app.retry`)]),f(`click`,v,ne),t(e,r)},ae=e=>{var f=Ru(),m=s(f),h=s(m),_=s(h);nt(_,{to:``,class:`brand`,children:(e,n)=>{var r=Mu(),i=u(d(r),1,!0);c(()=>H(i,a.boot.tenant.name)),t(e,r)},$$slots:{default:!0}});var b=u(_,2);Y(b,21,()=>y,([e,t])=>e,(e,r)=>{var a=P(()=>I(n(r),2));let o=()=>n(a)[0],s=()=>n(a)[1];{let r=P(()=>n(z)===o().replace(`/`,``)?`nav-item-on`:``);nt(e,{get to(){return o()},get class(){return`nav-item ${n(r)??``}`},children:(e,r)=>{j();var a=Pu(),o=d(a,!0),l=u(o),f=e=>{var r=Nu(),i=G(r,!0);c(()=>{F(r,`title`,n(L)),H(i,n(A))}),t(e,r)};i(l,e=>{s()===`actors`&&n(A)>0&&e(f)}),c(e=>H(o,e),[()=>Z(`app.nav.${s()}`)]),t(e,a)},$$slots:{default:!0}})}}),U(b);var x=u(b,2);{let e=P(()=>n(ee)?`console-cog-on`:``),r=P(()=>Z(`app.settings`)),i=P(()=>Z(`app.settings`));nt(x,{to:`/settings`,get class(){return`console-cog ms-auto ${n(e)??``}`},get"aria-label"(){return n(r)},get title(){return n(i)},children:(e,n)=>{var r=Fu();t(e,r)},$$slots:{default:!0}})}U(h),U(m);var S=u(m,2),C=s(S),w=e=>{var r=Iu(),i=G(r,!0);c(()=>H(i,n(v))),t(e,r)};i(C,e=>{n(v)&&e(w)});var T=u(C,2),E=e=>{ec(e,{get api(){return l},get boot(){return a.boot},overview:!0})},D=e=>{var n=V(),r=d(n),a=e=>{Ki(e,{get api(){return l},get id(){return p.segments[2]}})},o=e=>{Ni(e,{get api(){return l},get uuid(){return p.segments[1]}})},s=e=>{Zn(e,{get api(){return l}})};i(r,e=>{p.segments[1]===`devices`&&p.segments[2]?e(a):p.segments[1]?e(o,1):e(s,-1)}),t(e,n)},O=e=>{var n=V(),r=d(n),a=e=>{fs(e,{get api(){return l},get organizationKey(){return p.segments[1]}})},o=e=>{Io(e,{get api(){return l}})};i(r,e=>{p.segments[1]?e(a):e(o,-1)}),t(e,n)},k=e=>{var n=V(),r=d(n),a=e=>{xo(e,{get api(){return l},get clientId(){return p.segments[1]},get part(){return p.segments[2]}})},o=e=>{xa(e,{get api(){return l}})};i(r,e=>{p.segments[1]?e(a):e(o,-1)}),t(e,n)},M=e=>{ku(e,{get current(){return n(z)},get viewer(){return n(g)},get identifier(){return n(te)},get account(){return a.boot.account},onsignout:re,onunpair:W,children:(e,r)=>{var o=V(),s=d(o),c=e=>{el(e,{get api(){return l}})},u=e=>{uu(e,{get api(){return l}})},f=e=>{Eu(e,{get api(){return l}})},m=e=>{kl(e,{get api(){return l},get part(){return p.segments[1]}})},h=e=>{zl(e,{get api(){return l}})},g=e=>{uc(e,{get api(){return l}})},_=e=>{ec(e,{get api(){return l},get boot(){return a.boot}})};i(s,e=>{n(z)===`providers`?e(c):n(z)===`policies`?e(u,1):n(z)===`directory`?e(f,2):n(z)===`messages`?e(m,3):n(z)===`activity`&&p.segments[1]===`streams`?e(h,4):n(z)===`activity`?e(g,5):e(_,-1)}),t(e,o)},$$slots:{default:!0}})},N=e=>{$e(e,{children:(e,n)=>{j();var r=o();c(e=>H(r,e),[()=>Z(`app.missing`)]),t(e,r)},$$slots:{default:!0}})};i(T,e=>{n(z)===``?e(E):n(z)===`actors`?e(D,1):n(z)===`organizations`?e(O,2):n(z)===`clients`?e(k,3):n(ee)?e(M,4):e(N,-1)}),U(S);var R=u(S,2);Y(R,21,()=>y,([e,t,n])=>e,(e,i)=>{var a=P(()=>I(n(i),3));let o=()=>n(a)[0],s=()=>n(a)[1],l=()=>n(a)[2];{let i=P(()=>n(z)===o().replace(`/`,``)?`tabbar-item-on`:``);nt(e,{get to(){return o()},get class(){return`tabbar-item ${n(i)??``}`},children:(e,n)=>{var i=Lu(),a=d(i);r(a,l,!0),U(a);var o=u(a,2),f=G(o,!0);c(e=>H(f,e),[()=>Z(`app.nav.${s()}`)]),t(e,i)},$$slots:{default:!0}})}}),U(R),U(f),c(e=>F(R,`aria-label`,e),[()=>Z(`app.sections`)]),t(e,f)};i(K,e=>{n(m)===`starting`?e(q):n(m)===`failed`?e(J,1):e(ae,-1)}),t(e,ie),B()}l([`click`]);var Bu=document.getElementById(`manage`);if(Bu){let e=JSON.parse(Bu.dataset.boot);Pe(e.copy,document.documentElement.lang||`en`),Bu.replaceChildren(),h(zu,{target:Bu,props:{boot:e}})}
|
|
560
|
+
//# sourceMappingURL=manage-Z3GmPDNQ.js.map
|