@adonis-agora/authkit-react 0.25.2 → 1.0.0-rc.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.
Files changed (41) hide show
  1. package/CHANGELOG.md +678 -0
  2. package/README.md +29 -19
  3. package/build/index.d.ts +7 -18
  4. package/build/index.js +4 -9
  5. package/build/src/client/client.d.ts +12 -21
  6. package/build/src/client/client.js +7 -15
  7. package/build/src/client/types.d.ts +39 -7
  8. package/build/src/components/authorized_apps.js +17 -13
  9. package/build/src/components/last_used_badge.d.ts +288 -0
  10. package/build/src/components/last_used_badge.js +10 -0
  11. package/build/src/components/organization_profile.js +31 -39
  12. package/build/src/components/organization_switcher.js +25 -9
  13. package/build/src/components/user_profile.js +13 -7
  14. package/build/src/config.d.ts +0 -6
  15. package/build/src/config.js +0 -12
  16. package/build/src/hooks/use_resource.d.ts +0 -8
  17. package/build/src/hooks/use_resource.js +0 -22
  18. package/build/src/interaction/last_used.d.ts +2 -0
  19. package/build/src/interaction/last_used.js +5 -0
  20. package/build/src/queries/account/index.d.ts +11 -1
  21. package/build/src/queries/account/index.js +14 -0
  22. package/build/src/queries/admin/index.d.ts +6 -21
  23. package/build/src/queries/keys.d.ts +1 -0
  24. package/build/src/queries/keys.js +1 -0
  25. package/package.json +11 -10
  26. package/skills/authkit-react-auth/SKILL.md +39 -22
  27. package/styles.css +12 -0
  28. package/build/src/hooks/use_authorized_apps.d.ts +0 -16
  29. package/build/src/hooks/use_authorized_apps.js +0 -15
  30. package/build/src/hooks/use_org_invitations.d.ts +0 -19
  31. package/build/src/hooks/use_org_invitations.js +0 -20
  32. package/build/src/hooks/use_organization.d.ts +0 -23
  33. package/build/src/hooks/use_organization.js +0 -10
  34. package/build/src/hooks/use_organizations.d.ts +0 -18
  35. package/build/src/hooks/use_organizations.js +0 -14
  36. package/build/src/hooks/use_profile.d.ts +0 -13
  37. package/build/src/hooks/use_profile.js +0 -32
  38. package/build/src/hooks/use_sessions.d.ts +0 -16
  39. package/build/src/hooks/use_sessions.js +0 -15
  40. package/build/src/hooks/use_switch_organization.d.ts +0 -7
  41. package/build/src/hooks/use_switch_organization.js +0 -42
package/README.md CHANGED
@@ -17,8 +17,8 @@ pnpm add @adonis-agora/authkit-react
17
17
 
18
18
  ## 1. No host AdonisJS: compartilhar a prop `authkit`
19
19
 
20
- A shared-prop tem o formato `AuthSharedProps`. Use `auth.getUser()` /
21
- `auth.identity` do `@adonis-agora/authkit-client` para preenchê-la — tipicamente
20
+ A shared-prop tem o formato `AuthSharedProps`. Use `authkit.getUser()` /
21
+ `authkit.identity` do `@adonis-agora/authkit-client` para preenchê-la — tipicamente
22
22
  num middleware ou no `config/inertia.ts` (`sharedData`):
23
23
 
24
24
  ```ts
@@ -28,11 +28,11 @@ import { defineConfig } from '@adonisjs/inertia'
28
28
  export default defineConfig({
29
29
  sharedData: {
30
30
  authkit: async (ctx) => {
31
- const auth = ctx.authkit // sua instância do Authenticator
32
- const user = await auth.getUser() // mesmo shape de identityToUser/resolveUser
31
+ const authkit = ctx.authkit // sua instância do Authenticator
32
+ const user = await authkit.getUser() // mesmo shape de identityToUser/resolveUser
33
33
  return {
34
34
  user: user ?? null,
35
- globalRoles: auth.identity?.globalRoles ?? [],
35
+ globalRoles: authkit.identity?.globalRoles ?? [],
36
36
  }
37
37
  },
38
38
  },
@@ -98,29 +98,39 @@ import { AuthProvider } from '@adonis-agora/authkit-react'
98
98
 
99
99
  ## 5. Config + componentes prontos
100
100
 
101
- Envolva a app com `<AuthkitProvider>` para configurar URLs/endpoints e use os
102
- hooks headless e componentes prontos:
101
+ Envolva a app com `<AuthkitProvider>` (URLs, CSRF, modo de IdP). Os componentes de
102
+ conta (`UserProfile`, `AuthorizedApps`, `OrganizationSwitcher`, `OrganizationProfile`)
103
+ buscam dados pela Account API, então também precisam de `QueryClientProvider` +
104
+ `AuthkitClientProvider`:
103
105
 
104
106
  ```tsx
105
107
  import '@adonis-agora/authkit-react/styles.css'
108
+ import { QueryClientProvider } from '@tanstack/react-query'
106
109
  import {
110
+ AuthkitClientProvider,
107
111
  AuthkitProvider,
108
- useSignIn, useSignOut, useUser, useProfile, useSessions, useAuthorizedApps,
109
- SignInButton, SignOutButton, UserButton, UserProfile, AuthorizedApps,
112
+ createAuthkitQueryClient,
113
+ AuthorizedApps,
114
+ UserButton,
115
+ UserProfile,
110
116
  } from '@adonis-agora/authkit-react'
111
117
 
112
- <AuthkitProvider config={{ csrfToken: page.props.csrfToken }}>
113
- <UserButton />
114
- <UserProfile />
115
- <AuthorizedApps />
116
- </AuthkitProvider>
118
+ const queryClient = createAuthkitQueryClient()
119
+
120
+ <QueryClientProvider client={queryClient}>
121
+ <AuthkitClientProvider>
122
+ <AuthkitProvider config={{ csrfToken: page.props.csrfToken }}>
123
+ <UserButton />
124
+ <UserProfile />
125
+ <AuthorizedApps />
126
+ </AuthkitProvider>
127
+ </AuthkitClientProvider>
128
+ </QueryClientProvider>
117
129
  ```
118
130
 
119
- Defaults dos endpoints apontam para as rotas reais do host-kit
120
- (`/auth/login`, `/account/logout`, `/account/security`, `/account/security/profile`,
121
- `/account/apps`, …). Numa topologia de *client app*, aponte-os para rotas locais que
122
- redirecionam para o IdP. Temável via CSS vars `--authkit-*`. Veja a
123
- [doc de React](https://...) para detalhes.
131
+ Para telas próprias, use as query options com `useQuery`/`useMutation`
132
+ (`useMeQueryOptions`, `useAccountSessionsQueryOptions`, `useAppsQueryOptions`,
133
+ `useAccountOrgsQueryOptions`, …). Temável via CSS vars `--authkit-*`.
124
134
 
125
135
  ## Helpers puros
126
136
 
package/build/index.d.ts CHANGED
@@ -4,7 +4,7 @@ export type { AuthkitClient, AuthkitClientOptions, } from './src/client/client.j
4
4
  export { AuthkitClientError, createAuthkitClient, } from './src/client/client.js';
5
5
  export type { AuthkitClientProviderProps } from './src/client/context.js';
6
6
  export { AuthkitClientProvider, createAuthkitQueryClient, useAuthkitClient, } from './src/client/context.js';
7
- export type { AcceptOrgInvitationResult, AccountAppEntry, AccountAppsResult, AccountCapabilities, AccountLoginMethodsResult, AccountMe, AccountMfaStatus, AccountOrgDetail, AccountOrgEntry, AccountOrgInvitationsResult, AccountOrgsResult, AccountPasskeysResult, AccountSecurityOverview, AccountSessionEntry, AccountSessionsResult, AccountTokensResult, ActivateOrgResult, AdminClient, AdminClientListResult, AdminGrantEntry, AdminOrgDetail, AdminOrgEntry, AdminOrgInvitation, AdminOrgListResult, AdminOrgMember, AdminOverview, AdminSessionEntry, AdminUser, AdminUserListResult, ApiErrorBody, AuditEventEntry, AuditListParams, AuditListResult, ChangePasswordInput, CreateAccountOrgInput, CreateClientInput, CreatedAccountOrgResult, CreatedClientResult, CreatedOrgInvitationResult, CreatedPatResult, CreateOrgInput, CreateRoleInput, CreateTokenInput, CreateUserInput, DailyPoint, DeactivateOrgResult, EmailChangeResult, ImpersonationPanel, InviteOrgMemberInput, KeysRotateInput, KeysRotateResult, KeysStatus, LeaveOrgResult, ListMeta, ManagedKeyInfo, MfaConfirmResult, MfaDisableResult, MfaEnrollResult, MfaRecoveryCodesResult, OkResult, PasskeyRegistrationOptions, PasskeySummaryEntry, PatEntry, PersonalAgentConnection, PersonalAgentConnectionsParams, PersonalAgentConnectionsResult, PersonalAgentEntry, PersonalAgentListStatus, PersonalAgentProtocol, PersonalAgentRegistryInput, PersonalAgentRegistryResult, PersonalAgentsOverview, RegenerateSecretResult, RemoveOrgMemberResult, RemovePasskeyResult, RequestEmailChangeInput, RevokeAllResult, RevokeAppResult, RevokeOrgInvitationResult, RevokeOthersResult, RevokeSessionResult, RevokeSessionsResult, RevokeTokenResult, RoleCatalogEntry, RoleListResult, SettingEntry, SettingListResult, UpdateClientInput, UpdateLoginMethodsResult, UpdateOrgInput, UpdateOrgMemberRoleResult, UpdateProfileInput, UpdateProfileResult, UpdateRoleInput, UpdateUserInput, UserLoginMethodsInput, UserSessionsResult, } from './src/client/types.js';
7
+ export type { AcceptOrgInvitationResult, AccountAgentGrant, AccountAgentsResult, AccountAppEntry, AccountAppsResult, AccountCapabilities, AccountLoginMethodsResult, AccountMe, AccountMfaStatus, AccountOrgDetail, AccountOrgEntry, AccountOrgInvitationsResult, AccountOrgsResult, AccountPasskeysResult, AccountSecurityOverview, AccountSessionEntry, AccountSessionsResult, AccountTokensResult, ActivateOrgResult, AdminClient, AdminClientListResult, AdminGrantEntry, AdminOrgDetail, AdminOrgEntry, AdminOrgInvitation, AdminOrgListResult, AdminOrgMember, AdminOverview, AdminSessionEntry, AdminUser, AdminUserListResult, ApiErrorBody, AuditEventEntry, AuditListParams, AuditListResult, ChangePasswordInput, CreateAccountOrgInput, CreateClientInput, CreatedAccountOrgResult, CreatedClientResult, CreatedOrgInvitationResult, CreatedPatResult, CreateOrgInput, CreateRoleInput, CreateTokenInput, CreateUserInput, DailyPoint, DeactivateOrgResult, DeletedResult, EmailChangeResult, ImpersonationPanel, InviteOrgMemberInput, KeysRotateInput, KeysRotateResult, KeysStatus, LeaveOrgResult, ListMeta, ManagedKeyInfo, MfaConfirmResult, MfaDisableResult, MfaEnrollResult, MfaRecoveryCodesResult, OkResult, PasskeyRegistrationOptions, PasskeySummaryEntry, PatEntry, PersonalAgentConnection, PersonalAgentConnectionsParams, PersonalAgentConnectionsResult, PersonalAgentEntry, PersonalAgentListStatus, PersonalAgentProtocol, PersonalAgentRegistryInput, PersonalAgentRegistryResult, PersonalAgentsOverview, RegenerateSecretResult, RemoveOrgMemberResult, RemovePasskeyResult, RequestEmailChangeInput, ResetPasswordResult, RevokeAllResult, RevokeAppResult, RevokeOrgInvitationResult, RevokeOthersResult, RevokeSessionResult, RevokeSessionsResult, RevokeTokenResult, RoleCatalogEntry, RoleListResult, SettingEntry, SettingListResult, UpdateClientInput, UpdateLoginMethodsResult, UpdateOrgInput, UpdateOrgMemberRoleResult, UpdateProfileInput, UpdateProfileResult, UpdateRoleInput, UpdateUserInput, UserLoginMethodsInput, UserSessionsResult, } from './src/client/types.js';
8
8
  export type { AuthenticatedProps, GuestProps, } from './src/components/authenticated.js';
9
9
  export { Authenticated, Guest } from './src/components/authenticated.js';
10
10
  export type { AuthorizedAppsProps } from './src/components/authorized_apps.js';
@@ -17,6 +17,8 @@ export type { InteractionFormProps } from './src/components/interaction_form.js'
17
17
  export { InteractionForm } from './src/components/interaction_form.js';
18
18
  export type { KeyRotationProps } from './src/components/key_rotation.js';
19
19
  export { KeyRotation } from './src/components/key_rotation.js';
20
+ export type { LastUsedBadgeProps } from './src/components/last_used_badge.js';
21
+ export { LastUsedBadge } from './src/components/last_used_badge.js';
20
22
  export type { MagicLinkButtonProps } from './src/components/magic_link_button.js';
21
23
  export { MagicLinkButton } from './src/components/magic_link_button.js';
22
24
  export type { OAuthButtonProps } from './src/components/oauth_button.js';
@@ -39,16 +41,8 @@ export type { UserProfileProps } from './src/components/user_profile.js';
39
41
  export { UserProfile } from './src/components/user_profile.js';
40
42
  export type { AuthkitConfig, AuthkitEndpoints, AuthkitIdpMode, ResolvedAuthkitConfig, } from './src/config.js';
41
43
  export { AuthkitConfigContext, buildAuthUrl, DEFAULT_CONFIG, resolveConfig, useAuthkitConfig, } from './src/config.js';
42
- export type { AuthorizedApp, UseAuthorizedAppsResult, } from './src/hooks/use_authorized_apps.js';
43
- export { useAuthorizedApps } from './src/hooks/use_authorized_apps.js';
44
44
  export type { UseCanResult } from './src/hooks/use_can.js';
45
45
  export { checkCan, invalidateCanCache, useCan } from './src/hooks/use_can.js';
46
- export type { OrgInvitationEntry, UseOrgInvitationsResult, } from './src/hooks/use_org_invitations.js';
47
- export { useOrgInvitations } from './src/hooks/use_org_invitations.js';
48
- export type { ActiveOrgDetail, OrgMemberEntry, UseOrganizationResult, } from './src/hooks/use_organization.js';
49
- export { useOrganization } from './src/hooks/use_organization.js';
50
- export type { OrgEntry, UseOrganizationsResult, } from './src/hooks/use_organizations.js';
51
- export { useOrganizations } from './src/hooks/use_organizations.js';
52
46
  export type { UsePasskeyAssertionOptions, UsePasskeyAssertionResult, } from './src/hooks/use_passkey_assertion.js';
53
47
  export { usePasskeyAssertion } from './src/hooks/use_passkey_assertion.js';
54
48
  export type { UsePasskeyAutofillOptions } from './src/hooks/use_passkey_autofill.js';
@@ -59,20 +53,15 @@ export type { UsePasskeyRegistrationOptions, UsePasskeyRegistrationResult, } fro
59
53
  export { usePasskeyRegistration } from './src/hooks/use_passkey_registration.js';
60
54
  export type { PasswordScorer, PasswordStrengthResult, PasswordStrengthScore, UsePasswordStrengthOptions, } from './src/hooks/use_password_strength.js';
61
55
  export { heuristicScorer, usePasswordStrength, } from './src/hooks/use_password_strength.js';
62
- export type { ProfileUpdate, UseProfileResult, } from './src/hooks/use_profile.js';
63
- export { useProfile } from './src/hooks/use_profile.js';
64
- export type { ResourceState } from './src/hooks/use_resource.js';
65
- export { jsonRequest, useResource } from './src/hooks/use_resource.js';
66
- export type { AuthSession, UseSessionsResult, } from './src/hooks/use_sessions.js';
67
- export { useSessions } from './src/hooks/use_sessions.js';
56
+ export { jsonRequest } from './src/hooks/use_resource.js';
68
57
  export type { SignInOptions } from './src/hooks/use_sign_in.js';
69
58
  export { useSignIn } from './src/hooks/use_sign_in.js';
70
59
  export type { SignOutOptions } from './src/hooks/use_sign_out.js';
71
60
  export { useSignOut } from './src/hooks/use_sign_out.js';
72
- export type { UseSwitchOrganizationResult } from './src/hooks/use_switch_organization.js';
73
- export { useSwitchOrganization } from './src/hooks/use_switch_organization.js';
74
61
  export type { UseUserResult } from './src/hooks/use_user.js';
75
62
  export { useUser } from './src/hooks/use_user.js';
63
+ export type { LastLoginMethod } from './src/interaction/last_used.js';
64
+ export { isLastUsedLoginMethod } from './src/interaction/last_used.js';
76
65
  export type { InteractionPostStep, InteractionUrls, } from './src/interaction/urls.js';
77
66
  export { interactionUrls, OTP_CODE_FIELD, oauthRedirectUrl } from './src/interaction/urls.js';
78
67
  export type { AuthenticatePasskeyOptions, PasskeyCeremonyDeps, PasskeyRegistrationDeps, RegisterPasskeyOptions, StartAuthenticationFn, StartRegistrationFn, SubmitPasskeyVerificationOptions, } from './src/passkey/authenticate.js';
@@ -85,7 +74,7 @@ export type { RunPasskeyAssertionDeps, RunPasskeyFlowOptions, RunPasskeyRegistra
85
74
  export { runPasskeyAssertion, runPasskeyRegistration } from './src/passkey/sudo.js';
86
75
  export type { AuthProviderProps } from './src/provider.js';
87
76
  export { AuthContext, AuthProvider } from './src/provider.js';
88
- export { useAccountAcceptOrgInvitationMutationOptions, useAccountActivateOrgMutationOptions, useAccountCreateOrgMutationOptions, useAccountDeactivateOrgMutationOptions, useAccountInviteOrgMemberMutationOptions, useAccountLeaveOrgMutationOptions, useAccountOrgInvitationsQueryOptions, useAccountOrgQueryOptions, useAccountOrgsQueryOptions, useAccountRemoveOrgMemberMutationOptions, useAccountRevokeAllSessionsMutationOptions, useAccountRevokeOrgInvitationMutationOptions, useAccountSessionsQueryOptions, useAccountUpdateOrgMemberRoleMutationOptions, useAppsQueryOptions, useCancelEmailChangeMutationOptions, useChangePasswordMutationOptions, useConfirmTotpMutationOptions, useCreateTokenMutationOptions, useDisableTotpMutationOptions, useEmailChangeMutationOptions, useEnrollTotpMutationOptions, useLoginMethodsQueryOptions, useMeQueryOptions, useMfaQueryOptions, usePasskeysQueryOptions, useRegenerateRecoveryCodesMutationOptions, useRegisterPasskeyMutationOptions, useRemovePasskeyMutationOptions, useRevokeAppMutationOptions, useRevokeOtherSessionsMutationOptions, useRevokeSessionMutationOptions, useRevokeTokenMutationOptions, useSecurityQueryOptions, useTokensQueryOptions, useUpdateLoginMethodsMutationOptions, useUpdateProfileMutationOptions, } from './src/queries/account/index.js';
77
+ export { useAccountAcceptOrgInvitationMutationOptions, useAccountActivateOrgMutationOptions, useAccountAgentsQueryOptions, useAccountCreateOrgMutationOptions, useAccountDeactivateOrgMutationOptions, useAccountInviteOrgMemberMutationOptions, useAccountLeaveOrgMutationOptions, useAccountOrgInvitationsQueryOptions, useAccountOrgQueryOptions, useAccountOrgsQueryOptions, useAccountRemoveOrgMemberMutationOptions, useAccountRevokeAllSessionsMutationOptions, useAccountRevokeOrgInvitationMutationOptions, useAccountSessionsQueryOptions, useAccountUpdateOrgMemberRoleMutationOptions, useAppsQueryOptions, useCancelEmailChangeMutationOptions, useChangePasswordMutationOptions, useConfirmTotpMutationOptions, useCreateTokenMutationOptions, useDisableTotpMutationOptions, useEmailChangeMutationOptions, useEnrollTotpMutationOptions, useLoginMethodsQueryOptions, useMeQueryOptions, useMfaQueryOptions, usePasskeysQueryOptions, useRegenerateRecoveryCodesMutationOptions, useRegisterPasskeyMutationOptions, useRemovePasskeyMutationOptions, useRevokeAccountAgentMutationOptions, useRevokeAppMutationOptions, useRevokeOtherSessionsMutationOptions, useRevokeSessionMutationOptions, useRevokeTokenMutationOptions, useSecurityQueryOptions, useTokensQueryOptions, useUpdateLoginMethodsMutationOptions, useUpdateProfileMutationOptions, } from './src/queries/account/index.js';
89
78
  export { useAddOrgMemberMutationOptions, useAuditQueryOptions, useClientQueryOptions, useClientsQueryOptions, useCreateClientMutationOptions, useCreateOrgInvitationMutationOptions, useCreateOrgMutationOptions, useCreateRoleMutationOptions, useCreateUserMutationOptions, useDeleteClientMutationOptions, useDeleteOrgMutationOptions, useDeleteRoleMutationOptions, useDeleteUserMutationOptions, useDisableUserMutationOptions, useEnableUserMutationOptions, useImpersonationQueryOptions, useKeysQueryOptions, useOrgQueryOptions, useOrgsQueryOptions, useOverviewQueryOptions, usePersonalAgentConnectionsQueryOptions, usePersonalAgentsQueryOptions, useRegenerateClientSecretMutationOptions, useRemoveOrgMemberMutationOptions, useRemovePersonalAgentEntryMutationOptions, useRemoveSettingMutationOptions, useResetPasswordMutationOptions, useRevokeAllSessionsMutationOptions, useRevokeOrgInvitationMutationOptions, useRevokePersonalAgentConnectionMutationOptions, useRevokeUserSessionsMutationOptions, useRolesQueryOptions, useRotateKeysMutationOptions, useSessionsQueryOptions, useSetPersonalAgentStatusMutationOptions, useSetSettingMutationOptions, useSettingsQueryOptions, useUpdateClientMutationOptions, useUpdateOrgMemberRoleMutationOptions, useUpdateOrgMutationOptions, useUpdateRoleMutationOptions, useUpdateUserMutationOptions, useUserQueryOptions, useUserSessionsQueryOptions, useUsersQueryOptions, } from './src/queries/admin/index.js';
90
79
  export { authkitKeys } from './src/queries/keys.js';
91
80
  export { hasAllGlobalRoles, hasAnyGlobalRole, hasGlobalRole, } from './src/roles.js';
package/build/index.js CHANGED
@@ -7,6 +7,7 @@ export { Avatar } from './src/components/avatar.js';
7
7
  export { CanPermission } from './src/components/can_permission.js';
8
8
  export { InteractionForm } from './src/components/interaction_form.js';
9
9
  export { KeyRotation } from './src/components/key_rotation.js';
10
+ export { LastUsedBadge } from './src/components/last_used_badge.js';
10
11
  export { MagicLinkButton } from './src/components/magic_link_button.js';
11
12
  export { OAuthButton } from './src/components/oauth_button.js';
12
13
  export { OrganizationProfile } from './src/components/organization_profile.js';
@@ -18,30 +19,24 @@ export { SignOutButton } from './src/components/sign_out_button.js';
18
19
  export { UserButton } from './src/components/user_button.js';
19
20
  export { UserProfile } from './src/components/user_profile.js';
20
21
  export { AuthkitConfigContext, buildAuthUrl, DEFAULT_CONFIG, resolveConfig, useAuthkitConfig, } from './src/config.js';
21
- export { useAuthorizedApps } from './src/hooks/use_authorized_apps.js';
22
22
  export { checkCan, invalidateCanCache, useCan } from './src/hooks/use_can.js';
23
- export { useOrgInvitations } from './src/hooks/use_org_invitations.js';
24
- export { useOrganization } from './src/hooks/use_organization.js';
25
- export { useOrganizations } from './src/hooks/use_organizations.js';
26
23
  export { usePasskeyAssertion } from './src/hooks/use_passkey_assertion.js';
27
24
  export { usePasskeyAutofill } from './src/hooks/use_passkey_autofill.js';
28
25
  export { usePasskeyLogin } from './src/hooks/use_passkey_login.js';
29
26
  export { usePasskeyRegistration } from './src/hooks/use_passkey_registration.js';
30
27
  export { heuristicScorer, usePasswordStrength, } from './src/hooks/use_password_strength.js';
31
- export { useProfile } from './src/hooks/use_profile.js';
32
- export { jsonRequest, useResource } from './src/hooks/use_resource.js';
33
- export { useSessions } from './src/hooks/use_sessions.js';
28
+ export { jsonRequest } from './src/hooks/use_resource.js';
34
29
  export { useSignIn } from './src/hooks/use_sign_in.js';
35
30
  export { useSignOut } from './src/hooks/use_sign_out.js';
36
- export { useSwitchOrganization } from './src/hooks/use_switch_organization.js';
37
31
  export { useUser } from './src/hooks/use_user.js';
32
+ export { isLastUsedLoginMethod } from './src/interaction/last_used.js';
38
33
  export { interactionUrls, OTP_CODE_FIELD, oauthRedirectUrl } from './src/interaction/urls.js';
39
34
  export { authenticatePasskey, loadStartAuthentication, loadStartRegistration, registerPasskey, submitPasskeyVerification, } from './src/passkey/authenticate.js';
40
35
  export { submitClassicForm } from './src/passkey/classic_form.js';
41
36
  export { registerPasskeyJson } from './src/passkey/json_registration.js';
42
37
  export { runPasskeyAssertion, runPasskeyRegistration } from './src/passkey/sudo.js';
43
38
  export { AuthContext, AuthProvider } from './src/provider.js';
44
- export { useAccountAcceptOrgInvitationMutationOptions, useAccountActivateOrgMutationOptions, useAccountCreateOrgMutationOptions, useAccountDeactivateOrgMutationOptions, useAccountInviteOrgMemberMutationOptions, useAccountLeaveOrgMutationOptions, useAccountOrgInvitationsQueryOptions, useAccountOrgQueryOptions, useAccountOrgsQueryOptions, useAccountRemoveOrgMemberMutationOptions, useAccountRevokeAllSessionsMutationOptions, useAccountRevokeOrgInvitationMutationOptions, useAccountSessionsQueryOptions, useAccountUpdateOrgMemberRoleMutationOptions, useAppsQueryOptions, useCancelEmailChangeMutationOptions, useChangePasswordMutationOptions, useConfirmTotpMutationOptions, useCreateTokenMutationOptions, useDisableTotpMutationOptions, useEmailChangeMutationOptions, useEnrollTotpMutationOptions, useLoginMethodsQueryOptions, useMeQueryOptions, useMfaQueryOptions, usePasskeysQueryOptions, useRegenerateRecoveryCodesMutationOptions, useRegisterPasskeyMutationOptions, useRemovePasskeyMutationOptions, useRevokeAppMutationOptions, useRevokeOtherSessionsMutationOptions, useRevokeSessionMutationOptions, useRevokeTokenMutationOptions, useSecurityQueryOptions, useTokensQueryOptions, useUpdateLoginMethodsMutationOptions, useUpdateProfileMutationOptions, } from './src/queries/account/index.js';
39
+ export { useAccountAcceptOrgInvitationMutationOptions, useAccountActivateOrgMutationOptions, useAccountAgentsQueryOptions, useAccountCreateOrgMutationOptions, useAccountDeactivateOrgMutationOptions, useAccountInviteOrgMemberMutationOptions, useAccountLeaveOrgMutationOptions, useAccountOrgInvitationsQueryOptions, useAccountOrgQueryOptions, useAccountOrgsQueryOptions, useAccountRemoveOrgMemberMutationOptions, useAccountRevokeAllSessionsMutationOptions, useAccountRevokeOrgInvitationMutationOptions, useAccountSessionsQueryOptions, useAccountUpdateOrgMemberRoleMutationOptions, useAppsQueryOptions, useCancelEmailChangeMutationOptions, useChangePasswordMutationOptions, useConfirmTotpMutationOptions, useCreateTokenMutationOptions, useDisableTotpMutationOptions, useEmailChangeMutationOptions, useEnrollTotpMutationOptions, useLoginMethodsQueryOptions, useMeQueryOptions, useMfaQueryOptions, usePasskeysQueryOptions, useRegenerateRecoveryCodesMutationOptions, useRegisterPasskeyMutationOptions, useRemovePasskeyMutationOptions, useRevokeAccountAgentMutationOptions, useRevokeAppMutationOptions, useRevokeOtherSessionsMutationOptions, useRevokeSessionMutationOptions, useRevokeTokenMutationOptions, useSecurityQueryOptions, useTokensQueryOptions, useUpdateLoginMethodsMutationOptions, useUpdateProfileMutationOptions, } from './src/queries/account/index.js';
45
40
  export { useAddOrgMemberMutationOptions, useAuditQueryOptions, useClientQueryOptions, useClientsQueryOptions, useCreateClientMutationOptions, useCreateOrgInvitationMutationOptions, useCreateOrgMutationOptions, useCreateRoleMutationOptions, useCreateUserMutationOptions, useDeleteClientMutationOptions, useDeleteOrgMutationOptions, useDeleteRoleMutationOptions, useDeleteUserMutationOptions, useDisableUserMutationOptions, useEnableUserMutationOptions, useImpersonationQueryOptions, useKeysQueryOptions, useOrgQueryOptions, useOrgsQueryOptions, useOverviewQueryOptions, usePersonalAgentConnectionsQueryOptions, usePersonalAgentsQueryOptions, useRegenerateClientSecretMutationOptions, useRemoveOrgMemberMutationOptions, useRemovePersonalAgentEntryMutationOptions, useRemoveSettingMutationOptions, useResetPasswordMutationOptions, useRevokeAllSessionsMutationOptions, useRevokeOrgInvitationMutationOptions, useRevokePersonalAgentConnectionMutationOptions, useRevokeUserSessionsMutationOptions, useRolesQueryOptions, useRotateKeysMutationOptions, useSessionsQueryOptions, useSetPersonalAgentStatusMutationOptions, useSetSettingMutationOptions, useSettingsQueryOptions, useUpdateClientMutationOptions, useUpdateOrgMemberRoleMutationOptions, useUpdateOrgMutationOptions, useUpdateRoleMutationOptions, useUpdateUserMutationOptions, useUserQueryOptions, useUserSessionsQueryOptions, useUsersQueryOptions, } from './src/queries/admin/index.js';
46
41
  export { authkitKeys } from './src/queries/keys.js';
47
42
  export { hasAllGlobalRoles, hasAnyGlobalRole, hasGlobalRole, } from './src/roles.js';
@@ -1,4 +1,4 @@
1
- import type { AcceptOrgInvitationResult, AccountAppsResult, AccountLoginMethodsResult, AccountMe, AccountMfaStatus, AccountOrgDetail, AccountOrgInvitationsResult, AccountOrgsResult, AccountPasskeysResult, AccountSecurityOverview, AccountSessionsResult, AccountTokensResult, ActivateOrgResult, AdminClient, AdminClientListResult, AdminOrgDetail, AdminOrgEntry, AdminOrgInvitation, AdminOrgListResult, AdminOverview, AdminUser, AdminUserListResult, AuditListParams, AuditListResult, ChangePasswordInput, CreateAccountOrgInput, CreateClientInput, CreatedAccountOrgResult, CreatedClientResult, CreatedOrgInvitationResult, CreatedPatResult, CreateOrgInput, CreateRoleInput, CreateTokenInput, CreateUserInput, DeactivateOrgResult, EmailChangeResult, ImpersonationPanel, InviteOrgMemberInput, KeysRotateInput, KeysRotateResult, KeysStatus, LeaveOrgResult, MfaConfirmResult, MfaDisableResult, MfaEnrollResult, MfaRecoveryCodesResult, OkResult, PasskeyRegistrationOptions, PersonalAgentConnectionsParams, PersonalAgentConnectionsResult, PersonalAgentRegistryInput, PersonalAgentRegistryResult, PersonalAgentsOverview, RegenerateSecretResult, RemoveOrgMemberResult, RemovePasskeyResult, RequestEmailChangeInput, RevokeAllResult, RevokeAppResult, RevokeOrgInvitationResult, RevokeOthersResult, RevokeSessionResult, RevokeSessionsResult, RevokeTokenResult, RoleCatalogEntry, RoleListResult, SettingEntry, SettingListResult, UpdateClientInput, UpdateLoginMethodsResult, UpdateOrgInput, UpdateOrgMemberRoleResult, UpdateProfileInput, UpdateProfileResult, UpdateRoleInput, UpdateUserInput, UserLoginMethodsInput, UserSessionsResult } from './types.js';
1
+ import type { AcceptOrgInvitationResult, AccountAgentsResult, AccountAppsResult, AccountLoginMethodsResult, AccountMe, AccountMfaStatus, AccountOrgDetail, AccountOrgInvitationsResult, AccountOrgsResult, AccountPasskeysResult, AccountSecurityOverview, AccountSessionsResult, AccountTokensResult, ActivateOrgResult, AdminClient, AdminClientListResult, AdminOrgDetail, AdminOrgEntry, AdminOrgInvitation, AdminOrgListResult, AdminOverview, AdminUser, AdminUserListResult, AuditListParams, AuditListResult, ChangePasswordInput, CreateAccountOrgInput, CreateClientInput, CreatedAccountOrgResult, CreatedClientResult, CreatedOrgInvitationResult, CreatedPatResult, CreateOrgInput, CreateRoleInput, CreateTokenInput, CreateUserInput, DeactivateOrgResult, DeletedResult, EmailChangeResult, ImpersonationPanel, InviteOrgMemberInput, KeysRotateInput, KeysRotateResult, KeysStatus, LeaveOrgResult, MfaConfirmResult, MfaDisableResult, MfaEnrollResult, MfaRecoveryCodesResult, OkResult, PasskeyRegistrationOptions, PersonalAgentConnectionsParams, PersonalAgentConnectionsResult, PersonalAgentRegistryInput, PersonalAgentRegistryResult, PersonalAgentsOverview, RegenerateSecretResult, RemoveOrgMemberResult, RemovePasskeyResult, RequestEmailChangeInput, ResetPasswordResult, RevokeAllResult, RevokeAppResult, RevokeOrgInvitationResult, RevokeOthersResult, RevokeSessionResult, RevokeSessionsResult, RevokeTokenResult, RoleCatalogEntry, RoleListResult, SettingEntry, SettingListResult, UpdateClientInput, UpdateLoginMethodsResult, UpdateOrgInput, UpdateOrgMemberRoleResult, UpdateProfileInput, UpdateProfileResult, UpdateRoleInput, UpdateUserInput, UserLoginMethodsInput, UserSessionsResult } from './types.js';
2
2
  export declare class AuthkitClientError extends Error {
3
3
  readonly status: number;
4
4
  readonly code?: string | undefined;
@@ -39,22 +39,10 @@ declare class AuthkitClient {
39
39
  invited?: boolean;
40
40
  }>;
41
41
  readonly update: (id: string, data: UpdateUserInput) => Promise<AdminUser>;
42
- readonly disable: (id: string) => Promise<{
43
- id: string;
44
- disabled: true;
45
- }>;
46
- readonly enable: (id: string) => Promise<{
47
- id: string;
48
- disabled: false;
49
- }>;
50
- readonly resetPassword: (id: string) => Promise<{
51
- id: string;
52
- sent: boolean;
53
- }>;
54
- readonly remove: (id: string) => Promise<{
55
- id: string;
56
- deleted: boolean;
57
- }>;
42
+ readonly disable: (id: string) => Promise<AdminUser>;
43
+ readonly enable: (id: string) => Promise<AdminUser>;
44
+ readonly resetPassword: (id: string) => Promise<ResetPasswordResult>;
45
+ readonly remove: (id: string) => Promise<DeletedResult>;
58
46
  readonly getSessions: (id: string) => Promise<UserSessionsResult>;
59
47
  readonly revokeSessions: (id: string) => Promise<RevokeSessionsResult>;
60
48
  };
@@ -67,10 +55,7 @@ declare class AuthkitClient {
67
55
  readonly get: (id: string) => Promise<AdminClient>;
68
56
  readonly create: (data?: CreateClientInput) => Promise<CreatedClientResult>;
69
57
  readonly update: (id: string, data?: UpdateClientInput) => Promise<AdminClient>;
70
- readonly remove: (id: string) => Promise<{
71
- clientId: string;
72
- deleted: boolean;
73
- }>;
58
+ readonly remove: (id: string) => Promise<DeletedResult>;
74
59
  readonly regenerateSecret: (id: string) => Promise<RegenerateSecretResult>;
75
60
  };
76
61
  readonly roles: {
@@ -162,6 +147,12 @@ declare class AuthkitClient {
162
147
  readonly list: () => Promise<AccountAppsResult>;
163
148
  readonly revoke: (clientId: string) => Promise<RevokeAppResult>;
164
149
  };
150
+ readonly agents: {
151
+ readonly list: () => Promise<AccountAgentsResult>;
152
+ readonly revoke: (grantId: string) => Promise<{
153
+ ok: true;
154
+ }>;
155
+ };
165
156
  readonly mfa: (() => Promise<AccountMfaStatus>) & {
166
157
  enroll: () => Promise<MfaEnrollResult>;
167
158
  confirm: (code: string) => Promise<MfaConfirmResult>;
@@ -13,16 +13,6 @@ export class AuthkitClientError extends Error {
13
13
  isUnauthorized;
14
14
  }
15
15
  const MUTATING = new Set(['POST', 'PUT', 'PATCH', 'DELETE']);
16
- function resolveWindow() {
17
- try {
18
- if (typeof window === 'undefined')
19
- return null;
20
- return window.__AUTHKIT__ ?? null;
21
- }
22
- catch {
23
- return null;
24
- }
25
- }
26
16
  function toQueryString(params) {
27
17
  const parts = [];
28
18
  for (const [k, v] of Object.entries(params)) {
@@ -38,10 +28,9 @@ class AuthkitClient {
38
28
  _csrfToken;
39
29
  _fetch;
40
30
  constructor(opts = {}) {
41
- const win = resolveWindow();
42
- this._baseUrl = opts.baseUrl ?? win?.endpoints.api;
31
+ this._baseUrl = opts.baseUrl;
43
32
  this._accountBaseUrl = opts.accountBaseUrl ?? '/account/api';
44
- this._csrfToken = opts.csrfToken ?? win?.csrfToken;
33
+ this._csrfToken = opts.csrfToken;
45
34
  this._fetch = opts.fetch ?? globalThis.fetch.bind(globalThis);
46
35
  }
47
36
  async request(method, url, body, extraHeaders) {
@@ -101,8 +90,7 @@ class AuthkitClient {
101
90
  }
102
91
  b(path) {
103
92
  if (!this._baseUrl) {
104
- throw new Error('[AuthkitClient] admin base URL ausente: passe `baseUrl` em createAuthkitClient({ baseUrl }) ' +
105
- 'ou use o client onde window.__AUTHKIT__ está injetado (console admin). ' +
93
+ throw new Error('[AuthkitClient] admin base URL ausente: passe `baseUrl` em createAuthkitClient({ baseUrl }). ' +
106
94
  'Telas que só usam client.account.* não precisam de baseUrl.');
107
95
  }
108
96
  return `${this._baseUrl}${path}`;
@@ -213,6 +201,10 @@ class AuthkitClient {
213
201
  list: () => this.get(this.a('/apps')),
214
202
  revoke: (clientId) => this.delete(this.a(`/apps/${encodeURIComponent(clientId)}`)),
215
203
  },
204
+ agents: {
205
+ list: () => this.get(this.a('/agents')),
206
+ revoke: (grantId) => this.delete(this.a(`/agents/${encodeURIComponent(grantId)}`)),
207
+ },
216
208
  mfa: Object.assign(() => this.get(this.a('/mfa')), {
217
209
  enroll: () => this.post(this.a('/mfa/totp/enroll')),
218
210
  confirm: (code) => this.post(this.a('/mfa/totp/confirm'), { code }),
@@ -25,14 +25,12 @@ export interface AdminUserListResult {
25
25
  }
26
26
  export interface CreateUserInput {
27
27
  email: string;
28
- name?: string | null;
29
- password?: string | null;
28
+ name?: string;
29
+ password?: string;
30
30
  invite?: boolean;
31
31
  }
32
32
  export interface UpdateUserInput {
33
33
  globalRoles?: string[];
34
- name?: string | null;
35
- avatarUrl?: string | null;
36
34
  }
37
35
  export interface AdminSessionEntry {
38
36
  id: string;
@@ -71,13 +69,15 @@ export interface AdminSessionListResult {
71
69
  export interface AdminClient {
72
70
  clientId: string;
73
71
  confidential: boolean;
74
- grants: string[];
72
+ grantTypes: string[];
75
73
  redirectUris: string[];
76
74
  postLogoutRedirectUris: string[];
77
75
  tokenEndpointAuthMethod: string;
78
76
  applicationType?: 'web' | 'native';
79
77
  backchannelLogoutUri: string | null;
80
78
  backchannelLogoutSessionRequired: boolean;
79
+ clientName: string | null;
80
+ logoUri: string | null;
81
81
  }
82
82
  export interface AdminClientListResult {
83
83
  data: AdminClient[];
@@ -100,8 +100,14 @@ export interface CreateClientInput {
100
100
  applicationType?: 'web' | 'native';
101
101
  backchannelLogoutUri?: string;
102
102
  backchannelLogoutSessionRequired?: boolean;
103
- }
104
- export type UpdateClientInput = CreateClientInput;
103
+ clientName?: string;
104
+ logoUri?: string;
105
+ }
106
+ export type UpdateClientInput = Omit<CreateClientInput, 'backchannelLogoutUri' | 'clientName' | 'logoUri'> & {
107
+ backchannelLogoutUri?: string | null;
108
+ clientName?: string | null;
109
+ logoUri?: string | null;
110
+ };
105
111
  export interface RoleCatalogEntry {
106
112
  name: string;
107
113
  description?: string;
@@ -188,6 +194,15 @@ export interface SettingEntry {
188
194
  }
189
195
  export interface SettingListResult {
190
196
  data: SettingEntry[];
197
+ locked: string[];
198
+ }
199
+ export interface DeletedResult {
200
+ ok: true;
201
+ deleted: string;
202
+ }
203
+ export interface ResetPasswordResult {
204
+ ok: true;
205
+ email: string;
191
206
  }
192
207
  export interface ImpersonationPanel {
193
208
  targetUserId: string;
@@ -308,6 +323,8 @@ export interface RevokeAllResult {
308
323
  }
309
324
  export interface AccountAppEntry {
310
325
  clientId: string;
326
+ name: string;
327
+ logoUrl: string | null;
311
328
  accessTokens: number;
312
329
  refreshTokens: number;
313
330
  }
@@ -315,6 +332,21 @@ export interface AccountAppsResult {
315
332
  supported: boolean;
316
333
  apps: AccountAppEntry[];
317
334
  }
335
+ export interface AccountAgentGrant {
336
+ id: string;
337
+ clientId: string;
338
+ protocol: 'pact' | 'poppy';
339
+ scopes: Array<{
340
+ id: string;
341
+ description: string;
342
+ }>;
343
+ createdAt: string;
344
+ updatedAt: string;
345
+ expiresAt: string;
346
+ }
347
+ export interface AccountAgentsResult {
348
+ agents: AccountAgentGrant[];
349
+ }
318
350
  export interface RevokeAppResult {
319
351
  ok: boolean;
320
352
  [key: string]: unknown;
@@ -1,29 +1,33 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
2
3
  import { createElement } from 'react';
3
4
  import { useAuthkitConfig } from '../config.js';
4
- import { useAuthorizedApps } from '../hooks/use_authorized_apps.js';
5
+ import { useAppsQueryOptions, useRevokeAppMutationOptions } from '../queries/account/index.js';
6
+ import { authkitKeys } from '../queries/keys.js';
5
7
  function AuthorizedAppsInner({ className, revokeLabel = 'Revogar', emptyLabel = 'Nenhum app autorizado.', }) {
6
- const { data, loading, error, actions } = useAuthorizedApps();
7
- if (loading && !data) {
8
+ const qc = useQueryClient();
9
+ const query = useQuery(useAppsQueryOptions());
10
+ const revoke = useMutation({
11
+ ...useRevokeAppMutationOptions(),
12
+ onSuccess: () => qc.invalidateQueries({ queryKey: authkitKeys.account.apps() }),
13
+ });
14
+ if (query.isLoading && !query.data) {
8
15
  return createElement('div', { className: 'authkit-apps__loading' }, 'Carregando…');
9
16
  }
10
- if (error) {
11
- return createElement('p', { className: 'authkit-error', role: 'alert' }, error.message);
17
+ if (query.error) {
18
+ return createElement('p', { className: 'authkit-error', role: 'alert' }, query.error.message);
12
19
  }
13
- const apps = data ?? [];
20
+ const apps = query.data?.apps ?? [];
14
21
  if (apps.length === 0) {
15
22
  return createElement('p', { className: 'authkit-apps__empty' }, emptyLabel);
16
23
  }
17
24
  return createElement('ul', { className: ['authkit-apps', className].filter(Boolean).join(' ') }, ...apps.map((app) => createElement('li', { key: app.clientId, className: 'authkit-apps__item' }, createElement('div', { className: 'authkit-apps__info' }, app.logoUrl
18
- ? createElement('img', {
19
- className: 'authkit-apps__logo',
20
- src: app.logoUrl,
21
- alt: '',
22
- })
23
- : null, createElement('span', { className: 'authkit-apps__name' }, app.name ?? app.clientId)), createElement('button', {
25
+ ? createElement('img', { className: 'authkit-apps__logo', src: app.logoUrl, alt: '' })
26
+ : null, createElement('span', { className: 'authkit-apps__name' }, app.name || app.clientId)), createElement('button', {
24
27
  type: 'button',
25
28
  className: 'authkit-button authkit-button--danger',
26
- onClick: () => void actions.revoke(app.clientId),
29
+ disabled: revoke.isPending,
30
+ onClick: () => revoke.mutate(app.clientId),
27
31
  }, revokeLabel))));
28
32
  }
29
33
  export function AuthorizedApps(props) {