first commit
This commit is contained in:
76
GEMINI.md
Normal file
76
GEMINI.md
Normal file
@@ -0,0 +1,76 @@
|
||||
# Proje: GAuth-Central (Go-Gin Merkezi Kimlik Doğrulama Servisi)
|
||||
|
||||
## 1. Proje Özeti
|
||||
Bu proje, birden fazla istemci uygulama (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 1.25.7 (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
|
||||
/atahango
|
||||
├── /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.
|
||||
Reference in New Issue
Block a user