Authentifizierung

Die Gruppen-Admin API verwendet Laravel Sanctum für die Authentifizierung mit Bearer Tokens.

POST /api/login

Benutzer anmelden und API-Token erhalten

Request Parameter
Parameter Typ Erforderlich Beschreibung
username string Ja Benutzername des Accounts
password string Ja Passwort des Accounts
Request Beispiel
curl -X POST https://kerzenheim.gruppen-admin.de/api/login \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "username": "admin",
    "password": "your-password"
  }'
Response (Erfolg)
{
  "success": true,
  "message": "success",
  "data": {
    "id": 1,
    "username": "admin",
    "email": "admin@kerzenheim.gruppen-admin.de",
    "firstname": "Admin",
    "lastname": "Administrator",
    "api_key": "1|abcd1234efgh5678ijkl9012mnop3456qrst7890uvwx"
  },
  "api_key": {
    "accessToken": {
      "name": "API-Key",
      "abilities": ["*"],
      "tokenable_id": 1,
      "tokenable_type": "App\\Models\\User",
      "updated_at": "2026-03-11T12:00:00.000000Z",
      "created_at": "2026-03-11T12:00:00.000000Z",
      "id": 1
    },
    "plainTextToken": "1|abcd1234efgh5678ijkl9012mnop3456qrst7890uvwx"
  }
}
Response (Fehler)
{
  "success": false,
  "message": "Login Fail, pls check password"
}
Wichtig: Speichern Sie den plainTextToken sicher ab. Dieser wird für alle weiteren API-Requests benötigt.
GET /api/user

Daten des aktuell angemeldeten Benutzers abrufen

Request Header
Authorization: Bearer YOUR_API_TOKEN
Accept: application/json
Request Beispiel
curl -X GET https://kerzenheim.gruppen-admin.de/api/user \
  -H "Authorization: Bearer 1|abcd1234efgh5678ijkl9012mnop3456qrst7890uvwx" \
  -H "Accept: application/json"
Response
{
  "id": 1,
  "username": "admin",
  "email": "admin@kerzenheim.gruppen-admin.de",
  "firstname": "Admin",
  "lastname": "Administrator",
  "gender_id": 1,
  "type_id": 1,
  "phonenumber": "+49 123 456789",
  "phonenumber_mobile": "+49 170 1234567",
  "street": "Hauptstraße",
  "housenumber": "1",
  "zip": "12345",
  "city": "Kerzenheim",
  "is_vegetarian": false,
  "can_swimm": true,
  "created_at": "2026-01-01T10:00:00.000000Z",
  "updated_at": "2026-03-11T12:00:00.000000Z"
}

Token verwenden

Nach erfolgreichem Login verwenden Sie den erhaltenen Token für alle authentifizierten Requests:

1. Token im Authorization Header
Authorization: Bearer YOUR_PLAIN_TEXT_TOKEN
2. Beispiel-Request mit Token
curl -X GET https://kerzenheim.gruppen-admin.de/api/user \
  -H "Authorization: Bearer 1|abcd1234efgh5678ijkl9012mnop3456qrst7890uvwx" \
  -H "Accept: application/json"
$token = '1|abcd1234efgh5678ijkl9012mnop3456qrst7890uvwx';

$client = new GuzzleHttp\Client([
    'base_uri' => 'https://kerzenheim.gruppen-admin.de/api/',
    'headers' => [
        'Authorization' => 'Bearer ' . $token,
        'Accept' => 'application/json',
    ]
]);

$response = $client->request('GET', 'user');
$data = json_decode($response->getBody(), true);
const token = '1|abcd1234efgh5678ijkl9012mnop3456qrst7890uvwx';

const response = await fetch('https://kerzenheim.gruppen-admin.de/api/user', {
    method: 'GET',
    headers: {
        'Authorization': `Bearer ${token}`,
        'Accept': 'application/json'
    }
});

const data = await response.json();

Token-Verwaltung

Token-Lebensdauer

API-Tokens haben standardmäßig keine Ablaufzeit. Sie bleiben gültig bis:

  • Der Token explizit widerrufen wird
  • Der Benutzer sein Passwort ändert
  • Der Benutzer deaktiviert wird
Best Practices
Sicherheit:
  • Speichern Sie Tokens niemals im Frontend (LocalStorage, Cookies ohne HttpOnly)
  • Übertragen Sie Tokens nur über HTTPS
  • Verwenden Sie separate Tokens für verschiedene Anwendungen
  • Widerrufen Sie Tokens, wenn sie nicht mehr benötigt werden
Token Widerrufen

Um einen Token zu widerrufen, löschen Sie ihn aus der Datenbank:

// Im Laravel Backend
$user->currentAccessToken()->delete();

// Oder alle Tokens des Benutzers
$user->tokens()->delete();

Authentifizierungs-Fehler

HTTP Status Bedeutung Lösung
401 Unauthorized - Token fehlt oder ungültig Prüfen Sie, ob der Authorization Header korrekt gesetzt ist
403 Forbidden - Keine Berechtigung für diese Ressource Benutzer hat nicht die erforderlichen Rechte
419 CSRF Token Mismatch Fügen Sie Accept: application/json Header hinzu
429 Too Many Requests - Rate Limit überschritten Warten Sie bis zum Reset (siehe X-RateLimit-Reset Header)
Beispiel: 401 Unauthorized
{
  "message": "Unauthenticated."
}

API testen

Sie können die API mit verschiedenen Tools testen:

1. Postman

Importieren Sie diese Umgebungsvariablen:

{
  "base_url": "https://kerzenheim.gruppen-admin.de/api",
  "api_token": "YOUR_TOKEN_HERE"
}
2. Insomnia

Nutzen Sie Bearer Token Authentication im Auth-Tab

3. Browser DevTools
// In der Browser-Console
fetch('https://kerzenheim.gruppen-admin.de/api/user', {
    headers: {
        'Authorization': 'Bearer YOUR_TOKEN',
        'Accept': 'application/json'
    }
})
.then(r => r.json())
.then(console.log);