[API Node] Reset password (#3578)

Co-authored-by: github-actions <github-actions@github.com>
This commit is contained in:
Christian Byrne
2025-04-23 22:13:17 +08:00
committed by GitHub
parent 16bd9abccd
commit 59cbe90fd3
9 changed files with 53 additions and 2 deletions

View File

@@ -36,7 +36,10 @@
>
{{ t('auth.login.passwordLabel') }}
</label>
<span class="text-muted text-base font-medium cursor-pointer">
<span
class="text-muted text-base font-medium cursor-pointer"
@click="handleForgotPassword($form.email?.value)"
>
{{ t('auth.login.forgotPassword') }}
</span>
</div>
@@ -79,11 +82,13 @@ import { useI18n } from 'vue-i18n'
import { type SignInData, signInSchema } from '@/schemas/signInSchema'
import { useFirebaseAuthStore } from '@/stores/firebaseAuthStore'
import { useToastStore } from '@/stores/toastStore'
const authStore = useFirebaseAuthStore()
const loading = computed(() => authStore.loading)
const { t } = useI18n()
const toast = useToastStore()
const emit = defineEmits<{
submit: [values: SignInData]
@@ -94,4 +99,22 @@ const onSubmit = (event: FormSubmitEvent) => {
emit('submit', event.values as SignInData)
}
}
const handleForgotPassword = async (email: string) => {
if (!email) return
await authStore.sendPasswordReset(email)
if (authStore.error) {
toast.add({
severity: 'error',
summary: t('auth.login.forgotPasswordError'),
detail: authStore.error
})
} else {
toast.add({
severity: 'success',
summary: t('auth.login.passwordResetSent'),
detail: t('auth.login.passwordResetSentDetail')
})
}
}
</script>

View File

@@ -1082,6 +1082,9 @@
"login": {
"title": "Log in to your account",
"signInOrSignUp": "Sign In / Sign Up",
"forgotPasswordError": "Failed to send password reset email",
"passwordResetSent": "Password reset email sent",
"passwordResetSentDetail": "Please check your email for a link to reset your password.",
"newUser": "New here?",
"signUp": "Sign up",
"emailLabel": "Email",

View File

@@ -17,6 +17,7 @@
"emailPlaceholder": "Ingresa tu correo electrónico",
"failed": "Inicio de sesión fallido",
"forgotPassword": "¿Olvidaste tu contraseña?",
"forgotPasswordError": "No se pudo enviar el correo electrónico para restablecer la contraseña",
"genericErrorMessage": "Lo sentimos, hemos encontrado un error. Por favor, contacta con {supportEmail}.",
"loginButton": "Iniciar sesión",
"loginWithGithub": "Iniciar sesión con Github",
@@ -25,6 +26,8 @@
"orContinueWith": "O continuar con",
"passwordLabel": "Contraseña",
"passwordPlaceholder": "Ingresa tu contraseña",
"passwordResetSent": "Correo electrónico de restablecimiento de contraseña enviado",
"passwordResetSentDetail": "Por favor, revisa tu correo electrónico para encontrar un enlace para restablecer tu contraseña.",
"privacyLink": "Política de privacidad",
"signInOrSignUp": "Iniciar sesión / Registrarse",
"signUp": "Regístrate",

View File

@@ -17,6 +17,7 @@
"emailPlaceholder": "Entrez votre email",
"failed": "Échec de la connexion",
"forgotPassword": "Mot de passe oublié?",
"forgotPasswordError": "Échec de l'envoi de l'e-mail de réinitialisation du mot de passe",
"genericErrorMessage": "Désolé, une erreur s'est produite. Veuillez contacter {supportEmail}.",
"loginButton": "Se connecter",
"loginWithGithub": "Se connecter avec Github",
@@ -25,6 +26,8 @@
"orContinueWith": "Ou continuer avec",
"passwordLabel": "Mot de passe",
"passwordPlaceholder": "Entrez votre mot de passe",
"passwordResetSent": "E-mail de réinitialisation du mot de passe envoyé",
"passwordResetSentDetail": "Veuillez vérifier votre e-mail pour un lien de réinitialisation de votre mot de passe.",
"privacyLink": "Politique de confidentialité",
"signInOrSignUp": "Se connecter / Sinscrire",
"signUp": "S'inscrire",

View File

@@ -17,6 +17,7 @@
"emailPlaceholder": "メールアドレスを入力してください",
"failed": "ログイン失敗",
"forgotPassword": "パスワードを忘れましたか?",
"forgotPasswordError": "パスワードリセット用メールの送信に失敗しました",
"genericErrorMessage": "申し訳ありませんが、エラーが発生しました。{supportEmail} までご連絡ください。",
"loginButton": "ログイン",
"loginWithGithub": "Githubでログイン",
@@ -25,6 +26,8 @@
"orContinueWith": "または以下で続ける",
"passwordLabel": "パスワード",
"passwordPlaceholder": "パスワードを入力してください",
"passwordResetSent": "パスワードリセット用メールを送信しました",
"passwordResetSentDetail": "パスワードをリセットするためのリンクが記載されたメールをご確認ください。",
"privacyLink": "プライバシーポリシー",
"signInOrSignUp": "サインイン / サインアップ",
"signUp": "サインアップ",

View File

@@ -17,6 +17,7 @@
"emailPlaceholder": "이메일을 입력하세요",
"failed": "로그인 실패",
"forgotPassword": "비밀번호를 잊으셨나요?",
"forgotPasswordError": "비밀번호 재설정 이메일 전송에 실패했습니다",
"genericErrorMessage": "죄송합니다. 오류가 발생했습니다. {supportEmail}로 문의해 주세요.",
"loginButton": "로그인",
"loginWithGithub": "Github로 로그인",
@@ -25,6 +26,8 @@
"orContinueWith": "또는 다음으로 계속",
"passwordLabel": "비밀번호",
"passwordPlaceholder": "비밀번호를 입력하세요",
"passwordResetSent": "비밀번호 재설정 이메일이 전송되었습니다",
"passwordResetSentDetail": "비밀번호를 재설정할 수 있는 링크가 포함된 이메일을 확인해 주세요.",
"privacyLink": "개인정보 보호정책",
"signInOrSignUp": "로그인 / 회원가입",
"signUp": "가입하기",

View File

@@ -17,6 +17,7 @@
"emailPlaceholder": "Введите вашу электронную почту",
"failed": "Вход не удался",
"forgotPassword": "Забыли пароль?",
"forgotPasswordError": "Не удалось отправить письмо для сброса пароля",
"genericErrorMessage": "Извините, произошла ошибка. Пожалуйста, свяжитесь с {supportEmail}.",
"loginButton": "Войти",
"loginWithGithub": "Войти через Github",
@@ -25,6 +26,8 @@
"orContinueWith": "Или продолжить с",
"passwordLabel": "Пароль",
"passwordPlaceholder": "Введите ваш пароль",
"passwordResetSent": "Письмо для сброса пароля отправлено",
"passwordResetSentDetail": "Пожалуйста, проверьте свою электронную почту для получения ссылки на сброс пароля.",
"privacyLink": "Политикой конфиденциальности",
"signInOrSignUp": "Войти / Зарегистрироваться",
"signUp": "Зарегистрироваться",

View File

@@ -17,6 +17,7 @@
"emailPlaceholder": "输入您的电子邮件",
"failed": "登录失败",
"forgotPassword": "忘记密码?",
"forgotPasswordError": "发送重置密码邮件失败",
"genericErrorMessage": "抱歉,我们遇到了一些错误。请联系 {supportEmail}。",
"loginButton": "登录",
"loginWithGithub": "使用Github登录",
@@ -25,6 +26,8 @@
"orContinueWith": "或者继续使用",
"passwordLabel": "密码",
"passwordPlaceholder": "输入您的密码",
"passwordResetSent": "重置密码邮件已发送",
"passwordResetSentDetail": "请查收您的电子邮件,点击链接重置密码。",
"privacyLink": "隐私政策",
"signInOrSignUp": "登录 / 注册",
"signUp": "注册",

View File

@@ -7,6 +7,7 @@ import {
browserLocalPersistence,
createUserWithEmailAndPassword,
onAuthStateChanged,
sendPasswordResetEmail,
setPersistence,
signInWithEmailAndPassword,
signInWithPopup,
@@ -226,6 +227,11 @@ export const useFirebaseAuthStore = defineStore('firebaseAuth', () => {
const logout = async (): Promise<void> =>
executeAuthAction((authInstance) => signOut(authInstance))
const sendPasswordReset = async (email: string): Promise<void> =>
executeAuthAction((authInstance) =>
sendPasswordResetEmail(authInstance, email)
)
const addCredits = async (
requestBodyContent: CreditPurchasePayload
): Promise<CreditPurchaseResponse | null> => {
@@ -329,6 +335,7 @@ export const useFirebaseAuthStore = defineStore('firebaseAuth', () => {
openSignInPanel,
openCreditsPanel,
fetchBalance,
accessBillingPortal
accessBillingPortal,
sendPasswordReset
}
})