diff --git a/game_collection/README.md b/game_collection/README.md index 962f4ee..33156cb 100644 --- a/game_collection/README.md +++ b/game_collection/README.md @@ -1,304 +1,51 @@ # Game Collection API -Dies ist ein Backend mit Flask, das eine Sammlung von Spielen verwaltet und eine SQLite-Datenbank verwendet. +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. ## Endpunkte -### 1. Spiele hinzufügen +### Benutzerverwaltung -- **URL:** `/games` -- **Method:** `POST` -- **Body:** - ```json - { - "image": "URL zum Bild", - "title": "Titel des Spiels", - "date": "Kaufdatum (YYYY-MM-DD)", - "buyer": "Name des Käufers", - "owned": true/false - } - ``` -- **Antwort:** - - **Status 201:** Spiel erfolgreich hinzugefügt. - - **Beispiel:** - ```json - { - "message": "Game added!" - } - ``` +- **POST /users**: Erstellt einen neuen Benutzer (nur für Admins). +- **POST /users/login**: Meldet einen Benutzer an und gibt ein JWT-Token zurück. +- **GET /users**: Gibt eine Liste aller Benutzer zurück (nur für Admins). +- **PUT /users/**: Aktualisiert die Informationen eines Benutzers (nur für Admins). +- **DELETE /users/**: Löscht einen Benutzer (nur für Admins). +- **PUT /users/change_password**: Ändert das Passwort des angemeldeten Benutzers. Erfordert das aktuelle Passwort und das neue Passwort. -### 2. Alle Spiele abrufen +### Spieleverwaltung -- **URL:** `/games` -- **Method:** `GET` -- **Antwort:** - - **Status 200:** Liste aller Spiele. - - **Beispiel:** - ```json - [ - { - "id": 1, - "image": "URL zum Bild", - "title": "Titel des Spiels", - "date": "Kaufdatum", - "buyer": "Name des Käufers", - "owned": true - } - ] - ``` - -### 3. Spiel bearbeiten - -- **URL:** `/games/` -- **Method:** `PUT` -- **Body:** - ```json - { - "title": "Neuer Titel", - "image": "Neue URL zum Bild", - "owned": true/false # Optional, um den Besitzstatus zu aktualisieren - } - ``` -- **Antwort:** - - **Status 200:** Spiel erfolgreich aktualisiert. - - **Beispiel:** - ```json - { - "message": "Game updated!" - } - ``` - - **Status 401:** Unbefugter Zugriff. - - **Beispiel:** - ```json - { - "message": "Unauthorized access!" - } - ``` - - **Status 404:** Spiel nicht gefunden. - - **Beispiel:** - ```json - { - "message": "Game not found!" - } - ``` - -### 4. Spiel löschen - -- **URL:** `/games/` -- **Method:** `DELETE` -- **Antwort:** - - **Status 200:** Spiel erfolgreich gelöscht (nur für Administratoren). - - **Beispiel:** - ```json - { - "message": "Game deleted!" - } - ``` - - **Status 401:** Unbefugter Zugriff. - - **Beispiel:** - ```json - { - "message": "Unauthorized access! Only admins can delete games." - } - ``` - - **Status 404:** Spiel nicht gefunden. - - **Beispiel:** - ```json - { - "message": "Game not found!" - } - ``` - -### 5. Spiele suchen - -- **URL:** `/games/search` -- **Method:** `GET` -- **Query Parameter:** - - `search_keywords`: Das Suchwort für die Spiele. -- **Antwort:** - - **Status 200:** Liste der gefundenen Spiele. - - **Beispiel:** - ```json - [ - { - "title": "Titel des Spiels", - "link": "URL zum Spiel", - "image_link": "URL zum Bild", - "release_date": "Veröffentlichungsdatum", - "price": "Preis", - "rating": "Bewertung" - } - ] - ``` - - **Status 400:** Kein Suchbegriff angegeben. - - **Beispiel:** - ```json - { - "message": "No search term provided!" - } - ``` - - **Status 500:** Fehler beim Abrufen der Seite. - - **Beispiel:** - ```json - { - "message": "Error fetching the page." - } - ``` - -### 6. Benutzer erstellen - -- **URL:** `/users` -- **Method:** `POST` -- **Body:** - ```json - { - "username": "Benutzername", - "password": "Passwort", - "role": "user/admin" # Optional, Standard ist 'user' - } - ``` -- **Antwort:** - - **Status 201:** Benutzer erfolgreich erstellt (nur für Administratoren). - - **Beispiel:** - ```json - { - "message": "User created!" - } - ``` - -### 7. Benutzeranmeldung - -- **URL:** `/users/login` -- **Method:** `POST` -- **Body:** - ```json - { - "username": "Benutzername", - "password": "Passwort" - } - ``` -- **Antwort:** - - **Status 200:** Anmeldung erfolgreich. - - **Beispiel:** - ```json - { - "message": "Login successful!", - "role": "user/admin" - } - ``` - - **Status 401:** Ungültige Anmeldedaten. - - **Beispiel:** - ```json - { - "message": "Invalid credentials!" - } - ``` - -### 8. Alle Benutzer abrufen - -- **URL:** `/users` -- **Method:** `GET` -- **Antwort:** - - **Status 200:** Liste aller Benutzer. - - **Beispiel:** - ```json - [ - { - "id": 1, - "username": "Benutzername", - "role": "user/admin", - "last_login": "2023-10-01 12:00:00" - } - ] - ``` - -### 9. Benutzer bearbeiten - -- **URL:** `/users/` -- **Method:** `PUT` -- **Body:** - ```json - { - "username": "Neuer Benutzername", - "role": "user/admin", # Optional - "password": "Neues Passwort" # Optional, Passwort kann bearbeitet werden, wird aber nicht angezeigt - } - ``` -- **Antwort:** - - **Status 200:** Benutzer erfolgreich aktualisiert (nur für Administratoren). - - **Beispiel:** - ```json - { - "message": "User updated!" - } - ``` - - **Status 401:** Unbefugter Zugriff. - - **Beispiel:** - ```json - { - "message": "Unauthorized access! Only admins can edit users." - } - ``` - - **Status 404:** Benutzer nicht gefunden. - - **Beispiel:** - ```json - { - "message": "User not found!" - } - ``` - -### 10. Benutzer löschen - -- **URL:** `/users/` -- **Method:** `DELETE` -- **Antwort:** - - **Status 200:** Benutzer erfolgreich gelöscht (nur für Administratoren). - - **Beispiel:** - ```json - { - "message": "User deleted!" - } - ``` - - **Status 401:** Unbefugter Zugriff. - - **Beispiel:** - ```json - { - "message": "Unauthorized access! Only admins can delete users." - } - ``` - - **Status 404:** Benutzer nicht gefunden. - - **Beispiel:** - ```json - { - "message": "User not found!" - } - ``` +- **POST /games**: Fügt ein neues Spiel zur Sammlung hinzu. Erfordert ein Bild-URL und den Titel des Spiels. +- **GET /games**: Gibt eine Liste aller Spiele in der Sammlung zurück. +- **DELETE /games/**: Löscht ein Spiel aus der Sammlung. +- **GET /games/search**: Sucht nach Spielen basierend auf einem Suchbegriff. ## Installation -1. Klone das Repository. +1. Klone das Repository: + ```bash + git clone + cd game_collection + ``` + 2. Installiere die Abhängigkeiten: ```bash pip install -r requirements.txt ``` + 3. Starte die Anwendung: ```bash - python app.py + flask run ``` +## Datenbank + +Die Anwendung verwendet SQLite zur Speicherung von Benutzern und Spielen. Die Datenbank wird beim ersten Start der Anwendung automatisch erstellt. + +## Sicherheit + +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. + ## Lizenz -Dieses Projekt ist lizenziert unter der MIT-Lizenz. - -## Datenbankstruktur - -Die Datenbank enthält zwei Tabellen: `games` und `users`. Die `users`-Tabelle hat die folgenden Spalten: -- `id`: Eindeutige Benutzer-ID -- `username`: Eindeutiger Benutzername -- `password`: Passwort des Benutzers (verschlüsselt gespeichert) -- `role`: Rolle des Benutzers (user oder admin) -- `last_login`: Zeitstempel der letzten Anmeldung - -## Standardbenutzer - -Beim Erstellen der Datenbank wird ein Standardbenutzer mit dem Benutzernamen "admin" und dem Passwort "admin" erstellt. Das Passwort wird verschlüsselt gespeichert. Nur Administratoren können neue Benutzer erstellen. +Dieses Projekt ist unter der MIT-Lizenz lizenziert.