Dies ist eine Flask-basierte API zur Verwaltung einer Sammlung von Spielen. Die API ermöglicht das Hinzufügen, Abrufen, Bearbeiten und Löschen von Spielen sowie die Benutzerverwaltung.
- **POST /users**: Erstellt einen neuen Benutzer. Dieser Endpunkt ist nur für Administratoren zugänglich. Der Benutzer muss einen Benutzernamen und ein Passwort angeben. Der Administrator kann auch die Rolle des neuen Benutzers festlegen (entweder 'user' oder 'admin').
- **POST /users/login**: Meldet einen Benutzer an und gibt ein JWT-Token zurück. Der Benutzer muss seinen Benutzernamen und sein Passwort angeben. Bei erfolgreicher Anmeldung wird ein Token generiert, das für zukünftige Anfragen verwendet werden kann.
- **GET /users**: Gibt eine Liste aller Benutzer zurück. Dieser Endpunkt ist nur für Administratoren zugänglich. Die Antwort enthält Informationen wie Benutzer-ID, Benutzernamen, Rolle und das Datum der letzten Anmeldung.
- **PUT /users/<int:user_id>**: Aktualisiert die Informationen eines Benutzers. Nur Administratoren können diesen Endpunkt verwenden. Der Administrator kann den Benutzernamen, die Rolle und das Passwort des Benutzers aktualisieren.
- **DELETE /users/<int:user_id>**: Löscht einen Benutzer. Dieser Endpunkt ist nur für Administratoren zugänglich. Der Administrator muss die Benutzer-ID angeben, um den Benutzer zu löschen.
- **PUT /users/change_password**: Ändert das Passwort des angemeldeten Benutzers. Der Benutzer muss sein aktuelles Passwort und das neue Passwort angeben. Wenn das aktuelle Passwort korrekt ist, wird das Passwort des Benutzers aktualisiert.
- **POST /games**: Fügt ein neues Spiel zur Sammlung hinzu. Der Benutzer muss ein Bild-URL und den Titel des Spiels angeben. Die API lädt das Bild herunter, speichert es lokal und erstellt einen neuen Spieleintrag in der Datenbank. Der Benutzer, der das Spiel hinzufügt, wird als Käufer festgelegt.
- **GET /games**: Gibt eine Liste aller Spiele in der Sammlung zurück. Der Benutzer muss authentifiziert sein. Die Antwort enthält Informationen zu jedem Spiel, einschließlich Titel, Bild (als Base64-kodiert), Kaufdatum, Käufer und ob das Spiel im Besitz des Benutzers ist.
- **DELETE /games/<int:game_id>**: Löscht ein Spiel aus der Sammlung. Der Benutzer muss authentifiziert sein und die Spiele-ID angeben. Wenn das Spiel gefunden wird, wird es aus der Datenbank und vom Dateisystem gelöscht.
- **GET /games/search**: Sucht nach Spielen basierend auf einem Suchbegriff. Der Benutzer muss authentifiziert sein. Der Suchbegriff wird als Abfrageparameter übergeben. Die API sendet eine Anfrage an eine externe Website, um Spiele zu finden, die dem Suchbegriff entsprechen, und gibt die Ergebnisse zurück.
Die API verwendet JWT für die Authentifizierung. Stelle sicher, dass du einen geheimen Schlüssel in deiner Umgebung festlegst, um die Token zu signieren.