refactor(signup): remove firstName/lastName fields (DSGVO data-minimization)
Felder wurden nirgendwo gelesen/angezeigt (nur in raw_user_meta_data gespeichert ohne Verwendung). Inkonsistent mit OAuth-Flow der sie gar nicht erfasst. Entfernt: - 2 Inputs aus signup.tsx - firstName/lastName aus signUp metadata-Typ + data - 8 i18n-keys (de/en/fr/ar) - DB-Cleanup via SQL für 5 existing User (raw_user_meta_data - 'first_name' - 'last_name') Art. 5(1)c DSGVO: nur Daten verarbeiten die für Zweck notwendig sind. Nickname allein reicht — Anonymität-Pattern (memory/feedback_anonymity_nickname.md).
This commit is contained in:
parent
512949f851
commit
12e140e25b
@ -53,8 +53,6 @@ export default function SignUpScreen() {
|
||||
|
||||
const [email, setEmail] = useState('');
|
||||
const [password, setPassword] = useState('');
|
||||
const [firstName, setFirstName] = useState('');
|
||||
const [lastName, setLastName] = useState('');
|
||||
const [nickname, setNickname] = useState('');
|
||||
const [avatarId, setAvatarId] = useState('spider');
|
||||
const [termsAccepted, setTermsAccepted] = useState(false);
|
||||
@ -93,8 +91,6 @@ export default function SignUpScreen() {
|
||||
setSubmitting(true);
|
||||
const res = await signUp(email.trim(), password, {
|
||||
username: nickname.trim(),
|
||||
firstName: firstName.trim() || undefined,
|
||||
lastName: lastName.trim() || undefined,
|
||||
avatarId,
|
||||
avatarUrl: getAvatarUrl(avatarId),
|
||||
});
|
||||
@ -186,27 +182,6 @@ export default function SignUpScreen() {
|
||||
onChangeText={setPassword}
|
||||
/>
|
||||
|
||||
<View className="flex-row gap-3 mb-3">
|
||||
<TextInput
|
||||
className="flex-1 bg-neutral-100 rounded-xl"
|
||||
style={INPUT_STYLE}
|
||||
placeholder={t('auth.firstName')}
|
||||
placeholderTextColor="#a3a3a3"
|
||||
autoComplete="given-name"
|
||||
value={firstName}
|
||||
onChangeText={setFirstName}
|
||||
/>
|
||||
<TextInput
|
||||
className="flex-1 bg-neutral-100 rounded-xl"
|
||||
style={INPUT_STYLE}
|
||||
placeholder={t('auth.lastName')}
|
||||
placeholderTextColor="#a3a3a3"
|
||||
autoComplete="family-name"
|
||||
value={lastName}
|
||||
onChangeText={setLastName}
|
||||
/>
|
||||
</View>
|
||||
|
||||
<TextInput
|
||||
className="bg-neutral-100 rounded-xl mb-6"
|
||||
style={INPUT_STYLE}
|
||||
|
||||
@ -28,8 +28,6 @@
|
||||
"passwordRequired": "كلمة المرور * (8 أحرف على الأقل)",
|
||||
"passwordMin8": "يجب أن تتكون كلمة المرور من 8 أحرف على الأقل.",
|
||||
"newPassword": "كلمة مرور جديدة",
|
||||
"firstName": "الاسم الأول",
|
||||
"lastName": "اسم العائلة",
|
||||
"nickname": "اسم المستخدم",
|
||||
"nicknamePlaceholder": "اسم المستخدم * (مرئي للآخرين)",
|
||||
"noAccount": "ليس لديك حساب؟",
|
||||
|
||||
@ -28,8 +28,6 @@
|
||||
"passwordRequired": "Passwort * (min. 8 Zeichen)",
|
||||
"passwordMin8": "Passwort muss mindestens 8 Zeichen haben.",
|
||||
"newPassword": "Neues Passwort",
|
||||
"firstName": "Vorname",
|
||||
"lastName": "Nachname",
|
||||
"nickname": "Benutzername",
|
||||
"nicknamePlaceholder": "Benutzername * (sichtbar für andere)",
|
||||
"noAccount": "Noch kein Konto?",
|
||||
|
||||
@ -28,8 +28,6 @@
|
||||
"passwordRequired": "Password * (min. 8 characters)",
|
||||
"passwordMin8": "Password must be at least 8 characters.",
|
||||
"newPassword": "New password",
|
||||
"firstName": "First name",
|
||||
"lastName": "Last name",
|
||||
"nickname": "Username",
|
||||
"nicknamePlaceholder": "Username * (visible to others)",
|
||||
"noAccount": "No account yet?",
|
||||
|
||||
@ -28,8 +28,6 @@
|
||||
"passwordRequired": "Mot de passe * (min. 8 caractères)",
|
||||
"passwordMin8": "Le mot de passe doit comporter au moins 8 caractères.",
|
||||
"newPassword": "Nouveau mot de passe",
|
||||
"firstName": "Prénom",
|
||||
"lastName": "Nom",
|
||||
"nickname": "Pseudo",
|
||||
"nicknamePlaceholder": "Pseudo * (visible par les autres)",
|
||||
"noAccount": "Pas encore de compte ?",
|
||||
|
||||
@ -47,7 +47,7 @@ type AuthState = {
|
||||
signUp: (
|
||||
email: string,
|
||||
password: string,
|
||||
metadata: { username: string; firstName?: string; lastName?: string; avatarId: string; avatarUrl: string }
|
||||
metadata: { username: string; avatarId: string; avatarUrl: string }
|
||||
) => Promise<{ error?: string }>;
|
||||
signOut: () => Promise<void>;
|
||||
signInWithOAuth: (provider: 'google' | 'apple') => Promise<{ error?: string }>;
|
||||
@ -124,8 +124,6 @@ export const useAuthStore = create<AuthState>((set) => ({
|
||||
options: {
|
||||
data: {
|
||||
username: metadata.username,
|
||||
first_name: metadata.firstName ?? '',
|
||||
last_name: metadata.lastName ?? '',
|
||||
avatar_id: metadata.avatarId,
|
||||
avatar_url: metadata.avatarUrl,
|
||||
locale: currentLocale(),
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user