MikaList/game_collection
2024-09-02 11:14:15 +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: update README to include user edit and delete endpoints information 2024-09-02 11:12:54 +02:00
requirements.txt feat: implement JWT authentication for user management 2024-09-02 10:51:50 +02:00
user_management.py feat: allow admin to update user password without viewing it 2024-09-02 11:14:15 +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
    }
    
  • 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.