(Breaking change) Switch between set password and change password on the settings page. (#15582)

Here is what the PR does:

- Surface password state in validatePasswordResetToken, returning
hasPassword so the client can tell whether a user is setting or changing
their password.
- Consume that flag throughout the front end (mock data, stories,
GraphQL types) and update the Reset/Set Password modal to swap the
heading/button label and success toast accordingly.
- After a successful password set/reset, immediately update the
logged-in user’s hasPassword flag so the Settings screen reflects the
new state without a reload.

Modal has two states now - reset password modal uses change password
state since it made intuitive sense.

<p align="center">
<img width="404" height="397" alt="image"
src="https://github.com/user-attachments/assets/c54cc581-1248-4395-833d-0202758e1947"
/>
</p>

<p align="center">
<img width="403" height="393" alt="image"
src="https://github.com/user-attachments/assets/d8a39a95-27e6-4037-86f2-1f74176002ba"
/>
</p>

---------

Co-authored-by: Félix Malfait <felix.malfait@gmail.com>
This commit is contained in:
Abdullah.
2025-11-05 15:29:37 +05:00
committed by GitHub
parent cc7343a8f2
commit 0fcfcec426
80 changed files with 756 additions and 358 deletions
@@ -28,6 +28,7 @@ type MockedUser = Pick<
| 'onboardingStatus'
| 'userVars'
| 'availableWorkspaces'
| 'hasPassword'
> & {
workspaceMember: WorkspaceMember | null;
locale: string;
@@ -186,6 +187,7 @@ export const mockedUserData: MockedUser = {
lastName: 'Test',
canAccessFullAdminPanel: false,
canImpersonate: false,
hasPassword: true,
supportUserHash:
'a95afad9ff6f0b364e2a3fd3e246a1a852c22b6e55a3ca33745a86c201f9c10d',
workspaceMember: mockedWorkspaceMemberData,
@@ -242,6 +244,7 @@ export const mockedOnboardingUserData = (
email: 'workspace-onboarding@test.com',
firstName: '',
lastName: '',
hasPassword: false,
canAccessFullAdminPanel: false,
canImpersonate: false,
supportUserHash: