2024-09-02 09:07:06 +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:**
```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!"
}
```
### 2. Alle Spiele abrufen
- **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
2024-09-02 10:32:59 +02:00
}
]
```
### 3. Benutzer erstellen
- **URL:** `/users`
- **Method:** `POST`
- **Body:**
```json
{
"username": "Benutzername",
"password": "Passwort",
"role": "user/admin" # Optional, Standard ist 'user'
}
```
- **Antwort:**
2024-09-02 11:10:57 +02:00
- **Status 201:** Benutzer erfolgreich erstellt (nur für Administratoren).
2024-09-02 10:32:59 +02:00
- **Beispiel:**
```json
{
"message": "User created!"
}
```
### 4. 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!"
}
```
### 5. 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"
}
2024-09-02 09:07:06 +02:00
]
```
2024-09-02 11:12:54 +02:00
### 6. Benutzer bearbeiten
- **URL:** `/users/<user_id>`
- **Method:** `PUT`
- **Body:**
```json
{
"username": "Neuer Benutzername",
2024-09-02 11:14:48 +02:00
"role": "user/admin", # Optional
"password": "Neues Passwort" # Optional, Passwort kann bearbeitet werden, wird aber nicht angezeigt
2024-09-02 11:12:54 +02:00
}
```
- **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!"
}
```
### 7. Benutzer löschen
- **URL:** `/users/<user_id>`
- **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!"
}
```
2024-09-02 09:07:06 +02:00
## Installation
1. Klone das Repository.
2. Installiere die Abhängigkeiten:
```bash
pip install -r requirements.txt
```
3. Starte die Anwendung:
```bash
python app.py
```
## Lizenz
Dieses Projekt ist lizenziert unter der MIT-Lizenz.
2024-09-02 10:35:36 +02:00
## Datenbankstruktur
Die Datenbank enthält zwei Tabellen: `games` und `users` . Die `users` -Tabelle hat die folgenden Spalten:
- `id` : Eindeutige Benutzer-ID
- `username` : Eindeutiger Benutzername
2024-09-02 10:48:07 +02:00
- `password` : Passwort des Benutzers (verschlüsselt gespeichert)
2024-09-02 10:35:36 +02:00
- `role` : Rolle des Benutzers (user oder admin)
- `last_login` : Zeitstempel der letzten Anmeldung
2024-09-02 10:48:07 +02:00
## Standardbenutzer
2024-09-02 11:10:57 +02:00
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.