MikaList/game_collection
2024-09-03 14:55:24 +02:00
..
app.py fix: replace Image.ANTIALIAS with Image.LANCZOS in resize_image function to resolve AttributeError 2024-09-03 14:55:24 +02:00
database.py feat: create default admin user when initializing the database 2024-09-02 10:45:58 +02:00
models.py feat: implement password hashing for user authentication and storage 2024-09-02 10:43:07 +02:00
README.md docs: update README to document new game search functionality and adjust section numbering 2024-09-02 17:03:10 +02:00
requirements.txt feat: add Pillow to requirements.txt for image resizing functionality 2024-09-03 14:52:17 +02:00
user_management.py feat: allow admins to edit the "owned" status of games 2024-09-02 11:43:41 +02:00

Game Collection API

Dies ist ein Backend mit Flask, das eine Sammlung von Spielen verwaltet und eine SQLite-Datenbank verwendet.

Endpunkte

1. Spiele hinzufügen

  • URL: /games
  • Method: POST
  • Body:
    {
        "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:
      {
          "message": "Game added!"
      }
      

2. Alle Spiele abrufen

  • URL: /games
  • Method: GET
  • Antwort:
    • Status 200: Liste aller Spiele.
    • Beispiel:
      [
          {
              "id": 1,
              "image": "URL zum Bild",
              "title": "Titel des Spiels",
              "date": "Kaufdatum",
              "buyer": "Name des Käufers",
              "owned": true
          }
      ]
      

3. Spiel bearbeiten

  • URL: /games/<game_id>
  • Method: PUT
  • Body:
    {
        "title": "Neuer Titel",
        "image": "Neue URL zum Bild",
        "owned": true/false  # Optional, um den Besitzstatus zu aktualisieren
    }
    
  • Antwort:
    • Status 200: Spiel erfolgreich aktualisiert.
    • Beispiel:
      {
          "message": "Game updated!"
      }
      
    • Status 401: Unbefugter Zugriff.
    • Beispiel:
      {
          "message": "Unauthorized access!"
      }
      
    • Status 404: Spiel nicht gefunden.
    • Beispiel:
      {
          "message": "Game not found!"
      }
      

4. Spiel löschen

  • URL: /games/<game_id>
  • Method: DELETE
  • Antwort:
    • Status 200: Spiel erfolgreich gelöscht (nur für Administratoren).
    • Beispiel:
      {
          "message": "Game deleted!"
      }
      
    • Status 401: Unbefugter Zugriff.
    • Beispiel:
      {
          "message": "Unauthorized access! Only admins can delete games."
      }
      
    • Status 404: Spiel nicht gefunden.
    • Beispiel:
      {
          "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:
      [
          {
              "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:
      {
          "message": "No search term provided!"
      }
      
    • Status 500: Fehler beim Abrufen der Seite.
    • Beispiel:
      {
          "message": "Error fetching the page."
      }
      

6. Benutzer erstellen

  • URL: /users
  • Method: POST
  • Body:
    {
        "username": "Benutzername",
        "password": "Passwort",
        "role": "user/admin"  # Optional, Standard ist 'user'
    }
    
  • Antwort:
    • Status 201: Benutzer erfolgreich erstellt (nur für Administratoren).
    • Beispiel:
      {
          "message": "User created!"
      }
      

7. Benutzeranmeldung

  • URL: /users/login
  • Method: POST
  • Body:
    {
        "username": "Benutzername",
        "password": "Passwort"
    }
    
  • Antwort:
    • Status 200: Anmeldung erfolgreich.
    • Beispiel:
      {
          "message": "Login successful!",
          "role": "user/admin"
      }
      
    • Status 401: Ungültige Anmeldedaten.
    • Beispiel:
      {
          "message": "Invalid credentials!"
      }
      

8. Alle Benutzer abrufen

  • URL: /users
  • Method: GET
  • Antwort:
    • Status 200: Liste aller Benutzer.
    • Beispiel:
      [
          {
              "id": 1,
              "username": "Benutzername",
              "role": "user/admin",
              "last_login": "2023-10-01 12:00:00"
          }
      ]
      

9. Benutzer bearbeiten

  • URL: /users/<user_id>
  • Method: PUT
  • Body:
    {
        "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:
      {
          "message": "User updated!"
      }
      
    • Status 401: Unbefugter Zugriff.
    • Beispiel:
      {
          "message": "Unauthorized access! Only admins can edit users."
      }
      
    • Status 404: Benutzer nicht gefunden.
    • Beispiel:
      {
          "message": "User not found!"
      }
      

10. Benutzer löschen

  • URL: /users/<user_id>
  • Method: DELETE
  • Antwort:
    • Status 200: Benutzer erfolgreich gelöscht (nur für Administratoren).
    • Beispiel:
      {
          "message": "User deleted!"
      }
      
    • Status 401: Unbefugter Zugriff.
    • Beispiel:
      {
          "message": "Unauthorized access! Only admins can delete users."
      }
      
    • Status 404: Benutzer nicht gefunden.
    • Beispiel:
      {
          "message": "User not found!"
      }
      

Installation

  1. Klone das Repository.
  2. Installiere die Abhängigkeiten:
    pip install -r requirements.txt
    
  3. Starte die Anwendung:
    python app.py
    

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.