MikaList/game_collection
2024-09-02 11:42:20 +02:00
..
app.py feat: implement authentication for adding and retrieving games 2024-09-02 11:08:07 +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: aktualisiere README.md zur Beschreibung der Benutzerbearbeitung und Passwortoption 2024-09-02 11:14:48 +02:00
requirements.txt feat: implement JWT authentication for user management 2024-09-02 10:51:50 +02:00
user_management.py feat: add edit_game endpoint to allow users to update game title and image 2024-09-02 11:42:20 +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. 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!"
      }
      

4. 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!"
      }
      

5. 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"
          }
      ]
      

6. 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!"
      }
      

7. 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.