Personal Data Consent Checkbox (#3697)

Co-authored-by: github-actions <github-actions@github.com>
This commit is contained in:
Benjamin Lu
2025-04-30 10:29:46 -04:00
committed by GitHub
parent 838acefd72
commit 35f0551244
9 changed files with 42 additions and 3 deletions

View File

@@ -120,6 +120,25 @@
}}</small>
</div>
<!-- Personal Data Consent Checkbox -->
<div class="flex items-center gap-2">
<Checkbox
input-id="comfy-org-sign-up-personal-data-consent"
name="personalDataConsent"
:binary="true"
:invalid="$form.personalDataConsent?.invalid"
/>
<label
for="comfy-org-sign-up-personal-data-consent"
class="opacity-80 text-base font-medium"
>
{{ t('auth.signup.personalDataConsentLabel') }}
</label>
</div>
<small v-if="$form.personalDataConsent?.error" class="text-red-500 -mt-4">{{
$form.personalDataConsent.error.message
}}</small>
<!-- Submit Button -->
<Button
type="submit"
@@ -133,6 +152,7 @@
import { Form, FormSubmitEvent } from '@primevue/forms'
import { zodResolver } from '@primevue/forms/resolvers/zod'
import Button from 'primevue/button'
import Checkbox from 'primevue/checkbox'
import InputText from 'primevue/inputtext'
import Password from 'primevue/password'
import { computed, ref } from 'vue'

View File

@@ -1128,7 +1128,8 @@
"signIn": "Sign in",
"signUpWithGoogle": "Sign up with Google",
"signUpWithGithub": "Sign up with Github",
"regionRestrictionChina": "In accordance with local regulatory requirements, our services are temporarily unavailable to users located in China."
"regionRestrictionChina": "In accordance with local regulatory requirements, our services are temporarily unavailable to users located in China.",
"personalDataConsentLabel": "I agree to the processing of my personal data."
},
"signOut": {
"signOut": "Log Out",
@@ -1149,7 +1150,8 @@
"number": "Must contain at least one number",
"special": "Must contain at least one special character",
"match": "Passwords must match"
}
},
"personalDataConsentRequired": "You must agree to the processing of your personal data."
},
"credits": {
"credits": "Credits",

View File

@@ -48,6 +48,7 @@
"emailPlaceholder": "Ingresa tu correo electrónico",
"passwordLabel": "Contraseña",
"passwordPlaceholder": "Ingresa una nueva contraseña",
"personalDataConsentLabel": "Acepto el tratamiento de mis datos personales.",
"regionRestrictionChina": "De acuerdo con los requisitos regulatorios locales, nuestros servicios no están disponibles actualmente para usuarios ubicados en China continental.",
"signIn": "Iniciar sesión",
"signUpButton": "Registrarse",
@@ -1169,6 +1170,7 @@
"special": "Debe contener al menos un carácter especial",
"uppercase": "Debe contener al menos una letra mayúscula"
},
"personalDataConsentRequired": "Debes aceptar el procesamiento de tus datos personales.",
"required": "Requerido"
},
"welcome": {

View File

@@ -48,6 +48,7 @@
"emailPlaceholder": "Entrez votre email",
"passwordLabel": "Mot de passe",
"passwordPlaceholder": "Entrez un nouveau mot de passe",
"personalDataConsentLabel": "J'accepte le traitement de mes données personnelles.",
"regionRestrictionChina": "Conformément aux exigences réglementaires locales, nos services ne sont actuellement pas disponibles pour les utilisateurs situés en Chine continentale.",
"signIn": "Se connecter",
"signUpButton": "S'inscrire",
@@ -1169,6 +1170,7 @@
"special": "Doit contenir au moins un caractère spécial",
"uppercase": "Doit contenir au moins une lettre majuscule"
},
"personalDataConsentRequired": "Vous devez accepter le traitement de vos données personnelles.",
"required": "Requis"
},
"welcome": {

View File

@@ -48,6 +48,7 @@
"emailPlaceholder": "メールアドレスを入力してください",
"passwordLabel": "パスワード",
"passwordPlaceholder": "新しいパスワードを入力してください",
"personalDataConsentLabel": "個人データの取扱いに同意します。",
"regionRestrictionChina": "現地の規制要件に従い、当社のサービスは現在中国本土のユーザーにはご利用いただけません。",
"signIn": "サインイン",
"signUpButton": "サインアップ",
@@ -1169,6 +1170,7 @@
"special": "少なくとも1つの特殊文字を含む必要があります",
"uppercase": "少なくとも1つの大文字を含む必要があります"
},
"personalDataConsentRequired": "個人データの処理に同意する必要があります。",
"required": "必須"
},
"welcome": {

View File

@@ -48,6 +48,7 @@
"emailPlaceholder": "이메일을 입력하세요",
"passwordLabel": "비밀번호",
"passwordPlaceholder": "새 비밀번호를 입력하세요",
"personalDataConsentLabel": "개인 정보 처리에 동의합니다.",
"regionRestrictionChina": "현지 규제 요건에 따라, 본 서비스는 현재 중국 본토에 위치한 사용자에게 제공되지 않습니다.",
"signIn": "로그인",
"signUpButton": "가입하기",
@@ -1169,6 +1170,7 @@
"special": "적어도 하나의 특수 문자를 포함해야 합니다",
"uppercase": "적어도 하나의 대문자를 포함해야 합니다"
},
"personalDataConsentRequired": "개인 데이터 처리에 동의해야 합니다.",
"required": "필수"
},
"welcome": {

View File

@@ -48,6 +48,7 @@
"emailPlaceholder": "Введите вашу электронную почту",
"passwordLabel": "Пароль",
"passwordPlaceholder": "Введите новый пароль",
"personalDataConsentLabel": "Я согласен на обработку моих персональных данных.",
"regionRestrictionChina": "В соответствии с местными нормативными требованиями наши услуги в настоящее время недоступны для пользователей, находящихся в материковом Китае.",
"signIn": "Войти",
"signUpButton": "Зарегистрироваться",
@@ -1169,6 +1170,7 @@
"special": "Должен содержать хотя бы один специальный символ",
"uppercase": "Должен содержать хотя бы одну заглавную букву"
},
"personalDataConsentRequired": "Вы должны согласиться на обработку ваших персональных данных.",
"required": "Обязательно"
},
"welcome": {

View File

@@ -48,6 +48,7 @@
"emailPlaceholder": "输入您的电子邮件",
"passwordLabel": "密码",
"passwordPlaceholder": "输入新密码",
"personalDataConsentLabel": "我同意处理我的个人数据。",
"regionRestrictionChina": "根据当地法规要求,我们暂时无法为中国地区的用户提供服务。",
"signIn": "登录",
"signUpButton": "注册",
@@ -1169,6 +1170,7 @@
"special": "必须包含至少一个特殊字符",
"uppercase": "必须包含至少一个大写字母"
},
"personalDataConsentRequired": "您必须同意处理您的个人数据。",
"required": "必填"
},
"welcome": {

View File

@@ -26,11 +26,16 @@ export const signUpSchema = z
.regex(/[a-z]/, t('validation.password.lowercase'))
.regex(/\d/, t('validation.password.number'))
.regex(/[^A-Za-z0-9]/, t('validation.password.special')),
confirmPassword: z.string().min(1, t('validation.required'))
confirmPassword: z.string().min(1, t('validation.required')),
personalDataConsent: z.boolean()
})
.refine((data) => data.password === data.confirmPassword, {
message: t('validation.password.match'),
path: ['confirmPassword']
})
.refine((data) => data.personalDataConsent === true, {
message: t('validation.personalDataConsentRequired'),
path: ['personalDataConsent']
})
export type SignUpData = z.infer<typeof signUpSchema>