Authentication
Die common-api benutzt Laravel Sanctum (Personal Access Tokens) für alle API-Konsumenten. Webhooks von Weclapp werden über eine IP-Whitelist zugelassen (siehe Weclapp Webhooks).
Endpunkte
| Methode | Pfad | Auth | Beschreibung |
|---|---|---|---|
POST | /api/v1/login | öffentlich | Login → Bearer Token |
POST | /api/v1/logout | Sanctum | Token revoken |
GET | /api/v1/user | Sanctum | aktueller Nutzer |
1. Login
curl -X POST https://api.bluesafety.dev/api/v1/login \
-H 'Content-Type: application/json' \
-d '{
"email": "name@bluesafety.com",
"password": "geheim"
}'
Response:
{
"access_token": "1|eyJhbGciOi...",
"token_type": "Bearer"
}
2. Token verwenden
Jeder Request unter auth:sanctum braucht den Authorization: Bearer <token>-Header.
curl -X GET https://api.bluesafety.dev/api/v1/user \
-H 'Authorization: Bearer 1|eyJhbGciOi...'
3. Logout
curl -X POST https://api.bluesafety.dev/api/v1/logout \
-H 'Authorization: Bearer 1|eyJhbGciOi...'
Aus Code aufrufen
- JavaScript (fetch)
- JavaScript (axios)
- Laravel (Http-Client)
- Postman
const res = await fetch('https://api.bluesafety.dev/api/v1/login', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email, password }),
});
const { access_token } = await res.json();
// nachfolgende Calls
await fetch('https://api.bluesafety.dev/api/v1/grenke/index', {
headers: { Authorization: `Bearer ${access_token}` },
});
import axios from 'axios';
const api = axios.create({ baseURL: 'https://api.bluesafety.dev/api/v1' });
const { data } = await api.post('/login', { email, password });
api.defaults.headers.common.Authorization = `Bearer ${data.access_token}`;
const me = await api.get('/user');
use Illuminate\Support\Facades\Http;
$token = Http::post('https://api.bluesafety.dev/api/v1/login', [
'email' => config('services.commonapi.user'),
'password' => config('services.commonapi.pass'),
])->json('access_token');
$user = Http::withToken($token)
->get('https://api.bluesafety.dev/api/v1/user')
->json();
- Workspace: https://bluesafety.postman.co/
- Import OpenAPI v3:
https://api.bluesafety.dev/scramble/openapi.json - Collection-Variable
tokensetzen - Authorization-Type: Bearer Token →
{{token}}
Token-TTL & Revocation
Sanctum-Token haben standardmäßig kein Ablaufdatum. Konfiguriert wird das in config/sanctum.php (expiration). Token werden auf der DB-Tabelle personal_access_tokens abgelegt und können per tokens()->delete() direkt revoked werden.
Im Frontend gilt: niemals Token in localStorage ablegen, wenn die Seite anfällig für XSS ist. Stattdessen httpOnly-Cookie via Backend-Proxy (so macht's auch der common-docu Backend-Server für die geschützten Markdown-Bereiche).