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 [email, setEmail] = useState('');
|
||||||
const [password, setPassword] = useState('');
|
const [password, setPassword] = useState('');
|
||||||
const [firstName, setFirstName] = useState('');
|
|
||||||
const [lastName, setLastName] = useState('');
|
|
||||||
const [nickname, setNickname] = useState('');
|
const [nickname, setNickname] = useState('');
|
||||||
const [avatarId, setAvatarId] = useState('spider');
|
const [avatarId, setAvatarId] = useState('spider');
|
||||||
const [termsAccepted, setTermsAccepted] = useState(false);
|
const [termsAccepted, setTermsAccepted] = useState(false);
|
||||||
@ -93,8 +91,6 @@ export default function SignUpScreen() {
|
|||||||
setSubmitting(true);
|
setSubmitting(true);
|
||||||
const res = await signUp(email.trim(), password, {
|
const res = await signUp(email.trim(), password, {
|
||||||
username: nickname.trim(),
|
username: nickname.trim(),
|
||||||
firstName: firstName.trim() || undefined,
|
|
||||||
lastName: lastName.trim() || undefined,
|
|
||||||
avatarId,
|
avatarId,
|
||||||
avatarUrl: getAvatarUrl(avatarId),
|
avatarUrl: getAvatarUrl(avatarId),
|
||||||
});
|
});
|
||||||
@ -186,27 +182,6 @@ export default function SignUpScreen() {
|
|||||||
onChangeText={setPassword}
|
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
|
<TextInput
|
||||||
className="bg-neutral-100 rounded-xl mb-6"
|
className="bg-neutral-100 rounded-xl mb-6"
|
||||||
style={INPUT_STYLE}
|
style={INPUT_STYLE}
|
||||||
|
|||||||
@ -28,8 +28,6 @@
|
|||||||
"passwordRequired": "كلمة المرور * (8 أحرف على الأقل)",
|
"passwordRequired": "كلمة المرور * (8 أحرف على الأقل)",
|
||||||
"passwordMin8": "يجب أن تتكون كلمة المرور من 8 أحرف على الأقل.",
|
"passwordMin8": "يجب أن تتكون كلمة المرور من 8 أحرف على الأقل.",
|
||||||
"newPassword": "كلمة مرور جديدة",
|
"newPassword": "كلمة مرور جديدة",
|
||||||
"firstName": "الاسم الأول",
|
|
||||||
"lastName": "اسم العائلة",
|
|
||||||
"nickname": "اسم المستخدم",
|
"nickname": "اسم المستخدم",
|
||||||
"nicknamePlaceholder": "اسم المستخدم * (مرئي للآخرين)",
|
"nicknamePlaceholder": "اسم المستخدم * (مرئي للآخرين)",
|
||||||
"noAccount": "ليس لديك حساب؟",
|
"noAccount": "ليس لديك حساب؟",
|
||||||
|
|||||||
@ -28,8 +28,6 @@
|
|||||||
"passwordRequired": "Passwort * (min. 8 Zeichen)",
|
"passwordRequired": "Passwort * (min. 8 Zeichen)",
|
||||||
"passwordMin8": "Passwort muss mindestens 8 Zeichen haben.",
|
"passwordMin8": "Passwort muss mindestens 8 Zeichen haben.",
|
||||||
"newPassword": "Neues Passwort",
|
"newPassword": "Neues Passwort",
|
||||||
"firstName": "Vorname",
|
|
||||||
"lastName": "Nachname",
|
|
||||||
"nickname": "Benutzername",
|
"nickname": "Benutzername",
|
||||||
"nicknamePlaceholder": "Benutzername * (sichtbar für andere)",
|
"nicknamePlaceholder": "Benutzername * (sichtbar für andere)",
|
||||||
"noAccount": "Noch kein Konto?",
|
"noAccount": "Noch kein Konto?",
|
||||||
|
|||||||
@ -28,8 +28,6 @@
|
|||||||
"passwordRequired": "Password * (min. 8 characters)",
|
"passwordRequired": "Password * (min. 8 characters)",
|
||||||
"passwordMin8": "Password must be at least 8 characters.",
|
"passwordMin8": "Password must be at least 8 characters.",
|
||||||
"newPassword": "New password",
|
"newPassword": "New password",
|
||||||
"firstName": "First name",
|
|
||||||
"lastName": "Last name",
|
|
||||||
"nickname": "Username",
|
"nickname": "Username",
|
||||||
"nicknamePlaceholder": "Username * (visible to others)",
|
"nicknamePlaceholder": "Username * (visible to others)",
|
||||||
"noAccount": "No account yet?",
|
"noAccount": "No account yet?",
|
||||||
|
|||||||
@ -28,8 +28,6 @@
|
|||||||
"passwordRequired": "Mot de passe * (min. 8 caractères)",
|
"passwordRequired": "Mot de passe * (min. 8 caractères)",
|
||||||
"passwordMin8": "Le mot de passe doit comporter au moins 8 caractères.",
|
"passwordMin8": "Le mot de passe doit comporter au moins 8 caractères.",
|
||||||
"newPassword": "Nouveau mot de passe",
|
"newPassword": "Nouveau mot de passe",
|
||||||
"firstName": "Prénom",
|
|
||||||
"lastName": "Nom",
|
|
||||||
"nickname": "Pseudo",
|
"nickname": "Pseudo",
|
||||||
"nicknamePlaceholder": "Pseudo * (visible par les autres)",
|
"nicknamePlaceholder": "Pseudo * (visible par les autres)",
|
||||||
"noAccount": "Pas encore de compte ?",
|
"noAccount": "Pas encore de compte ?",
|
||||||
|
|||||||
@ -47,7 +47,7 @@ type AuthState = {
|
|||||||
signUp: (
|
signUp: (
|
||||||
email: string,
|
email: string,
|
||||||
password: string,
|
password: string,
|
||||||
metadata: { username: string; firstName?: string; lastName?: string; avatarId: string; avatarUrl: string }
|
metadata: { username: string; avatarId: string; avatarUrl: string }
|
||||||
) => Promise<{ error?: string }>;
|
) => Promise<{ error?: string }>;
|
||||||
signOut: () => Promise<void>;
|
signOut: () => Promise<void>;
|
||||||
signInWithOAuth: (provider: 'google' | 'apple') => Promise<{ error?: string }>;
|
signInWithOAuth: (provider: 'google' | 'apple') => Promise<{ error?: string }>;
|
||||||
@ -124,8 +124,6 @@ export const useAuthStore = create<AuthState>((set) => ({
|
|||||||
options: {
|
options: {
|
||||||
data: {
|
data: {
|
||||||
username: metadata.username,
|
username: metadata.username,
|
||||||
first_name: metadata.firstName ?? '',
|
|
||||||
last_name: metadata.lastName ?? '',
|
|
||||||
avatar_id: metadata.avatarId,
|
avatar_id: metadata.avatarId,
|
||||||
avatar_url: metadata.avatarUrl,
|
avatar_url: metadata.avatarUrl,
|
||||||
locale: currentLocale(),
|
locale: currentLocale(),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user