Zum Hauptinhalt springen

Enterprise User Authentication

POST 

/company/auth/login

Endpunkt zur Authentifizierung administrativer Benutzer registrierter Unternehmen.
Führt die folgenden Operationen aus:

  1. Validiert E-Mail- und Passwortformat
  2. Sucht Benutzer in der Datenbank (sowohl in company_user als auch in trucker_user als Fallback)
  3. Verifiziert Passwort mit gespeichertem Hash
  4. Prüft den Kontostatus (aktiv/gesperrt)
  5. Speichert letzte IP und Zugriffsdatum
  6. Generiert JWT-Token mit Benutzeransprüchen
  7. Protokolliert Zugriff im Verlauf
  8. Prüft/erstellt Stripe-Konto, falls nicht vorhanden
  9. Ruft Abonnementstatus ab

Detaillierter Ablauf:

  1. Client sendet E-Mail und Passwort im JSON-Format
  2. Server validiert Pflichtfelder (400 bei Fehlen)
  3. Sucht Benutzer per E-Mail (400 bei Nichtexistenz)
  4. Verifiziert Passwort mit bcrypt (400 bei Nichtübereinstimmung)
  5. Prüft Kontostatus (401 bei inaktiv/gesperrt)
  6. Aktualisiert letzte Zugriffsdaten (IP, Datum)
  7. Generiert JWT-Token mit Benutzer- und Unternehmensdaten
  8. Prüft/erstellt Stripe-Konto, falls nicht vorhanden
  9. Ruft Abonnementstatus des Benutzers ab
  10. 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>