Voyti

Voyti

User management, authentication & authorization

GDPR

Data export and account anonymization ship as a separate package, voyti-gdpr. Core only ever collects mandatory personal-data-processing consent at signup and offers hard account deletion. Export and anonymization are optional, and this package provides this. It reuses core’s ConsentForm for password re-confirmation, and core’s User, UserProfile, and UserSessions models to build the export. When voyti-social-auth is also installed, connected social accounts are included in the export too.

Create an issue
// config/params.php
return [
    'yiirocks/voyti' => [
        'gdpr' => [
            'gdprAnonymizePrefix' => 'GDPR',
        ],
    ],
];
gdprExportProperties array
['email', 'username', 'userProfile.public_email', 'userProfile.name', 'userProfile.gravatar_email', 'userProfile.location', 'userProfile.website', 'userProfile.bio', 'userProfile.birthday', 'userSessions', 'userSocialAccount']
Properties included in the data export (JSON). Unrecognized names are silently omitted, not exported as null. userSessions exports each login's ip, user_agent, created_at, updated_at; userSocialAccount exports each linked account's provider, username, email, created_at, and data (the decoded provider profile payload).
gdprAnonymizePrefix string
'GDPR'
Prefix used for the masked email/username on anonymization, followed by the user's numeric id (e.g. GDPR42, GDPR42@example.com).
Route name Method Path Purpose
voyti/user-privacy-export GET settings/privacy/export Download personal data as a JSON attachment
voyti/user-privacy-anonymize GET, POST settings/privacy/anonymize Anonymize account (password-confirmed). Masks email/username, blocks login, rotates the auth key; the row itself is kept

Anonymizing an account dispatches GdprEvent (carrying the now-anonymized User) after it’s saved. Nothing consumes it by default. Attach your own listener via the event dispatcher configuration for things like admin notification or downstream data-retention cleanup.