Enterprise User Authentication
POST/company/auth/login
Endpunkt zur Authentifizierung administrativer Benutzer registrierter Unternehmen.
Führt die folgenden Operationen aus:
- Validiert E-Mail- und Passwortformat
- Sucht Benutzer in der Datenbank (sowohl in company_user als auch in trucker_user als Fallback)
- Verifiziert Passwort mit gespeichertem Hash
- Prüft den Kontostatus (aktiv/gesperrt)
- Speichert letzte IP und Zugriffsdatum
- Generiert JWT-Token mit Benutzeransprüchen
- Protokolliert Zugriff im Verlauf
- Prüft/erstellt Stripe-Konto, falls nicht vorhanden
- Ruft Abonnementstatus ab
Detaillierter Ablauf:
- Client sendet E-Mail und Passwort im JSON-Format
- Server validiert Pflichtfelder (400 bei Fehlen)
- Sucht Benutzer per E-Mail (400 bei Nichtexistenz)
- Verifiziert Passwort mit bcrypt (400 bei Nichtübereinstimmung)
- Prüft Kontostatus (401 bei inaktiv/gesperrt)
- Aktualisiert letzte Zugriffsdaten (IP, Datum)
- Generiert JWT-Token mit Benutzer- und Unternehmensdaten
- Prüft/erstellt Stripe-Konto, falls nicht vorhanden
- Ruft Abonnementstatus des Benutzers ab
- Gibt Token mit vollständigen Benutzerdaten zurück
Sicherheit:
- Erfordert HTTPS
- Passwörter werden gehasht übertragen
- Token haben konfigurierbare Ablaufzeit
Beispielanfrage:
{
email: admin@unternehmen.com,
password: SicheresPasswort123!
}
Beispielantwort bei Erfolg:
\{
token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...,
expiresIn: 1712345678901,
_id: 507f1f77bcf86cd799439011
<Heading
id={"request"}
as={"h2"}
className={"openapi-tabs__heading"}
children={"Request"}
>
</Heading>
<ParamsDetails
parameters={[]}
>
</ParamsDetails>
<RequestSchema
title={"Body"}
body={{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"E-Mail des Benutzers","example":"admin@empresa.com"},"password":{"type":"string","format":"password","description":"Benutzerpasswort","example":"Contraseña123!"}},"required":["email","password"],"title":"LoginRequest"},"example":{"email":"companytest@test.com","password":"Test1234"}}},"required":true}}
>
</RequestSchema>
<StatusCodes
id={undefined}
label={undefined}
responses={{"200":{"description":"Authentifizierung erfolgreich","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"JWT-Token zur Authentifizierung","example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."},"expiresIn":{"type":"integer","format":"int64","description":"Ablaufzeitstempel des Tokens in Millisekunden (Unix-Epoche)","example":1712345678901},"_id":{"type":"string","description":"Benutzer-ID","example":"507f1f77bcf86cd799439011"},"role":{"type":"string","description":"Rolle des Benutzers im System","enum":["admin","gestor","dev"],"example":"admin"},"status":{"type":"boolean","description":"Status des Benutzerkontos","example":true},"emailVerified":{"type":"boolean","description":"Gibt an, ob die E-Mail verifiziert wurde","example":true},"refresh_time":{"type":"integer","description":"Token-Aktualisierungszeit in Stunden","example":3},"name":{"type":"string","description":"Benutzername","example":"Juan"},"lastname":{"type":"string","description":"Nachname des Benutzers","example":"Pérez García"},"country":{"type":"string","description":"Benutzers Ländercode","example":"esp"},"accountType":{"type":"string","description":"Kontotyp","example":"multitennant"},"hasSign":{"type":"boolean","description":"Geben Sie an, ob für das Konto eine digitale Signatur eingerichtet ist.","example":true},"hasPaymentMethod":{"type":"boolean","description":"Gibt an, ob das Konto über eine konfigurierte Zahlungsmethode verfügt.","example":true},"subscriptionStatus":{"type":"object","description":"Abonnementstatus des Benutzers","properties":{"hasSubscription":{"type":"boolean","description":"Geben Sie an, ob ein aktives Abonnement besteht.","example":true},"subscriptionType":{"type":"string","description":"Abonnementstyp","example":"Basic Plan"}}}},"title":"TokenResponse"}}},"headers":{}},"400":{"description":"Fehlende Daten oder falsche Anmeldeinformationen","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"integer","example":400},"message":{"type":"string","enum":["FORM_DATA_NOT_VALID","WRONG_CREDENTIALS"],"example":"WRONG_CREDENTIALS"}}}}},"headers":{}},"401":{"description":"Ungültiger Benutzer oder ungültiges Unternehmen.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"integer","example":401},"message":{"type":"string","enum":["CIA_NOT_FOUND","USER_NOT_ACTIVE","ACCOUNT_BLOCKED"],"example":"USER_NOT_ACTIVE"}}}}},"headers":{}}}}
>
</StatusCodes>