diff --git a/backend/prisma/migrations/20260710150528/migration.sql b/backend/prisma/migrations/20260710150528/migration.sql new file mode 100644 index 0000000..ed37579 --- /dev/null +++ b/backend/prisma/migrations/20260710150528/migration.sql @@ -0,0 +1,7 @@ +-- AlterTable +ALTER TABLE "lab_case_tasks" ALTER COLUMN "updatedAt" DROP DEFAULT, +ALTER COLUMN "prosthesisTypeCode" DROP DEFAULT, +ALTER COLUMN "workflowStepCode" DROP DEFAULT; + +-- RenameIndex +ALTER INDEX "lab_case_tasks_labCaseId_treatmentDetailId_prosthesisTypeCode_s" RENAME TO "lab_case_tasks_labCaseId_treatmentDetailId_prosthesisTypeCo_key"; diff --git a/frontend/messages/en.json b/frontend/messages/en.json index dd10824..487e65a 100644 --- a/frontend/messages/en.json +++ b/frontend/messages/en.json @@ -77,6 +77,8 @@ "confirmPassword": "Confirm password", "fullName": "Full name", "rememberMe": "Remember me", + "showPassword": "Show password", + "hidePassword": "Hide password", "forgotPassword": "Forgot your password?", "invalidCredentials": "Invalid email or password", "loginFailed": "Login failed", diff --git a/frontend/messages/fa.json b/frontend/messages/fa.json index fc29e6f..66eeacb 100644 --- a/frontend/messages/fa.json +++ b/frontend/messages/fa.json @@ -77,6 +77,8 @@ "confirmPassword": "تأیید رمز عبور", "fullName": "نام و نام خانوادگی", "rememberMe": "مرا به خاطر بسپار", + "showPassword": "نمایش رمز عبور", + "hidePassword": "پنهان کردن رمز عبور", "forgotPassword": "رمز عبور خود را فراموش کرده‌اید؟", "invalidCredentials": "ایمیل یا رمز عبور نامعتبر است", "loginFailed": "ورود ناموفق بود", diff --git a/frontend/messages/nl.json b/frontend/messages/nl.json index 699d061..271252c 100644 --- a/frontend/messages/nl.json +++ b/frontend/messages/nl.json @@ -77,6 +77,8 @@ "confirmPassword": "Bevestig wachtwoord", "fullName": "Volledige naam", "rememberMe": "Onthoud mij", + "showPassword": "Wachtwoord tonen", + "hidePassword": "Wachtwoord verbergen", "forgotPassword": "Wachtwoord vergeten?", "invalidCredentials": "Ongeldig e-mailadres of wachtwoord", "loginFailed": "Inloggen mislukt", diff --git a/frontend/scripts/build-messages.mjs b/frontend/scripts/build-messages.mjs index d832eee..ac27577 100644 --- a/frontend/scripts/build-messages.mjs +++ b/frontend/scripts/build-messages.mjs @@ -82,6 +82,8 @@ const en = { confirmPassword: 'Confirm password', fullName: 'Full name', rememberMe: 'Remember me', + showPassword: 'Show password', + hidePassword: 'Hide password', forgotPassword: 'Forgot your password?', invalidCredentials: 'Invalid email or password', loginFailed: 'Login failed', diff --git a/frontend/src/app/[locale]/(dashboard)/settings/account/page.tsx b/frontend/src/app/[locale]/(dashboard)/settings/account/page.tsx index 981e2ca..d89c954 100644 --- a/frontend/src/app/[locale]/(dashboard)/settings/account/page.tsx +++ b/frontend/src/app/[locale]/(dashboard)/settings/account/page.tsx @@ -103,6 +103,11 @@ export default function AccountSettingsPage() { } }; + const passwordToggleLabels = { + show: tAuth('showPassword'), + hide: tAuth('hidePassword'), + }; + if (!isAuthReady || !user) { return (

{tCommon('loadingEllipsis')}

@@ -139,6 +144,7 @@ export default function AccountSettingsPage() { placeholder={tAuth('passwordPlaceholder')} error={errors.currentPassword?.message} icon={} + passwordToggleLabels={passwordToggleLabels} /> )} @@ -149,6 +155,7 @@ export default function AccountSettingsPage() { placeholder={tAuth('passwordPlaceholder')} error={errors.newPassword?.message} icon={} + passwordToggleLabels={passwordToggleLabels} /> } + passwordToggleLabels={passwordToggleLabels} /> {error && ( diff --git a/frontend/src/app/[locale]/(public)/accept-invite/page.tsx b/frontend/src/app/[locale]/(public)/accept-invite/page.tsx index 5cce4df..6300b2b 100644 --- a/frontend/src/app/[locale]/(public)/accept-invite/page.tsx +++ b/frontend/src/app/[locale]/(public)/accept-invite/page.tsx @@ -93,6 +93,11 @@ function AcceptInviteContent() { } } + const passwordToggleLabels = { + show: t('showPassword'), + hide: t('hidePassword'), + }; + return (
@@ -134,12 +139,14 @@ function AcceptInviteContent() { type="password" value={password} onChange={(e) => setPassword(e.target.value)} + passwordToggleLabels={passwordToggleLabels} /> setConfirmPassword(e.target.value)} + passwordToggleLabels={passwordToggleLabels} /> + ) : undefined); + + const resolvedType = passwordToggleLabels + ? showPassword + ? 'text' + : 'password' + : type; + return (
{label && ( @@ -31,15 +76,22 @@ export const Input = forwardRef(
)} + {resolvedEndIcon && ( +
+ {resolvedEndIcon} +
+ )} +