WS-6: Google-Login via Laravel Socialite

- Socialite installiert; oauth_provider/oauth_provider_id an users (Migration).
- GoogleController (redirect/callback) + SocialAuthService: De-Dup über E-Mail,
  neuer User aktiv + verifiziert + customer (Verifizierung über den Google-
  Kanal), offener Selbst-Registrierer wird onboardet, deaktivierter Account wird
  NICHT reaktiviert. Abschluss über die gemeinsame LoginRedirect-Logik
  (rollengerecht, 403-sicher).
- Routen /auth/google/redirect + /auth/google/callback (guest), "Mit Google
  anmelden/registrieren"-Buttons auf Login und Register.
- config/services.php google + .env.example-Keys; Sicherheits-/Deployment-Doku
  ergänzt (Keys, Redirect-URI, Migration).

Tests: neuer User, De-Dup bestehender User, deaktivierter Account blockiert,
unverifizierter Registrierer onboardet, fehlgeschlagener Callback.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-06-16 10:39:19 +00:00
parent ae79d5bee4
commit 068a5a4b49
13 changed files with 715 additions and 1 deletions

View file

@ -94,10 +94,25 @@ Aus einer gezielten Auth-Prüfung umgesetzt:
---
## 6c. Google-Login (Socialite, WS-6)
`/auth/google/redirect` → Google, `/auth/google/callback``GoogleController`. Auflösung in `App\Services\Auth\SocialAuthService`:
- **De-Dup über E-Mail:** bestehende E-Mail wird wiederverwendet (keine Dubletten), nur `oauth_provider`/`oauth_provider_id` werden verknüpft.
- **Neuer User:** aktiv + verifiziert + `customer` (Verifizierung gilt über den Google-Kanal als erfüllt).
- **Offener Selbst-Registrierer (unverifiziert):** wird über Google onboardet (verifiziert + aktiv + customer).
- **Deaktivierter, verifizierter Account:** wird **nicht** reaktiviert → Login blockiert.
- Abschluss über dieselbe `LoginRedirect`-Logik (rollengerecht, 403-sicher).
**Deployment-Voraussetzungen:**
- `composer install` (neue Abhängigkeit `laravel/socialite`).
- Migration `add_oauth_provider_columns_to_users` (siehe unten).
- ENV: `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET`, `GOOGLE_REDIRECT_URI`. Die Redirect-URI muss in der Google Cloud Console exakt der Callback-URL entsprechen (`https://<domain>/auth/google/callback`).
## 7. Deployment-Reihenfolge (Migrationen dieser Phase)
1. `2026_06_15_101337_backfill_email_verified_at_for_existing_users` — verhindert Lockout.
2. `2026_06_16_080913_downgrade_legacy_editor_users_to_customer` — schließt die Admin-Überberechtigung.
3. `2026_06_16_103238_add_oauth_provider_columns_to_users` — Provider-Verknüpfung für Google-Login.
**Nach Deploy prüfen:**
- `editor`-Rolle hat keine Legacy-User mehr.