# `/login`

## POST /login

Dieser Endpoint ermöglicht es Benutzern, sich in das System einzuloggen. Dabei wird eine Authentifizierung durchgeführt und bei erfolgreicher Authentifizierung ein Token zurückgegeben, der für nachfolgende API-Aufrufe verwendet wird.

## Anforderungsparameter

Der /login Endpoint erwartet folgende Daten im Body:

-   `username`: Der Benutzername des Benutzers, der sich anmelden möchte. Typ: String.

-   `password`: Das Passwort des Benutzers, der sich anmelden möchte. Typ: String.

Die Daten müssen als LoginData Objekt übergeben werden.

```ts
const loginData: LoginData = {
    username: "IhrBenutzername",
    password: "IhrPasswort",
}
```

## Antwort

Bei erfolgreicher Anmeldung gibt der /login Endpoint ein LoginResponse Objekt zurück. Dieses Objekt enthält:

-   `token`: Ein Authentifizierungstoken, das für nachfolgende API-Aufrufe verwendet wird. Typ: String.

-   `user`: Ein User Objekt, das Informationen über den eingeloggten Benutzer enthält.

```ts
interface User {
    id: string // Eindeutige ID des Benutzers
    insertTime: string // Zeitpunkt der Erstellung des Benutzerkontos
    updateTime: string // Letzter Zeitpunkt der Aktualisierung des Benutzerkontos
    username: string // Benutzername des Benutzers
    role: number // Rolle des Benutzers im System (0=admin, 1 = editor, 2 = user)
    permissions: any[] // Berechtigungen des Benutzers
    meta: {
        // Weitere optionale Benutzerinformationen
        [key: string]: any
    }
}
```

## Beispielaufruf

```ts
const loginData: LoginData = {
    username: "IhrBenutzername",
    password: "IhrPasswort",
}

postLogin(loginData)
    .then((response) => {
        console.log("Erfolgreiche Anmeldung! Token: ", response.token)
        console.log("Benutzerinformationen: ", response.user)
    })
    .catch((error) => {
        console.log("Fehler beim Login: ", error)
    })
```
