b2in/dev/FORTIFY-SANCTUM-SETUP.md
2025-10-20 17:50:35 +02:00

185 lines
5.2 KiB
Markdown

# Laravel Fortify & Sanctum Setup
## Übersicht
Dieses Projekt wurde mit Laravel Fortify für die Authentifizierung und Laravel Sanctum für API-Token-Management konfiguriert. Die Authentifizierung verwendet Livewire-Komponenten mit Flux UI für eine moderne, reaktive Benutzeroberfläche.
## Installation
Die Pakete wurden bereits installiert und konfiguriert:
```bash
composer require laravel/fortify laravel/sanctum
```
## Konfiguration
### Fortify
- **Konfigurationsdatei**: `config/fortify.php`
- **Service Provider**: `app/Providers/FortifyServiceProvider.php`
- **Aktionen**: `app/Actions/Fortify/`
- **Livewire-Komponenten**: `resources/views/livewire/auth/`
### Sanctum
- **Konfigurationsdatei**: `config/sanctum.php`
- **Migrationen**: Ausgeführt
- **User Model**: Aktualisiert mit `HasApiTokens` Trait
## Features
### Fortify Features (aktiviert)
- ✅ Benutzerregistrierung (Livewire + Flux UI)
- ✅ Passwort-Reset (Livewire + Flux UI)
- ✅ Profilaktualisierung
- ✅ Passwort-Update
- ✅ Zwei-Faktor-Authentifizierung
- ⚠️ E-Mail-Verifizierung (deaktiviert in der Konfiguration)
### Sanctum Features
- ✅ API-Token-Erstellung
- ✅ Token-Revocation
- ✅ Geschützte API-Routen
## Technologie-Stack
- **Laravel Fortify**: Backend-Authentifizierung
- **Laravel Sanctum**: API-Token-Management
- **Livewire**: Reaktive Frontend-Komponenten
- **Flux UI**: Moderne UI-Komponenten
- **Volt**: Livewire-Komponenten-Syntax
## Routen
### Web-Authentifizierung (portal.b2in.test)
- `GET /login` - Anmeldeseite (Livewire)
- `POST /login` - Anmeldung (Livewire)
- `POST /logout` - Abmeldung
- `GET /register` - Registrierungsseite (Livewire)
- `POST /register` - Registrierung (Livewire)
- `GET /forgot-password` - Passwort vergessen (Livewire)
- `POST /forgot-password` - Passwort-Reset-Link senden (Livewire)
- `GET /reset-password/{token}` - Passwort zurücksetzen (Livewire)
- `POST /reset-password` - Neues Passwort setzen (Livewire)
- `GET /verify-email` - E-Mail-Verifizierung (Livewire)
- `GET /confirm-password` - Passwort bestätigen (Livewire)
### API-Routen (api.b2in.test)
- `GET /api/user` - Aktueller Benutzer (geschützt)
- `GET /api/profile` - Benutzerprofil (geschützt)
- `POST /api/login` - API-Anmeldung (öffentlich)
## Verwendung
### Web-Authentifizierung
1. Besuchen Sie `http://portal.b2in.test/login`
2. Registrieren Sie sich oder melden Sie sich an
3. Nutzen Sie die verschiedenen Authentifizierungsfeatures
### API-Authentifizierung
1. **Token erstellen**:
```bash
curl -X POST http://api.b2in.test/login \
-H "Content-Type: application/json" \
-d '{"email":"user@example.com","password":"password"}'
```
2. **Geschützte Route aufrufen**:
```bash
curl -X GET http://api.b2in.test/api/user \
-H "Authorization: Bearer YOUR_TOKEN_HERE"
```
### Zwei-Faktor-Authentifizierung
1. Aktivieren Sie 2FA in Ihren Benutzereinstellungen
2. Scannen Sie den QR-Code mit Ihrer Authentifizierungs-App
3. Geben Sie den Code bei der Anmeldung ein
## Livewire-Komponenten
Alle Auth-Komponenten befinden sich in `resources/views/livewire/auth/`:
- `login.blade.php` - Anmeldeseite mit Flux UI
- `register.blade.php` - Registrierungsseite mit Flux UI
- `forgot-password.blade.php` - Passwort vergessen mit Flux UI
- `reset-password.blade.php` - Passwort zurücksetzen mit Flux UI
- `verify-email.blade.php` - E-Mail-Verifizierung mit Flux UI
- `confirm-password.blade.php` - Passwort bestätigen mit Flux UI
### Flux UI Features
- Moderne, responsive Benutzeroberfläche
- Eingabevalidierung in Echtzeit
- Rate Limiting mit visuellen Feedback
- Dark Mode Unterstützung
- Barrierefreiheit
## Anpassungen
### Fortify-Konfiguration anpassen
Bearbeiten Sie `config/fortify.php` um Features zu aktivieren/deaktivieren:
```php
'features' => [
Features::registration(),
Features::resetPasswords(),
Features::emailVerification(), // Aktivieren für E-Mail-Verifizierung
Features::updateProfileInformation(),
Features::updatePasswords(),
Features::twoFactorAuthentication([
'confirm' => true,
'confirmPassword' => true,
]),
],
```
### Livewire-Komponenten anpassen
Bearbeiten Sie die Komponenten in `resources/views/livewire/auth/`:
```php
// Beispiel: Login-Komponente anpassen
new #[Layout('components.layouts.auth')] class extends Component {
#[Validate('required|string|email')]
public string $email = '';
// Ihre Anpassungen hier...
}
```
### Sanctum-Konfiguration anpassen
Bearbeiten Sie `config/sanctum.php` um Token-Einstellungen zu ändern:
```php
'expiration' => null, // Token-Ablaufzeit (null = nie)
'guard' => ['web'], // Guards für Sanctum
```
## Sicherheit
- Alle Passwörter werden automatisch gehashed
- CSRF-Schutz ist aktiviert
- Rate Limiting ist konfiguriert
- Zwei-Faktor-Authentifizierung ist verfügbar
- API-Tokens können widerrufen werden
- Livewire-Komponenten haben eingebaute Sicherheitsfeatures
## Nächste Schritte
1. Konfigurieren Sie E-Mail-Einstellungen in `.env` für Passwort-Reset
2. Aktivieren Sie E-Mail-Verifizierung falls gewünscht
3. Passen Sie die Livewire-Komponenten an Ihr Design an
4. Erstellen Sie zusätzliche API-Routen nach Bedarf
5. Konfigurieren Sie Flux UI Themes nach Ihren Wünschen