Files
AuthCentral/AGENTS.md
Beyhan Oğur 8b1fbdee99 first commit
2026-04-26 21:37:58 +03:00

76 lines
3.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Proje: GAuth-Central (Go-Gin Merkezi Kimlik Doğrulama Servisi)
## 1. Proje Özeti
Bu proje, birden fazla istemci uygulama (özellikle Django backend) için merkezi bir kimlik doğrulama ve yetkilendirme (Identity Provider) hizmeti sunar. Go (Gin Framework) ile geliştirilecek olan bu servis; klasik e-posta kaydı, Google ve GitHub OAuth2 girişlerini yönetir ve başarılı giriş sonrası JWT (JSON Web Token) üretir.
## 2. Teknoloji Yığını
- **Dil:** Go (Golang)
- **Web Framework:** Gin Gonic
- **Veritabanı:** PostgreSQL (GORM üzerinden)
- **Kimlik Doğrulama:**
- JWT (github.com/golang-jwt/jwt/v5)
- OAuth2 (golang.org/x/oauth2 ve github.com/markbates/goth)
- **Güvenlik:** Bcrypt (şifre hashleme), CORS, Rate Limiting.
## 3. Klasör Yapısı
```text
/gauth-central
├── /api
│ ├── /handlers # HTTP istek işleyicileri
│ ├── /middlewares # JWT ve Auth kontrolleri
│ └── /routes # Route tanımları
├── /config # Env ve Konfigürasyon yönetimi
├── /internal
│ ├── /models # DB Modelleri (User, SocialAccount)
│ ├── /services # Auth ve JWT iş mantığı
│ └── /database # DB Bağlantısı ve Migration
├── /pkg # Yardımcı araçlar (utils)
├── .env # Gizli anahtarlar
├── go.mod
└── main.go
```
## 4. Veritabanı Modeli (GORM)
- **User:** `ID`, `Email`, `Password` (hash), `CreatedAt`, `UpdatedAt`.
- **SocialAccount:** `ID`, `UserID` (FK), `Provider` (google/github), `ProviderID`, `Email`.
## 5. API Uç Noktaları (Endpoints)
### Klasik Auth
- `POST /v1/auth/register`: E-posta ve şifre ile kayıt.
- `POST /v1/auth/login`: E-posta ve şifre ile giriş -> JWT döner.
### OAuth2 (Social Login)
- `GET /v1/auth/:provider`: (google/github) Kullanıcıyı ilgili platforma yönlendirir.
- `GET /v1/auth/:provider/callback`: Platformdan dönen veriyi işler, kullanıcıyı DB'de eşleştirir/oluşturur -> JWT döner.
### Doğrulama ve Yönetim
- `GET /v1/auth/validate`: İstemci uygulama (Django) bu endpoint'e JWT gönderir, servis kullanıcı bilgilerini doğrular.
- `POST /v1/auth/refresh`: Refresh token ile yeni Access Token üretimi.
## 6. JWT Tasarımı
- **Payload:**
```json
{
"sub": "user_uuid",
"email": "user@example.com",
"exp": 1738500000,
"iss": "gauth-central"
}
```
- **İmzalama:** HS256 veya RS256 algoritması kullanılmalıdır.
## 7. İstemci Entegrasyon Mantığı (Örn: Django)
1. Django, kullanıcıyı `GAuth/v1/auth/google` adresine yönlendirir.
2. GAuth işlemi tamamlar ve kullanıcıyı Django'nun callback URL'ine bir `?token=...` query parametresi ile geri gönderir.
3. Django, bu token'ı alır ve kendi session'ını oluşturmak için GAuth'un `/v1/auth/validate` servisini kullanır.
## 8. Gemini İçin Talimatlar (Implementation Rules)
- Kodları modüler yaz (Handlers, Services, Models ayrımı).
- `.env` dosyasından `CLIENT_ID`, `CLIENT_SECRET` ve `JWT_SECRET` okumayı unutma.
- Hata yönetimini (Error Handling) profesyonelce yap ve JSON formatında hata mesajları dön.
- CORS ayarlarını tüm istemciler (Django vb.) için yapılandırılabilir kıl.
- `github.com/markbates/goth` kütüphanesini kullanarak multi-provider desteğini uygula.
---
**Not:** Bu dosya projenin teknik rehberidir. Kod üretim aşamasında bu mimariye sadık kalınmalıdır.