From 1492ed45bbbe1d56a12fcb6b9e9bc624abfe7b15 Mon Sep 17 00:00:00 2001 From: VANDUY-1910 Date: Sun, 26 Apr 2026 15:14:33 +0700 Subject: [PATCH 1/2] feat(FI-06): implement UI register, login, forgot password and reset password --- frontend/public/bg.jpg | Bin 0 -> 195813 bytes frontend/src/core/constants/path.ts | 3 +- frontend/src/core/helpers/key-tanstack.ts | 3 +- frontend/src/core/services/auth.service.ts | 6 + frontend/src/core/zod/register.zod.ts | 73 ++++-- frontend/src/core/zod/reset-password.zod.ts | 12 + .../src/hooks/routes/use-router-element.tsx | 12 +- .../tanstack-query/auth/use-query-auth.ts | 20 +- frontend/src/models/auth/interfaces.ts | 1 + .../src/models/interface/auth.interface.ts | 5 + frontend/src/pages/404/PageNotFound.tsx | 162 ++++-------- .../pages/forgot-password/ForgotPassword.tsx | 112 +++++++++ frontend/src/pages/login/Login.tsx | 82 +++--- frontend/src/pages/register/Register.tsx | 235 ++++++++++------- .../pages/reset-password/ResetPassword.tsx | 182 ++++++++++++++ .../VerifyAcountEmail.tsx | 237 +++++++----------- 16 files changed, 715 insertions(+), 430 deletions(-) create mode 100644 frontend/public/bg.jpg create mode 100644 frontend/src/core/zod/reset-password.zod.ts create mode 100644 frontend/src/pages/forgot-password/ForgotPassword.tsx create mode 100644 frontend/src/pages/reset-password/ResetPassword.tsx diff --git a/frontend/public/bg.jpg b/frontend/public/bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ef547a4502b3099e59ea4b9a9482295ea704e223 GIT binary patch literal 195813 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

1C?ieK5UX0Y#@WQvul!e`Z+G3-_HyAL8V3z@v>o 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 JV9k%0{{s|K!E68k literal 0 HcmV?d00001 diff --git a/frontend/src/core/constants/path.ts b/frontend/src/core/constants/path.ts index 31db4f3..b525804 100644 --- a/frontend/src/core/constants/path.ts +++ b/frontend/src/core/constants/path.ts @@ -4,7 +4,8 @@ export const ROUTE = { LOGIN: '/login', REGISTER: '/register', VERIFY_ACCOUNT_EMAIL: '/verify-account-email', - FORGOT_PASSWORD: '/forgot-password' + FORGOT_PASSWORD: '/forgot-password', + RESET_PASSWORD: '/reset-password' }, BLOG: '/blog', PROFILE: { diff --git a/frontend/src/core/helpers/key-tanstack.ts b/frontend/src/core/helpers/key-tanstack.ts index 821254f..f6ae8fd 100644 --- a/frontend/src/core/helpers/key-tanstack.ts +++ b/frontend/src/core/helpers/key-tanstack.ts @@ -3,5 +3,6 @@ export const MUTATION_KEYS = { login: 'login', updateProfile: 'updateProfile', verifyEmail: 'verifyEmail', - resendCode: 'resendCode' + resendCode: 'resendCode', + resetPassword: 'resetPassword' } diff --git a/frontend/src/core/services/auth.service.ts b/frontend/src/core/services/auth.service.ts index cbf567e..6e15cc5 100644 --- a/frontend/src/core/services/auth.service.ts +++ b/frontend/src/core/services/auth.service.ts @@ -3,6 +3,7 @@ import { type AxiosInstance } from 'axios' import axiosClient from '@/core/services/axios-client' import { type VerifyEmailReq, + type ResetPasswordReq, type Account, type LoginResponse, type LoginApiResponse, @@ -15,6 +16,7 @@ const API_REGISTER_URL = '/auth/register' const API_REFRESH_TOKEN_URL = '/auth/refresh-token' const API_VERIFY_EMAIL_URL = '/auth/verify-email' const API_RESEND_CODE_URL = '/auth/resend-verification-email' +const API_RESET_PASSWORD_URL = '/auth/reset-password' const API_LOGOUT_URL = '/auth/logout' export type AuthApi = { @@ -23,6 +25,7 @@ export type AuthApi = { refreshToken: (refreshToken: string) => Promise verifyEmail: (params: VerifyEmailReq) => Promise resendVerificationCode: (email: string) => Promise<{ message: string }> + resetPassword: (params: ResetPasswordReq) => Promise<{ message: string }> logout: (refresh_token: string) => Promise } @@ -42,6 +45,9 @@ export const createAuthApi = (client: AxiosInstance): AuthApi => ({ resendVerificationCode(email) { return client.post(API_RESEND_CODE_URL, { email }) }, + resetPassword(params) { + return client.post(API_RESET_PASSWORD_URL, params) + }, logout(refresh_token) { return client.post(API_LOGOUT_URL, { refresh_token }) } diff --git a/frontend/src/core/zod/register.zod.ts b/frontend/src/core/zod/register.zod.ts index 3cdbb6b..b4c7c8c 100644 --- a/frontend/src/core/zod/register.zod.ts +++ b/frontend/src/core/zod/register.zod.ts @@ -4,30 +4,55 @@ import { numberConstants } from '@/core/configs/consts' import { validator } from '../helpers/validator' -export const RegisterSchema = z.object({ - name: z.string().min(numberConstants.TWO, { - message: 'Name is valid.' - }), - email: z.string().min(numberConstants.TWO, { - message: 'Email is valid.' - }), - password: z - .string() - .min(numberConstants.ONE, { - message: 'Password is required' - }) - .regex(validator.passwordRegex, { - message: 'Password must be at least 5 characters long, contain at least one uppercase letter and one number' +export const RegisterSchema = z + .object({ + name: z.string().min(numberConstants.TWO, { + message: 'Name is valid.' }), - confirmPassword: z - .string() - .min(numberConstants.ONE, { - message: 'Password is required' - }) - .regex(validator.passwordRegex, { - message: 'Password must be at least 5 characters long, contain at least one uppercase letter and one number' + email: z.string().min(numberConstants.TWO, { + message: 'Email is valid.' }), - phone: z.string().min(numberConstants.TEN, { - message: 'Phone number must be at least 10 characters.' + password: z + .string() + .min(numberConstants.ONE, { + message: 'Password is required' + }) + .regex(validator.passwordRegex, { + message: 'Password must be at least 5 characters long, contain at least one uppercase letter and one number' + }), + confirmPassword: z + .string() + .min(numberConstants.ONE, { + message: 'Password is required' + }) + .regex(validator.passwordRegex, { + message: 'Password must be at least 5 characters long, contain at least one uppercase letter and one number' + }), + phone: z.string().min(numberConstants.TEN, { + message: 'Phone number must be at least 10 characters.' + }), + role: z.enum(['client', 'lawyer'], { + message: 'Please select a role.' + }), + licenseNumber: z.string().optional(), + issuedDate: z.string().optional(), + issuedPlace: z.string().optional(), + certificate: z.any().optional(), + referralCode: z.string().optional() + }) + .superRefine((data, ctx) => { + if (data.role === 'lawyer') { + if (!data.licenseNumber) { + ctx.addIssue({ path: ['licenseNumber'], code: 'custom', message: 'Số chứng chỉ hành nghề là bắt buộc.' }) + } + if (!data.issuedDate) { + ctx.addIssue({ path: ['issuedDate'], code: 'custom', message: 'Ngày cấp là bắt buộc.' }) + } + if (!data.issuedPlace) { + ctx.addIssue({ path: ['issuedPlace'], code: 'custom', message: 'Nơi cấp là bắt buộc.' }) + } + if (!data.certificate) { + ctx.addIssue({ path: ['certificate'], code: 'custom', message: 'Chứng chỉ là bắt buộc.' }) + } + } }) -}) diff --git a/frontend/src/core/zod/reset-password.zod.ts b/frontend/src/core/zod/reset-password.zod.ts new file mode 100644 index 0000000..3cc3bdb --- /dev/null +++ b/frontend/src/core/zod/reset-password.zod.ts @@ -0,0 +1,12 @@ +import { z } from 'zod' + +export const ResetPasswordSchema = z + .object({ + email: z.string().email('Vui lòng nhập email hợp lệ'), + password: z.string().min(8, 'Mật khẩu phải có ít nhất 8 ký tự'), + confirmPassword: z.string().min(8, 'Vui lòng xác nhận mật khẩu') + }) + .refine((data) => data.password === data.confirmPassword, { + path: ['confirmPassword'], + message: 'Mật khẩu xác nhận không khớp' + }) diff --git a/frontend/src/hooks/routes/use-router-element.tsx b/frontend/src/hooks/routes/use-router-element.tsx index d091b0f..06aee6d 100644 --- a/frontend/src/hooks/routes/use-router-element.tsx +++ b/frontend/src/hooks/routes/use-router-element.tsx @@ -15,6 +15,8 @@ const HomePage = lazy(() => import('@/pages/home/HomePage')) const Login = lazy(() => import('@/pages/login/Login')) const Register = lazy(() => import('@/pages/register/Register')) const VerifyAcountEmail = lazy(() => import('@/pages/verify-account-email/VerifyAcountEmail')) +const ForgotPassword = lazy(() => import('@/pages/forgot-password/ForgotPassword')) +const ResetPassword = lazy(() => import('@/pages/reset-password/ResetPassword')) const Dashboard = lazy(() => import('@/pages/admin/dashboard')) const Users = lazy(() => import('@/pages/admin/users')) const PageNotFound = lazy(() => import('@/pages/404/PageNotFound')) @@ -22,7 +24,13 @@ const Profile = lazy(() => import('@/pages/profile/Profile')) export default function useRoutesElements() { const location = useLocation() - const isAuthPath = [ROUTE.AUTH.LOGIN, ROUTE.AUTH.REGISTER].includes(location.pathname) + const isAuthPath = [ + ROUTE.AUTH.LOGIN, + ROUTE.AUTH.REGISTER, + ROUTE.AUTH.FORGOT_PASSWORD, + ROUTE.AUTH.VERIFY_ACCOUNT_EMAIL, + ROUTE.AUTH.RESET_PASSWORD + ].includes(location.pathname) const isAdminPath = location.pathname.startsWith('/admin') const routeElements = ( @@ -31,7 +39,9 @@ export default function useRoutesElements() { } /> } /> } /> + } /> } /> + } /> {/* Client protected routes */} }> diff --git a/frontend/src/hooks/tanstack-query/auth/use-query-auth.ts b/frontend/src/hooks/tanstack-query/auth/use-query-auth.ts index 27337f3..1b74bd1 100644 --- a/frontend/src/hooks/tanstack-query/auth/use-query-auth.ts +++ b/frontend/src/hooks/tanstack-query/auth/use-query-auth.ts @@ -14,7 +14,8 @@ import { setToken, setUserToLS } from '@/core/shared/storage' import { type LoginSchema } from '@/core/zod/login.zod' import { type RegisterSchema } from '@/core/zod/register.zod' import { type VerifyAccountEmailSchema } from '@/core/zod/verify-account-email.zod' -import { type LoginApiResponse } from '@/models/interface/auth.interface' +import { type ResetPasswordSchema } from '@/core/zod/reset-password.zod' +import { type LoginApiResponse, type ResetPasswordReq } from '@/models/interface/auth.interface' const RESEND_COUNTDOWN = 60 export const useLoginAuth = () => { @@ -55,11 +56,24 @@ export const useVerifyAccountEmail = () => { return useMutation({ mutationKey: [MUTATION_KEYS.verifyEmail], mutationFn: (data: z.infer) => authApi.verifyEmail(data), + onSuccess: (response, variables) => { + toastifyCommon.success('OTP xác thực thành công!') + navigate(ROUTE.AUTH.RESET_PASSWORD, { state: { email: variables.email } }) + }, + onError: (error: AxiosError) => handleError(error, 'Failed to verify email') + }) +} + +export const useResetPasswordAuth = () => { + const navigate = useNavigate() + return useMutation({ + mutationKey: [MUTATION_KEYS.resetPassword], + mutationFn: (data: z.infer) => authApi.resetPassword(data as ResetPasswordReq), onSuccess: () => { - toastifyCommon.success('Email verified successfully! 🎉') + toastifyCommon.success('Mật khẩu đã được cập nhật. Vui lòng đăng nhập lại.') navigate(ROUTE.AUTH.LOGIN) }, - onError: (error: AxiosError) => handleError(error, 'Failed to verify email') + onError: (error: AxiosError) => handleError(error, 'Failed to reset password') }) } diff --git a/frontend/src/models/auth/interfaces.ts b/frontend/src/models/auth/interfaces.ts index 9669f10..9e27d55 100644 --- a/frontend/src/models/auth/interfaces.ts +++ b/frontend/src/models/auth/interfaces.ts @@ -14,6 +14,7 @@ export interface RegisterRequest { email: string password: string confirm_password: string + role: 'client' | 'lawyer' } export interface AuthState { diff --git a/frontend/src/models/interface/auth.interface.ts b/frontend/src/models/interface/auth.interface.ts index 378f930..8a3e2f2 100644 --- a/frontend/src/models/interface/auth.interface.ts +++ b/frontend/src/models/interface/auth.interface.ts @@ -43,6 +43,11 @@ export interface VerifyEmailRes { message: string } +export interface ResetPasswordReq { + email: string + password: string +} + export interface RememberMeData { email: string password: string diff --git a/frontend/src/pages/404/PageNotFound.tsx b/frontend/src/pages/404/PageNotFound.tsx index 60cc08f..52c566f 100644 --- a/frontend/src/pages/404/PageNotFound.tsx +++ b/frontend/src/pages/404/PageNotFound.tsx @@ -5,133 +5,59 @@ import { ROUTE } from '@/core/constants/path' const PageNotFound = () => { return ( -

- {/* Animated background elements */} - - {[...Array(5)].map((_, i) => ( - - ))} - +
+
+
- {/* Floating particles */} - {[...Array(20)].map((_, i) => ( - - ))} +
+
Your Logo
+
- {/* Content */} -
+
-

- 404 -

-
+
+

Quên mật khẩu

+

+ Nhập địa chỉ email liên kết với tài khoản của bạn. Chúng tôi sẽ gửi một mã xác thực (OTP) để thiết lập mật + khẩu mới. +

+
- -

Oops! Page not found

-

- The page you're looking for doesn't exist or has been moved. -

-
+
+
+ +
+ +
+
- - - - - - Back to Home - + Gửi mã OTP → + + +
+ + ← Quay lại đăng nhập + +
+
- - {/* Decorative elements */} -
) } diff --git a/frontend/src/pages/forgot-password/ForgotPassword.tsx b/frontend/src/pages/forgot-password/ForgotPassword.tsx new file mode 100644 index 0000000..09f96d2 --- /dev/null +++ b/frontend/src/pages/forgot-password/ForgotPassword.tsx @@ -0,0 +1,112 @@ +import { useCallback } from 'react' +import { zodResolver } from '@hookform/resolvers/zod' +import { motion } from 'framer-motion' +import { useForm } from 'react-hook-form' +import { Link, useNavigate } from 'react-router-dom' +import { z } from 'zod' + +import Logo from '@/components/logo/logo' +import { Button } from '@/components/ui/button' +import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from '@/components/ui/form' +import { Input } from '@/components/ui/input' +import { ROUTE } from '@/core/constants/path' +import { containerVariants, itemVariants } from '@/styles/variant/style-variant' + +const ForgotPasswordSchema = z.object({ + email: z.string().email({ message: 'Vui lòng nhập email hợp lệ' }) +}) + +type ForgotPasswordForm = z.infer + +export default function ForgotPassword() { + const navigate = useNavigate() + + const form = useForm({ + resolver: zodResolver(ForgotPasswordSchema), + defaultValues: { + email: '' + } + }) + + const onSubmit = useCallback( + (data: ForgotPasswordForm) => { + navigate(ROUTE.AUTH.VERIFY_ACCOUNT_EMAIL, { state: { email: data.email } }) + }, + [navigate] + ) + + return ( +
+
+
+ +
+ {/* + + + + + */} +

Quên mật khẩu

+

+ Nhập địa chỉ email liên kết với tài khoản của bạn. Chúng tôi sẽ gửi một mã xác thực (OTP) để thiết lập mật + khẩu mới. +

+
+ +
+ + + + ( + + Email + + + + + + )} + /> + + + + + + + + + ← Quay lại đăng nhập + + + +
+ +
+
+
+ ) +} diff --git a/frontend/src/pages/login/Login.tsx b/frontend/src/pages/login/Login.tsx index 909fbc9..813b223 100644 --- a/frontend/src/pages/login/Login.tsx +++ b/frontend/src/pages/login/Login.tsx @@ -100,26 +100,30 @@ export default function Login() { }, [form]) return ( -
-
+
+
+
- + {/* */} -

Chào mừng trở lại!

-

Đăng nhập để tiếp tục trải nghiệm

+

Đăng nhập

+

Chào mừng trở lại

@@ -136,8 +140,8 @@ export default function Login() { name='email' render={({ field }) => ( - Email - + Email + @@ -152,8 +156,8 @@ export default function Login() { name='password' render={({ field }) => ( - Mật khẩu - + Mật khẩu + Đăng nhập + + + + Chưa có tài khoản?{' '} @@ -210,44 +230,6 @@ export default function Login() {
- - {/* Right side - Tech Stack */} - -
-

Công nghệ hiện đại

-

Được xây dựng với những công nghệ mới nhất

-
- -
- {techStack.map((tech, index) => ( - - {tech.icon} - {tech.name} - - ))} -
- -
-

Tính năng nổi bật

-
    -
  • ✨ Giao diện hiện đại, thân thiện
  • -
  • 🚀 Hiệu suất tối ưu
  • -
  • 🔒 Bảo mật cao cấp
  • -
  • 📱 Responsive trên mọi thiết bị
  • -
-
-
) diff --git a/frontend/src/pages/register/Register.tsx b/frontend/src/pages/register/Register.tsx index 9b8bdfd..d669c0a 100644 --- a/frontend/src/pages/register/Register.tsx +++ b/frontend/src/pages/register/Register.tsx @@ -2,12 +2,11 @@ import { useState } from 'react' import { zodResolver } from '@hookform/resolvers/zod' import { motion } from 'framer-motion' -import { useForm } from 'react-hook-form' +import { useForm, useWatch } from 'react-hook-form' import { Link } from 'react-router-dom' import { type z } from 'zod' import { IconEye, IconNonEye } from '@/assets/icons' -import Logo from '@/components/logo/logo' import { Button } from '@/components/ui/button' import { Checkbox } from '@/components/ui/checkbox' import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from '@/components/ui/form' @@ -20,12 +19,34 @@ import { RegisterSchema } from '@/core/zod' import { useAuthRedirect } from '@/hooks/auth/use-auth-redirect' import { useRegisterAuth } from '@/hooks/tanstack-query/auth/use-query-auth' -const features = [ - { title: 'Tài khoản cá nhân', description: 'Quản lý thông tin và cài đặt của bạn' }, - { title: 'Bảo mật cao cấp', description: 'Bảo vệ dữ liệu của bạn với mã hóa tiên tiến' }, - { title: 'Hỗ trợ 24/7', description: 'Đội ngũ hỗ trợ luôn sẵn sàng giúp đỡ bạn' }, - { title: 'Cập nhật thường xuyên', description: 'Luôn được cập nhật những tính năng mới nhất' } -] +const getPasswordStrength = (password: string) => { + let score = 0 + + if (!password) return 0 + + // độ dài + if (password.length >= 6) score += 2 + if (password.length >= 10) score += 2 + + // ký tự + if (/[A-Z]/.test(password)) score += 2 + if (/[0-9]/.test(password)) score += 2 + if (/[^A-Za-z0-9]/.test(password)) score += 2 + + return score // max = 10 +} + +const getPasswordStrengthLabel = (score: number, password: string) => { + if (!password) return 'Chưa nhập' + if (score < 5) return 'Yếu' + if (score < 8) return 'Trung bình' + return 'Mạnh' +} + +const getPasswordStrengthColor = (score: number, password: string) => { + if (!password) return '' + return 'bg-red-500' +} export default function Register() { const [isPasswordVisible, setIsPasswordVisible] = useState(false) @@ -40,12 +61,24 @@ export default function Register() { password: '', confirmPassword: '', name: '', - phone: '' + phone: '', + role: 'client', + licenseNumber: '', + issuedDate: '', + issuedPlace: '', + certificate: null, + referralCode: '' } }) const { mutate: mutationRegister, isPending } = useRegisterAuth() + const role = useWatch({ control: form.control, name: 'role' }) + const password = useWatch({ control: form.control, name: 'password' }) + const passwordStrength = getPasswordStrength(password ?? '') + const passwordStrengthLabel = getPasswordStrengthLabel(passwordStrength, password ?? '') + const passwordStrengthColor = getPasswordStrengthColor(passwordStrength, password ?? '') + const handleRegister = () => { mutationRegister(form.getValues()) } @@ -54,78 +87,26 @@ export default function Register() { const toggleConfirmPasswordVisibility = () => setIsConfirmPasswordVisible((prev) => !prev) return ( -
-
- {/* Left side - Features */} - - -

Tại sao chọn chúng tôi?

-

Khám phá những lợi ích khi tham gia cùng chúng tôi

-
- - - {features.map((feature) => ( - -

{feature.title}

-

{feature.description}

-
- ))} -
- - -

Cam kết của chúng tôi

-
    -
  • ✨ Trải nghiệm người dùng tốt nhất
  • -
  • 🚀 Hiệu suất vượt trội
  • -
  • 🔒 Bảo mật tuyệt đối
  • -
  • 💡 Đổi mới liên tục
  • -
-
-
- - {/* Right side - Register Form */} +
+
+
- - - - -

Tạo tài khoản

-

Tham gia cùng chúng tôi ngay hôm nay

+

Tạo tài khoản

+

Tham gia mạng lưới AI pháp lí thông minh nhất

@@ -139,12 +120,31 @@ export default function Register() { ( - Email - +
+
+ {[ + { value: 'client', label: 'Khách hàng' }, + { value: 'lawyer', label: 'Luật sư' } + ].map((option) => ( + + ))} +
+
@@ -152,28 +152,31 @@ export default function Register() { />
- + ( - - Họ và tên - + + Họ và tên + )} /> + + + ( - - Số điện thoại - - + + Email + + @@ -186,9 +189,9 @@ export default function Register() { control={form.control} name={PASSWORD_TYPE} render={({ field }) => ( - - Mật khẩu - + + Mật khẩu + +
+
+ {[0, 1, 2].map((i) => ( +
+ ))} +
+ +
+ {passwordStrength < 2 ? 'YẾU' : passwordStrength < 3 ? 'TRUNG BÌNH' : 'MẠNH'} +
+
)} @@ -209,9 +226,9 @@ export default function Register() { control={form.control} name='confirmPassword' render={({ field }) => ( - - Xác nhận mật khẩu - + + Xác nhận mật khẩu + + {role === 'lawyer' && ( + <> + + ( + + Mã giới thiệu (không bắt buộc) + + + + + + )} + /> + + + )} + + + + diff --git a/frontend/src/pages/reset-password/ResetPassword.tsx b/frontend/src/pages/reset-password/ResetPassword.tsx new file mode 100644 index 0000000..1849fc6 --- /dev/null +++ b/frontend/src/pages/reset-password/ResetPassword.tsx @@ -0,0 +1,182 @@ +import { useCallback, useEffect } from 'react' + +import { zodResolver } from '@hookform/resolvers/zod' +import { motion } from 'framer-motion' +import { useForm } from 'react-hook-form' +import { Link, useLocation } from 'react-router-dom' +import { type z } from 'zod' + +import { Button } from '@/components/ui/button' +import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from '@/components/ui/form' +import { Input } from '@/components/ui/input' +import { ROUTE } from '@/core/constants/path' +import { ResetPasswordSchema } from '@/core/zod/reset-password.zod' +import { useResetPasswordAuth } from '@/hooks/tanstack-query/auth/use-query-auth' +import { itemVariants } from '@/styles/variant/style-variant' + +type ResetPasswordForm = z.infer + +// 🔥 Password strength +const getPasswordStrength = (password: string) => { + let score = 0 + if (password.length >= 6) score++ + if (/[A-Z]/.test(password)) score++ + if (/[0-9]/.test(password)) score++ + return score +} + +export default function ResetPassword() { + const location = useLocation() + const emailFromState = location.state?.email as string | undefined + + const form = useForm({ + resolver: zodResolver(ResetPasswordSchema), + defaultValues: { + email: emailFromState ?? '', + password: '', + confirmPassword: '' + } + }) + + useEffect(() => { + if (emailFromState) { + form.setValue('email', emailFromState) + } + }, [emailFromState, form]) + + const { mutate: resetPassword, isPending: isResetting } = useResetPasswordAuth() + + const handleResetPassword = useCallback( + (data: ResetPasswordForm) => { + resetPassword(data) + }, + [resetPassword] + ) + + // 🔥 watch password + const password = form.watch('password') + const passwordStrength = getPasswordStrength(password || '') + + return ( +
+
+ +
+ + {/* 🔥 TITLE */} +
+

Tạo mật khẩu mới

+

+ Vui lòng nhập mật khẩu mới của bạn bên dưới. Hãy đảm bảo mật khẩu này khác với các mật khẩu cũ để tăng + cường bảo mật. +

+
+ + + + {/* EMAIL */} + ( + + Email + + + + + )} + /> + + {/* PASSWORD */} + ( + + MẬT KHẨU MỚI + + + + + + {/* 🔥 strength bar */} +
+
+ {[0, 1, 2].map((i) => ( +
+ ))} +
+ +
+ {passwordStrength < 2 ? 'YẾU' : passwordStrength < 3 ? 'TRUNG BÌNH' : 'MẠNH'} +
+
+ + + + )} + /> + + {/* CONFIRM PASSWORD */} + ( + + XÁC NHẬN MẬT KHẨU + + + + + + )} + /> + + {/* BUTTON */} + + + {/* FOOTER */} +

+ Gặp vấn đề? Liên hệ tư vấn viên +

+ +
+ + ← Quay lại đăng nhập + +
+ + + +
+
+ ) +} diff --git a/frontend/src/pages/verify-account-email/VerifyAcountEmail.tsx b/frontend/src/pages/verify-account-email/VerifyAcountEmail.tsx index 95c3c27..2efe0c0 100644 --- a/frontend/src/pages/verify-account-email/VerifyAcountEmail.tsx +++ b/frontend/src/pages/verify-account-email/VerifyAcountEmail.tsx @@ -1,26 +1,25 @@ import { useCallback, useEffect, useState } from 'react' - import { zodResolver } from '@hookform/resolvers/zod' import { motion } from 'framer-motion' import { useForm } from 'react-hook-form' -import { Link, useLocation } from 'react-router-dom' +import { useLocation, useNavigate } from 'react-router-dom' import { type z } from 'zod' -import Logo from '@/components/logo/logo' import { Button } from '@/components/ui/button' -import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from '@/components/ui/form' -import { Input } from '@/components/ui/input' +import { Form, FormControl, FormField, FormItem, FormMessage } from '@/components/ui/form' import { InputOTP, InputOTPGroup, InputOTPSlot } from '@/components/ui/input-otp' import { ROUTE } from '@/core/constants/path' import { VerifyAccountEmailSchema } from '@/core/zod/verify-account-email.zod' -import { useResendVerificationCode, useVerifyAccountEmail } from '@/hooks/tanstack-query/auth/use-query-auth' -import { containerVariants, itemVariants } from '@/styles/variant/style-variant' +import { useResendVerificationCode } from '@/hooks/tanstack-query/auth/use-query-auth' + const RESEND_COUNTDOWN = 60 export default function VerifyEmail() { const location = useLocation() - const [countdown, setCountdown] = useState(RESEND_COUNTDOWN) - const [canResend, setCanResend] = useState(false) + const navigate = useNavigate() + + const [countdown, setCountdown] = useState(RESEND_COUNTDOWN) + const [canResend, setCanResend] = useState(false) const form = useForm>({ resolver: zodResolver(VerifyAccountEmailSchema), @@ -30,166 +29,122 @@ export default function VerifyEmail() { } }) + // set email từ state useEffect(() => { const email = location.state?.email - if (email) { - form.setValue('email', email) - } - }, [form, location.state]) + if (email) form.setValue('email', email) + }, [location.state, form]) + // countdown resend useEffect(() => { - let timer: NodeJS.Timeout - if (countdown > 0 && !canResend) { - timer = setInterval(() => { + if (countdown === 0) { + setCanResend(true) + return + } + + if (!canResend) { + const timer = setInterval(() => { setCountdown((prev) => prev - 1) }, 1000) - } else if (countdown === 0) { - setCanResend(true) + + return () => clearInterval(timer) } - return () => clearInterval(timer) }, [countdown, canResend]) - const { mutate: verifyEmail, isPending: isVerifying } = useVerifyAccountEmail() - const { mutate: resendCode, isPending: isResending } = useResendVerificationCode({ setCountdown, setCanResend }) + // fake verify const handleVerify = useCallback( (data: z.infer) => { - verifyEmail(data) + setTimeout(() => { + navigate(ROUTE.AUTH.RESET_PASSWORD, { + state: { email: data.email } + }) + }, 800) }, - [verifyEmail] + [navigate] ) const handleResendCode = useCallback(() => { const email = form.getValues('email') - if (email) { - resendCode(email) - } + if (email) resendCode(email) }, [form, resendCode]) return ( -
- - Email Verification - -
+
+
+ +
- - - - - Verify Your Account - - - We've sent a verification code to your email address. Please enter it below to verify your account. - + {/* HEADER */} +
+

Xác nhận OTP

+

Mã OTP 6 chữ số đã được gửi tới email của bạn.

+
+
- - - ( - - Email - - - - - - )} - /> - - - ( - - Verification Code - - - - - - - - - - - - - - - )} - /> - - - - -
- Didn't receive the code? - -
-
- - - Already verified?  - + {/* OTP INPUT */} + ( + + + + + {Array.from({ length: 6 }).map((_, i) => ( + + ))} + + + + + + )} + /> + + {/* BUTTON */} + + + {/* RESEND */} +
+ +
From 8bee3c27446cc4b3d7c93dbe82d147d2dcf2c0be Mon Sep 17 00:00:00 2001 From: VANDUY-1910 Date: Thu, 30 Apr 2026 09:51:48 +0700 Subject: [PATCH 2/2] improve: fix password and confirmPassword, fix color variable, Split the three ( getPasswordStrength, getPasswordStrengthLabel, getPasswordStrengthColor) functions into one file. --- .../PasswordStrengthBar.tsx | 45 ++++ .../src/components/header-nav/header-nav.tsx | 4 +- frontend/src/core/configs/consts.ts | 1 + frontend/src/core/helpers/validator.ts | 3 +- frontend/src/core/zod/register.zod.ts | 77 +++++-- frontend/src/core/zod/reset-password.zod.ts | 14 +- frontend/src/locales/en/auth.json | 23 +- frontend/src/locales/vi/auth.json | 23 +- frontend/src/pages/404/PageNotFound.tsx | 48 ++-- .../pages/forgot-password/ForgotPassword.tsx | 2 +- frontend/src/pages/login/Login.tsx | 162 ++++++-------- frontend/src/pages/register/Register.tsx | 205 ++++++------------ .../pages/reset-password/ResetPassword.tsx | 36 +-- .../VerifyAcountEmail.tsx | 1 + frontend/src/utils/password-strength.ts | 26 +++ 15 files changed, 332 insertions(+), 338 deletions(-) create mode 100644 frontend/src/components/PasswordStrengthBar/PasswordStrengthBar.tsx create mode 100644 frontend/src/utils/password-strength.ts diff --git a/frontend/src/components/PasswordStrengthBar/PasswordStrengthBar.tsx b/frontend/src/components/PasswordStrengthBar/PasswordStrengthBar.tsx new file mode 100644 index 0000000..457c254 --- /dev/null +++ b/frontend/src/components/PasswordStrengthBar/PasswordStrengthBar.tsx @@ -0,0 +1,45 @@ +import { useTranslation } from 'react-i18next' + +type Props = { + password: string +} + +const getPasswordStrength = (password: string) => { + let score = 0 + if (password.length >= 5) score++ + if (/[A-Z]/.test(password)) score++ + if (/[0-9]/.test(password)) score++ + return score +} + +export default function PasswordStrengthBar({ password }: Props) { + const { t } = useTranslation('auth') + + const strength = getPasswordStrength(password || '') + + const getLabel = () => { + if (!password) return t('password.empty') + if (strength < 2) return t('password.weak') + if (strength < 3) return t('password.medium') + return t('password.strong') + } + + const getColor = () => { + if (!password) return 'bg-background-tertiary' + if (strength < 2) return 'bg-error-primary' + if (strength < 3) return 'bg-warning-primary' + return 'bg-success-primary' + } + + return ( +
+
+ {[0, 1, 2].map((i) => ( +
+ ))} +
+ +
{getLabel()}
+
+ ) +} diff --git a/frontend/src/components/header-nav/header-nav.tsx b/frontend/src/components/header-nav/header-nav.tsx index dc3d15a..9a0b478 100644 --- a/frontend/src/components/header-nav/header-nav.tsx +++ b/frontend/src/components/header-nav/header-nav.tsx @@ -146,10 +146,10 @@ const Header = () => { variant='outline' className='px-4 py-2 font-medium text-gray-900 rounded-md border border-gray-200 transition-all duration-200 dark:border-gray-700 bg-white/80 dark:bg-gray-800/80 dark:text-gray-100 hover:bg-gray-100 dark:hover:bg-gray-700 focus-visible:ring-2 focus-visible:ring-blue-500' > - {tAuth('auth.login')} + {tAuth('login')}
)} diff --git a/frontend/src/core/configs/consts.ts b/frontend/src/core/configs/consts.ts index 33dc46e..0bde1ec 100644 --- a/frontend/src/core/configs/consts.ts +++ b/frontend/src/core/configs/consts.ts @@ -112,6 +112,7 @@ export const numberConstants = { EIGHT: 8, NINE: 9, TEN: 10, + fifty: 50, ONE_HUNDRED: 100 } diff --git a/frontend/src/core/helpers/validator.ts b/frontend/src/core/helpers/validator.ts index ab0d221..b946c94 100644 --- a/frontend/src/core/helpers/validator.ts +++ b/frontend/src/core/helpers/validator.ts @@ -1,5 +1,6 @@ export const validator = { email: /^[\w-.]+@([\w-]+\.)+[\w-]{2,4}$/, password: /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[a-zA-Z]).{1,}$/, - passwordRegex: /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d@$!%*?&]{5,}$/ + passwordRegex: /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d@$!%*?&]{5,}$/, + phone: /^[0-9]{10,}$/ } diff --git a/frontend/src/core/zod/register.zod.ts b/frontend/src/core/zod/register.zod.ts index b4c7c8c..c990903 100644 --- a/frontend/src/core/zod/register.zod.ts +++ b/frontend/src/core/zod/register.zod.ts @@ -6,53 +6,84 @@ import { validator } from '../helpers/validator' export const RegisterSchema = z .object({ - name: z.string().min(numberConstants.TWO, { - message: 'Name is valid.' - }), - email: z.string().min(numberConstants.TWO, { - message: 'Email is valid.' + name: z + .string() + .trim() + .min(numberConstants.TWO, { message: 'Tên phải có ít nhất 2 ký tự.' }) + .max(numberConstants.fifty, { message: 'Tên không được vượt quá 50 ký tự.' }), + + email: z.string().min(numberConstants.TWO, { message: 'Email không hợp lệ.' }).regex(validator.email, { + message: 'Email không đúng định dạng.' }), + password: z .string() - .min(numberConstants.ONE, { - message: 'Password is required' - }) - .regex(validator.passwordRegex, { - message: 'Password must be at least 5 characters long, contain at least one uppercase letter and one number' - }), - confirmPassword: z - .string() - .min(numberConstants.ONE, { - message: 'Password is required' + .min(numberConstants.FIVE, { + message: 'Mật khẩu phải có ít nhất 5 ký tự.' }) .regex(validator.passwordRegex, { - message: 'Password must be at least 5 characters long, contain at least one uppercase letter and one number' + message: 'Mật khẩu phải có ít nhất 1 chữ hoa và 1 số.' }), - phone: z.string().min(numberConstants.TEN, { - message: 'Phone number must be at least 10 characters.' + + confirmPassword: z.string().min(numberConstants.FIVE, { + message: 'Mật khẩu xác nhận phải có ít nhất 5 ký tự.' + }), + + phone: z.string().regex(validator.phone, { + message: 'Số điện thoại không hợp lệ.' }), + role: z.enum(['client', 'lawyer'], { - message: 'Please select a role.' + message: 'Vui lòng chọn vai trò.' }), + licenseNumber: z.string().optional(), issuedDate: z.string().optional(), issuedPlace: z.string().optional(), certificate: z.any().optional(), referralCode: z.string().optional() }) + .superRefine((data, ctx) => { + if (data.password !== data.confirmPassword) { + ctx.addIssue({ + path: ['confirmPassword'], + code: 'custom', + message: 'Mật khẩu xác nhận không khớp.' + }) + } + if (data.role === 'lawyer') { if (!data.licenseNumber) { - ctx.addIssue({ path: ['licenseNumber'], code: 'custom', message: 'Số chứng chỉ hành nghề là bắt buộc.' }) + ctx.addIssue({ + path: ['licenseNumber'], + code: 'custom', + message: 'Số chứng chỉ hành nghề là bắt buộc.' + }) } + if (!data.issuedDate) { - ctx.addIssue({ path: ['issuedDate'], code: 'custom', message: 'Ngày cấp là bắt buộc.' }) + ctx.addIssue({ + path: ['issuedDate'], + code: 'custom', + message: 'Ngày cấp là bắt buộc.' + }) } + if (!data.issuedPlace) { - ctx.addIssue({ path: ['issuedPlace'], code: 'custom', message: 'Nơi cấp là bắt buộc.' }) + ctx.addIssue({ + path: ['issuedPlace'], + code: 'custom', + message: 'Nơi cấp là bắt buộc.' + }) } + if (!data.certificate) { - ctx.addIssue({ path: ['certificate'], code: 'custom', message: 'Chứng chỉ là bắt buộc.' }) + ctx.addIssue({ + path: ['certificate'], + code: 'custom', + message: 'Chứng chỉ là bắt buộc.' + }) } } }) diff --git a/frontend/src/core/zod/reset-password.zod.ts b/frontend/src/core/zod/reset-password.zod.ts index 3cc3bdb..b4ef66c 100644 --- a/frontend/src/core/zod/reset-password.zod.ts +++ b/frontend/src/core/zod/reset-password.zod.ts @@ -1,10 +1,18 @@ import { z } from 'zod' +import { numberConstants } from '@/core/configs/consts' + +import { validator } from '../helpers/validator' export const ResetPasswordSchema = z .object({ - email: z.string().email('Vui lòng nhập email hợp lệ'), - password: z.string().min(8, 'Mật khẩu phải có ít nhất 8 ký tự'), - confirmPassword: z.string().min(8, 'Vui lòng xác nhận mật khẩu') + email: z.string().email('Vui lòng nhập email hợp lệ').regex(validator.email, { + message: 'Email không đúng định dạng.' + }), + + password: z.string().min(numberConstants.FIVE, 'Mật khẩu phải có ít nhất 5 ký tự').regex(validator.passwordRegex, { + message: 'Mật khẩu phải có ít nhất 1 chữ hoa và 1 số.' + }), + confirmPassword: z.string().min(numberConstants.FIVE, 'Vui lòng xác nhận mật khẩu') }) .refine((data) => data.password === data.confirmPassword, { path: ['confirmPassword'], diff --git a/frontend/src/locales/en/auth.json b/frontend/src/locales/en/auth.json index b97f27f..dcd9d38 100644 --- a/frontend/src/locales/en/auth.json +++ b/frontend/src/locales/en/auth.json @@ -1,12 +1,15 @@ { - "auth": { - "login": "Login", - "register": "Register", - "logout": "Logout", - "email": "Email", - "password": "Password", - "forgotPassword": "Forgot Password?", - "rememberMe": "Remember Me", - "profile": "Profile" - } + "login": "Login", + "register": "Register", + "logout": "Logout", + "email": "Email", + "password": { + "weak": "weak", + "medium": "MEDIUM", + "strong": "STRONG", + "empty": "EMPTY" + }, + "forgotPassword": "Forgot Password?", + "rememberMe": "Remember Me", + "profile": "Profile" } diff --git a/frontend/src/locales/vi/auth.json b/frontend/src/locales/vi/auth.json index a0ad742..4e5ad57 100644 --- a/frontend/src/locales/vi/auth.json +++ b/frontend/src/locales/vi/auth.json @@ -1,12 +1,15 @@ { - "auth": { - "login": "Đăng nhập", - "register": "Đăng ký", - "logout": "Đăng xuất", - "email": "Email", - "password": "Mật khẩu", - "forgotPassword": "Quên mật khẩu?", - "rememberMe": "Ghi nhớ đăng nhập", - "profile": "Hồ sơ" - } + "login": "Đăng nhập", + "register": "Đăng ký", + "logout": "Đăng xuất", + "email": "Email", + "password": { + "weak": "YẾU", + "medium": "TRUNG BÌNH", + "strong": "MẠNH", + "empty": "CHƯA NHẬP" + }, + "forgotPassword": "Quên mật khẩu?", + "rememberMe": "Ghi nhớ đăng nhập", + "profile": "Hồ sơ" } diff --git a/frontend/src/pages/404/PageNotFound.tsx b/frontend/src/pages/404/PageNotFound.tsx index 52c566f..6ba4e75 100644 --- a/frontend/src/pages/404/PageNotFound.tsx +++ b/frontend/src/pages/404/PageNotFound.tsx @@ -5,53 +5,49 @@ import { ROUTE } from '@/core/constants/path' const PageNotFound = () => { return ( -
-
-
- -
-
Your Logo
+
+ {/* Header */} +
+
Your Logo
-
+ {/* Content */} +
-
-

Quên mật khẩu

-

- Nhập địa chỉ email liên kết với tài khoản của bạn. Chúng tôi sẽ gửi một mã xác thực (OTP) để thiết lập mật - khẩu mới. +

+

Quên mật khẩu

+

+ Nhập email của bạn. Chúng tôi sẽ gửi mã OTP để đặt lại mật khẩu.

-
-
- -
+ +
+ + +
- + ← Quay lại đăng nhập
diff --git a/frontend/src/pages/forgot-password/ForgotPassword.tsx b/frontend/src/pages/forgot-password/ForgotPassword.tsx index 09f96d2..daddf31 100644 --- a/frontend/src/pages/forgot-password/ForgotPassword.tsx +++ b/frontend/src/pages/forgot-password/ForgotPassword.tsx @@ -71,7 +71,7 @@ export default function ForgotPassword() { name='email' render={({ field }) => ( - Email + EMAIL (false) + + const [isPasswordVisible, setIsPasswordVisible] = useState(false) const [rememberMe, setRememberMe] = useState(() => { - const savedData = localStorage.getItem(REMEMBER_ME) - if (savedData) { - const parsedData = JSON.parse(savedData) as RememberMeData - return parsedData.isRemembered - } - return false + const saved = localStorage.getItem(REMEMBER_ME) + return saved ? JSON.parse(saved).isRemembered : false }) useAuthRedirect() @@ -53,78 +40,69 @@ export default function Login() { } }) - const { mutate: mutationLogin } = useLoginAuth() + const { mutate: login } = useLoginAuth() const onSubmit = useCallback( (data: z.infer) => { loginStart() - mutationLogin(data, { - onSuccess: (response) => { - loginSuccess(response.data) - }, - onError: (error) => { - loginFailure(error.message) - } + login(data, { + onSuccess: (res) => loginSuccess(res.data), + onError: (err) => loginFailure(err.message) }) }, - [mutationLogin, loginStart, loginSuccess, loginFailure] + [login, loginStart, loginSuccess, loginFailure] ) - const togglePasswordVisibility = () => setIsPasswordVisible((prev) => !prev) - - const handleChangeRememberMe = (event: boolean) => { - setRememberMe(event) - const loginData = form.getValues() - - if (event) { - const rememberMeData: RememberMeData = { - email: loginData.email, - password: loginData.password, - isRemembered: true - } - localStorage.setItem(REMEMBER_ME, JSON.stringify(rememberMeData)) + const togglePassword = () => setIsPasswordVisible((prev) => !prev) + + const handleRememberMe = (checked: boolean) => { + setRememberMe(checked) + const data = form.getValues() + + if (checked) { + localStorage.setItem( + REMEMBER_ME, + JSON.stringify({ + email: data.email, + password: data.password, + isRemembered: true + }) + ) } else { localStorage.removeItem(REMEMBER_ME) } } useEffect(() => { - const savedData = localStorage.getItem(REMEMBER_ME) - if (savedData) { - const parsedData = JSON.parse(savedData) as RememberMeData - if (parsedData.isRemembered) { - form.setValue('email', parsedData.email) - form.setValue('password', parsedData.password) + const saved = localStorage.getItem(REMEMBER_ME) + if (saved) { + const parsed: RememberMeData = JSON.parse(saved) + if (parsed.isRemembered) { + form.setValue('email', parsed.email) + form.setValue('password', parsed.password) } } }, [form]) return (
-
-
+
+ +
- - {/* */} - - - -

Đăng nhập

-

Chào mừng trở lại

-
+ {/* title */} +
+

Đăng nhập

+

Chào mừng trở lại

+
+ {/* EMAIL */} ( - Email - + Email + @@ -150,21 +129,21 @@ export default function Login() { /> + {/* PASSWORD */} ( - Mật khẩu - + Mật khẩu + : } - iconOnClick={togglePasswordVisibility} + iconOnClick={togglePassword} /> @@ -173,38 +152,26 @@ export default function Login() { /> - -
- - + {/* REMEMBER */} + +
+ +
- + + Quên mật khẩu?
+ {/* LOGIN BUTTON */} - + {/* GOOGLE */} - ))} + ].map((option) => { + const isActive = field.value === option.value + + return ( + + ) + })}
@@ -152,15 +119,16 @@ export default function Register() { /> + {/* NAME */} ( - - Họ và tên - - + + HỌ VÀ TÊN + + @@ -168,14 +136,15 @@ export default function Register() { /> + {/* EMAIL */} ( - - Email - + + EMAIL + @@ -184,54 +153,43 @@ export default function Register() { /> + {/* PASSWORD */} ( - - Mật khẩu - + + MẬT KHẨU + : } iconOnClick={togglePasswordVisibility} /> -
-
- {[0, 1, 2].map((i) => ( -
- ))} -
-
- {passwordStrength < 2 ? 'YẾU' : passwordStrength < 3 ? 'TRUNG BÌNH' : 'MẠNH'} -
-
+ + )} /> + {/* CONFIRM PASSWORD */} ( - - Xác nhận mật khẩu - + + XÁC NHẬN MẬT KHẨU + : } @@ -245,41 +203,26 @@ export default function Register() { {role === 'lawyer' && ( - <> - - ( - - Mã giới thiệu (không bắt buộc) - - - - - - )} - /> - - + + ( + + MÃ GIỚI THIỆU + + + + + + )} + /> + )} - - - - - + {/* SUBMIT */} - @@ -299,14 +242,10 @@ export default function Register() { Đăng nhập với Google - - + Đã có tài khoản?{' '} - - Đăng nhập ngay + + Đăng nhập diff --git a/frontend/src/pages/reset-password/ResetPassword.tsx b/frontend/src/pages/reset-password/ResetPassword.tsx index 1849fc6..5438aec 100644 --- a/frontend/src/pages/reset-password/ResetPassword.tsx +++ b/frontend/src/pages/reset-password/ResetPassword.tsx @@ -6,25 +6,16 @@ import { useForm } from 'react-hook-form' import { Link, useLocation } from 'react-router-dom' import { type z } from 'zod' +import PasswordStrengthBar from '@/components/PasswordStrengthBar/PasswordStrengthBar' import { Button } from '@/components/ui/button' import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from '@/components/ui/form' import { Input } from '@/components/ui/input' import { ROUTE } from '@/core/constants/path' import { ResetPasswordSchema } from '@/core/zod/reset-password.zod' import { useResetPasswordAuth } from '@/hooks/tanstack-query/auth/use-query-auth' -import { itemVariants } from '@/styles/variant/style-variant' type ResetPasswordForm = z.infer -// 🔥 Password strength -const getPasswordStrength = (password: string) => { - let score = 0 - if (password.length >= 6) score++ - if (/[A-Z]/.test(password)) score++ - if (/[0-9]/.test(password)) score++ - return score -} - export default function ResetPassword() { const location = useLocation() const emailFromState = location.state?.email as string | undefined @@ -53,10 +44,6 @@ export default function ResetPassword() { [resetPassword] ) - // 🔥 watch password - const password = form.watch('password') - const passwordStrength = getPasswordStrength(password || '') - return (
- {/* 🔥 TITLE */}

Tạo mật khẩu mới

@@ -88,7 +74,7 @@ export default function ResetPassword() { name='email' render={({ field }) => ( - Email + EMAIL @@ -102,7 +88,7 @@ export default function ResetPassword() { name='password' render={({ field }) => ( - MẬT KHẨU MỚI + MẬT KHẨU MỚI - {/* 🔥 strength bar */} -

-
- {[0, 1, 2].map((i) => ( -
- ))} -
- -
- {passwordStrength < 2 ? 'YẾU' : passwordStrength < 3 ? 'TRUNG BÌNH' : 'MẠNH'} -
-
+ diff --git a/frontend/src/pages/verify-account-email/VerifyAcountEmail.tsx b/frontend/src/pages/verify-account-email/VerifyAcountEmail.tsx index 2efe0c0..45751e9 100644 --- a/frontend/src/pages/verify-account-email/VerifyAcountEmail.tsx +++ b/frontend/src/pages/verify-account-email/VerifyAcountEmail.tsx @@ -1,4 +1,5 @@ import { useCallback, useEffect, useState } from 'react' + import { zodResolver } from '@hookform/resolvers/zod' import { motion } from 'framer-motion' import { useForm } from 'react-hook-form' diff --git a/frontend/src/utils/password-strength.ts b/frontend/src/utils/password-strength.ts new file mode 100644 index 0000000..3f383cc --- /dev/null +++ b/frontend/src/utils/password-strength.ts @@ -0,0 +1,26 @@ +export const getPasswordStrength = (password: string) => { + let score = 0 + + if (!password) return 0 + + if (password.length >= 6) score += 2 + if (password.length >= 10) score += 2 + + if (/[A-Z]/.test(password)) score += 2 + if (/[0-9]/.test(password)) score += 2 + if (/[^A-Za-z0-9]/.test(password)) score += 2 + + return score +} + +export const getPasswordStrengthLabel = (score: number, password: string) => { + if (!password) return 'Chưa nhập' + if (score < 5) return 'Yếu' + if (score < 8) return 'Trung bình' + return 'Mạnh' +} + +export const getPasswordStrengthColor = (score: number, password: string) => { + if (!password) return '' + return 'bg-red-500' +}