From e619245f1fa83a29a9ec553ef9017871bb5c27c0 Mon Sep 17 00:00:00 2001 From: l3wdfut4pwr Date: Wed, 29 Apr 2026 02:07:46 +0300 Subject: add google auth --- src/components/settings/ChangePassword.tsx | 87 +++++++++++++++------------- src/components/settings/SecurityPage.tsx | 26 +-------- src/components/settings/SetPasswordField.tsx | 76 ++++++++++++++++++++++++ 3 files changed, 125 insertions(+), 64 deletions(-) create mode 100644 src/components/settings/SetPasswordField.tsx (limited to 'src/components/settings') diff --git a/src/components/settings/ChangePassword.tsx b/src/components/settings/ChangePassword.tsx index d437b5e..7721c85 100644 --- a/src/components/settings/ChangePassword.tsx +++ b/src/components/settings/ChangePassword.tsx @@ -21,8 +21,8 @@ export const ChangePasswordField = () => { return; } - if (newPassword.length < 6) { - setError('Пароль должен быть минимум 6 символов'); + if (newPassword.length < 8) { + setError('Пароль должен быть минимум 8 символов'); return; } @@ -47,45 +47,50 @@ export const ChangePasswordField = () => { }; return ( -
-

СМЕНА ПАРОЛЯ

- -
- setCurrentPassword(e.target.value)} - /> - - setNewPassword(e.target.value)} - /> - - setConfirmPassword(e.target.value)} - /> + <> +
+

СМЕНА ПАРОЛЯ

+ +
+ + setCurrentPassword(e.target.value) + } + /> + + setNewPassword(e.target.value)} + /> + + + setConfirmPassword(e.target.value) + } + /> +
+ + {error &&

{error}

} + +
- - {error &&

{error}

} - - - - -
+ + ); }; diff --git a/src/components/settings/SecurityPage.tsx b/src/components/settings/SecurityPage.tsx index dd650c4..9c498aa 100644 --- a/src/components/settings/SecurityPage.tsx +++ b/src/components/settings/SecurityPage.tsx @@ -6,6 +6,7 @@ import LogoutButton from './LogoutButton'; import { changeEmail } from '@/lib/api/ChangeEmail'; import { useState } from 'react'; import { ChangePasswordField } from './ChangePassword'; +import { SetPasswordField } from './SetPasswordField'; export default function SecurityPage() { const { user } = useAuthContext(); @@ -42,28 +43,7 @@ export default function SecurityPage() { <>
- {showSetPassword && ( -
-

- ЗАДАТЬ ПАРОЛЬ -

-
- - -
- - -
- )} + {showSetPassword && }

@@ -91,7 +71,7 @@ export default function SecurityPage() {

- + {hasPassword && }
diff --git a/src/components/settings/SetPasswordField.tsx b/src/components/settings/SetPasswordField.tsx new file mode 100644 index 0000000..6030c8f --- /dev/null +++ b/src/components/settings/SetPasswordField.tsx @@ -0,0 +1,76 @@ +'use client'; + +import { useState } from 'react'; +import { InputField } from '@/components/ui/inputfield'; +import { Button } from '@/components/ui/button'; +import { Separator } from '@/components/ui/separator'; +import { setPassword } from '@/lib/api/SetPassword'; + +export const SetPasswordField = () => { + const [newPassword, setNewPassword] = useState(''); + const [repeatPassword, setRepeatPassword] = useState(''); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(null); + + const handleSubmit = async () => { + setError(null); + + if (newPassword !== repeatPassword) { + setError('Пароли не совпадают'); + return; + } + + if (newPassword.length < 8) { + setError('Пароль должен быть минимум 8 символов'); + return; + } + + setLoading(true); + + const res = await setPassword(newPassword, repeatPassword); + + setLoading(false); + + if (res.error) { + setError(res.error.general); + return; + } + + setNewPassword(''); + setRepeatPassword(''); + }; + + return ( +
+

ЗАДАТЬ ПАРОЛЬ

+ +
+ setNewPassword(e.target.value)} + /> + + setRepeatPassword(e.target.value)} + /> +
+ + {error &&

{error}

} + + + + +
+ ); +}; -- cgit v1.3-3-g829e