From 5ff9fe20dfb679880751a62a1426135d96b024b1 Mon Sep 17 00:00:00 2001 From: Jannis Date: Tue, 28 Apr 2026 09:51:30 +0000 Subject: [PATCH] =?UTF-8?q?docs:=20Gitea=20OAuth2=20Auth-Sektion=20und=20T?= =?UTF-8?q?ech-Stack-Eintrag=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 52 ++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 42 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index f418326..1a1e186 100644 --- a/README.md +++ b/README.md @@ -71,6 +71,7 @@ Go eignet sich hervorragend als Backend-Sprache – die Standardbibliothek ist s **Externe Dependencies (minimal):** - `pgx` – PostgreSQL-Treiber (direktes SQL, kein ORM) - `godotenv` – `.env`-Datei laden +- `golang.org/x/oauth2` – OAuth2-Flow für Gitea-Login **Backend-Aufgaben:** - `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** **Schema-Übersicht:** @@ -141,20 +171,22 @@ CREATE TABLE webhook_events ( - [ ] **v0.2** – Webhook-Listener für Echtzeit-Updates - [ ] **v0.3** – Issues & Milestones im Dashboard anzeigen - [ ] **v0.4** – Issues direkt aus dem Dashboard erstellen/schließen (bi-direktional) -- [ ] **v0.5** – Verknüpfung mit Freelancer-Dashboard (Repos = Projekte) -- [ ] **v1.0** – Auth, Multi-User, öffentliche Projektsseiten +- [ ] **v0.5** – Gitea OAuth2 Login +- [ ] **v0.6** – Verknüpfung mit Freelancer-Dashboard (Repos = Projekte) +- [ ] **v1.0** – Multi-User, öffentliche Projektsseiten --- ## 🔧 Tech Stack -| Schicht | Technologie | -|------------|------------------------------| -| Frontend | SvelteKit + TailwindCSS | -| Backend | Go + net/http (Standardlib) | -| Datenbank | PostgreSQL + pgx | -| API | Gitea REST API v1 | -| Deployment | Docker Compose | +| Schicht | Technologie | +|--------------|--------------------------------| +| Frontend | SvelteKit + TailwindCSS | +| Backend | Go + net/http (Standardlib) | +| Datenbank | PostgreSQL + pgx | +| Auth | Gitea OAuth2 + golang.org/x/oauth2 | +| API | Gitea REST API v1 | +| Deployment | Docker Compose | --- @@ -166,7 +198,7 @@ git clone https://gitea.starfour.de/Jannis/gitea-projekt-dashboard # Umgebungsvariablen setzen 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 docker compose up -d