Skip to content

Port React profile fixes to Vue; fix panelId and connected-accounts error state - #15

Merged
fadymondy merged 2 commits into
masterfrom
fix/stability
Sep 15, 2026
Merged

fadymondy merged 2 commits into
masterfrom
fix/stability

Conversation

@fadymondy

Copy link
Copy Markdown
Contributor

Vue ports of 6c6bfbe

  • Confirm before deleting the account (onBefore on <Form>; the previous @submit confirm never ran).
  • Passkey registration sends excludeCredentials again, so the same device can't be registered twice; debug log removed.
  • The 2FA method restored from setup data is no longer overwritten by the first provider on mount.
  • Passkey delete URL only strips the trailing /register.
  • Sessions default to an empty list when the response has none.
  • AuthSocialProvider matches the server payload (icon, colorClasses) and is used by SocialLogin and BottomAuthHook.

Both stacks

  • panelId: TwoFactor, Sessions, API tokens, Passkeys and Connected accounts sections accept an optional panelId, falling back to the page's top-level panelId prop (then 'user'); ProfilePage forwards it. Previously non-user panels called /user/profile/....
  • ConnectedAccounts: a failed load now shows only the error instead of "no providers" plus the error. Action errors on a loaded list are still shown below it.

Note: the composables still build URLs as /{panelId}/profile/..., while routes are registered under the panel path. This works when id and path match; server-provided URLs would be the complete fix.

Verification

  • vendor/bin/pest: 38 passed
  • npx tsc --noEmit -p tsconfig.laravilt.json: 0 errors

🤖 Generated with Claude Code

…s error state

Vue ports of 6c6bfbe:
- Confirm before the account-deletion DELETE visit (onBefore; the old
  @submit handler never ran because <Form> owns submit).
- Send excludeCredentials when registering a passkey so the same
  authenticator cannot be registered twice; drop the debug log.
- Keep the 2FA method restored from setup data instead of resetting it
  to the first provider on mount.
- Only strip the trailing /register when building the passkey delete URL.
- Default sessions to an empty array when the response has none.
- Align AuthSocialProvider with the provider payload (icon, colorClasses)
  and use it in SocialLogin and BottomAuthHook.

Both stacks:
- Profile sections take an optional panelId, falling back to the page's
  top-level panelId prop, instead of always calling the 'user' panel;
  ProfilePage forwards it.
- ConnectedAccounts: a failed load shows only the error, not
  "no providers" plus the error.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
@coderabbitai

coderabbitai Bot commented Sep 15, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 10 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: d077ed27-7db3-4ae3-98d3-da82f3caf164

📥 Commits

Reviewing files that changed from the base of the PR and between 156487f and 826c99a.

📒 Files selected for processing (29)
  • resources/js/Pages/ManagePasskeysPage.vue
  • resources/js/Pages/ProfilePage.vue
  • resources/js/components/BottomAuthHook.vue
  • resources/js/components/Profile/ApiTokensSection.vue
  • resources/js/components/Profile/ConnectedAccountsSection.vue
  • resources/js/components/Profile/DeleteAccountSection.vue
  • resources/js/components/Profile/PasskeysSection.vue
  • resources/js/components/Profile/SessionManagementSection.vue
  • resources/js/components/Profile/TwoFactorSection.vue
  • resources/js/components/SocialLogin.vue
  • resources/js/composables/useApiTokens.ts
  • resources/js/composables/useConnectedAccounts.ts
  • resources/js/composables/usePanelBase.ts
  • resources/js/composables/usePasskeys.ts
  • resources/js/composables/useSessionManagement.ts
  • resources/js/composables/useTwoFactor.ts
  • resources/js/types.ts
  • resources/react/Pages/ProfilePage.tsx
  • resources/react/components/Profile/ApiTokensSection.tsx
  • resources/react/components/Profile/ConnectedAccountsSection.tsx
  • resources/react/components/Profile/PasskeysSection.tsx
  • resources/react/components/Profile/SessionManagementSection.tsx
  • resources/react/components/Profile/TwoFactorSection.tsx
  • resources/react/composables/useApiTokens.ts
  • resources/react/composables/useConnectedAccounts.ts
  • resources/react/composables/usePanelBase.ts
  • resources/react/composables/usePasskeys.ts
  • resources/react/composables/useSessionManagement.ts
  • resources/react/composables/useTwoFactor.ts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Panel routes live under the panel path, which can differ from the panel id, so
every profile request (API tokens, sessions, passkeys, 2FA, connected accounts)
broke for a panel with a custom path. Use the path the panel package already
shares with every page, falling back to the id, in both the Vue and React
composables.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
@fadymondy
fadymondy merged commit cf2b041 into master Sep 15, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant