docs: Gitea OAuth2 Auth-Sektion und Tech-Stack-Eintrag hinzugefügt

This commit is contained in:
2026-04-28 09:51:30 +00:00
parent 5b84cf7d9b
commit 5ff9fe20df

View File

@@ -71,6 +71,7 @@ Go eignet sich hervorragend als Backend-Sprache die Standardbibliothek ist s
**Externe Dependencies (minimal):** **Externe Dependencies (minimal):**
- `pgx` PostgreSQL-Treiber (direktes SQL, kein ORM) - `pgx` PostgreSQL-Treiber (direktes SQL, kein ORM)
- `godotenv` `.env`-Datei laden - `godotenv` `.env`-Datei laden
- `golang.org/x/oauth2` OAuth2-Flow für Gitea-Login
**Backend-Aufgaben:** **Backend-Aufgaben:**
- `GET /api/projects` alle getaggten Repos aus der DB zurückgeben - `GET /api/projects` alle getaggten Repos aus der DB zurückgeben
@@ -91,6 +92,35 @@ log.Fatal(http.ListenAndServe(":8080", mux))
--- ---
## 🔐 Auth: **Gitea OAuth2**
Gitea kann selbst als OAuth2-Provider fungieren Nutzer loggen sich mit ihrem Gitea-Account im Dashboard ein, genau wie "Login with GitHub".
### Setup in Gitea:
1. In Gitea unter **Settings → Applications → OAuth2 Applications** eine neue App registrieren
2. `Client ID` und `Client Secret` in die `.env` eintragen
3. Redirect URI auf `https://dashboard.example.com/auth/callback` setzen
### Flow:
```
Nutzer klickt "Login mit Gitea"
→ Weiterleitung zur Gitea-Instanz (Authorization Endpoint)
→ Nutzer bestätigt Zugriff
→ Gitea leitet mit Authorization Code zurück
→ Backend tauscht Code gegen Access Token
→ Nutzer ist eingeloggt, Gitea-Identität bekannt
```
**Vorteile:**
- Kein eigenes Auth-System nötig Gitea übernimmt Passwörter und Sessions
- Nutzeridentität direkt bekannt → Repos und Issues können nutzerbasiert gefiltert werden
- Schreibrechte (Issues erstellen/schließen) nur für den jeweiligen Repo-Owner
- Implementiert mit `golang.org/x/oauth2` offizielles Go-Paket, keine Drittanbieter-Lib nötig
---
## 🗄️ Datenbank: **PostgreSQL** ## 🗄️ Datenbank: **PostgreSQL**
**Schema-Übersicht:** **Schema-Übersicht:**
@@ -141,18 +171,20 @@ CREATE TABLE webhook_events (
- [ ] **v0.2** Webhook-Listener für Echtzeit-Updates - [ ] **v0.2** Webhook-Listener für Echtzeit-Updates
- [ ] **v0.3** Issues & Milestones im Dashboard anzeigen - [ ] **v0.3** Issues & Milestones im Dashboard anzeigen
- [ ] **v0.4** Issues direkt aus dem Dashboard erstellen/schließen (bi-direktional) - [ ] **v0.4** Issues direkt aus dem Dashboard erstellen/schließen (bi-direktional)
- [ ] **v0.5** Verknüpfung mit Freelancer-Dashboard (Repos = Projekte) - [ ] **v0.5** Gitea OAuth2 Login
- [ ] **v1.0** Auth, Multi-User, öffentliche Projektsseiten - [ ] **v0.6** Verknüpfung mit Freelancer-Dashboard (Repos = Projekte)
- [ ] **v1.0** Multi-User, öffentliche Projektsseiten
--- ---
## 🔧 Tech Stack ## 🔧 Tech Stack
| Schicht | Technologie | | Schicht | Technologie |
|------------|------------------------------| |--------------|--------------------------------|
| Frontend | SvelteKit + TailwindCSS | | Frontend | SvelteKit + TailwindCSS |
| Backend | Go + net/http (Standardlib) | | Backend | Go + net/http (Standardlib) |
| Datenbank | PostgreSQL + pgx | | Datenbank | PostgreSQL + pgx |
| Auth | Gitea OAuth2 + golang.org/x/oauth2 |
| API | Gitea REST API v1 | | API | Gitea REST API v1 |
| Deployment | Docker Compose | | Deployment | Docker Compose |
@@ -166,7 +198,7 @@ git clone https://gitea.starfour.de/Jannis/gitea-projekt-dashboard
# Umgebungsvariablen setzen # Umgebungsvariablen setzen
cp .env.example .env cp .env.example .env
# GITEA_URL, GITEA_TOKEN, DATABASE_URL, DASHBOARD_TAG eintragen # GITEA_URL, GITEA_TOKEN, GITEA_CLIENT_ID, GITEA_CLIENT_SECRET, DATABASE_URL, DASHBOARD_TAG eintragen
# Mit Docker starten # Mit Docker starten
docker compose up -d docker compose up -d