# 🚀 GAuth-Central - Quick Reference ## 🏃 Hızlı Başlatma ```bash # Standalone Mode (Mevcut PostgreSQL & Redis ile) ./start.sh # Docker ile (Tüm servisler) ./start-with-docker.sh # Manuel go run main.go ``` ## 🔗 Önemli URL'ler | Servis | URL | Açıklama | |--------|-----|----------| | API | http://localhost:8080 | Ana API | | Swagger | http://localhost:8080/docs/index.html | API Dokümantasyonu | | PostgreSQL | localhost:5432 | Database | | Redis | localhost:6379 | Cache | ## 📝 Temel Komutlar ```bash # Docker Servisleri docker-compose up -d # Başlat docker-compose down # Durdur docker-compose down -v # Durdur + Volume'ları sil docker-compose logs -f app # Logları izle docker-compose ps # Servis durumları # Go Komutları go run main.go # Çalıştır go build -o main . # Derle go mod tidy # Bağımlılıkları temizle swag init -g main.go # Swagger güncelle # Redis Komutları docker exec -it gauth_redis redis-cli > PING # Bağlantı testi > KEYS * # Tüm key'leri listele > GET user:UUID # User cache getir > DEL session:TOKEN # Session sil > FLUSHDB # Tüm cache'i temizle # PostgreSQL Komutları docker exec -it gauth_postgres psql -U postgres -d gauth \dt # Tabloları listele \d users # Users tablosu yapısı SELECT * FROM roles; # Rolleri listele SELECT * FROM users LIMIT 10; # Kullanıcıları listele ``` ## 🔧 Environment Variables | Değişken | Varsayılan | Açıklama | |----------|------------|----------| | `PORT` | 8080 | Server portu | | `DB_URL` | - | PostgreSQL bağlantısı | | `REDIS_URL` | - | Redis bağlantısı | | `JWT_SECRET` | - | JWT gizli anahtar | | `GOOGLE_CLIENT_ID` | - | Google OAuth | | `GITHUB_CLIENT_ID` | - | GitHub OAuth | ## 📡 API Endpoints ### Public Endpoints ```bash # Register POST /v1/auth/register { "email": "user@example.com", "password": "SecurePass123!", "user_name": "username" } # Login POST /v1/auth/login { "email": "user@example.com", "password": "SecurePass123!" } # OAuth GET /v1/auth/google GET /v1/auth/github # Verify Email GET /v1/auth/verify-email?token=... # Refresh Token POST /v1/auth/refresh { "refresh_token": "..." } ``` ### Protected Endpoints (Requires Authorization Header) ```bash # Get User Info GET /v1/auth/me Authorization: Bearer # Validate Token GET /v1/auth/validate Authorization: Bearer ``` ## 🛡️ Rate Limits | Endpoint | Limit | Süre | |----------|-------|------| | `/v1/auth/login` | 5 | 1 dakika | | `/v1/auth/register` | 3 | 5 dakika | | Genel API | 100 | 1 dakika | ## 🗄️ Redis Keys | Pattern | Açıklama | TTL | |---------|----------|-----| | `user:{id}` | User cache | 1 saat | | `session:{token}` | Session data | 24 saat | | `blacklist:{token}` | Invalidated tokens | 24 saat | | `ratelimit:{key}` | Rate limit counters | Dinamik | | `email_verify:{email}` | Email verification | Dinamik | | `password_reset:{email}` | Password reset | Dinamik | ## 🧪 Test Komutları ```bash # Health Check curl http://localhost:8080/ # Register Test curl -X POST http://localhost:8080/v1/auth/register \ -H "Content-Type: application/json" \ -d '{"email":"test@test.com","password":"Test123!","user_name":"testuser"}' # Login Test curl -X POST http://localhost:8080/v1/auth/login \ -H "Content-Type: application/json" \ -d '{"email":"test@test.com","password":"Test123!"}' # Get User Info (with token) curl http://localhost:8080/v1/auth/me \ -H "Authorization: Bearer YOUR_TOKEN_HERE" ``` ## 🐛 Sorun Giderme ```bash # Servis durumlarını kontrol et docker-compose ps # App loglarını kontrol et docker-compose logs app # Redis bağlantısı docker exec -it gauth_redis redis-cli PING # PostgreSQL bağlantısı docker exec -it gauth_postgres pg_isready -U postgres # Container'ı yeniden başlat docker-compose restart app # Tüm servisleri yeniden oluştur docker-compose down docker-compose up -d --build ``` ## 📊 Database Schema ```sql -- Users Table users ( id UUID PRIMARY KEY, email VARCHAR UNIQUE, user_name VARCHAR NOT NULL, password_hash VARCHAR, email_verified BOOLEAN, email_verify_token VARCHAR, created_at TIMESTAMP, updated_at TIMESTAMP ) -- Roles Table roles ( id UUID PRIMARY KEY, name VARCHAR UNIQUE, description TEXT ) -- Permissions Table permissions ( id UUID PRIMARY KEY, name VARCHAR UNIQUE, description TEXT ) ``` ## 🔐 CORS Yapılandırması Varsayılan: `http://localhost:3000` Değiştirmek için `main.go`: ```go AllowOrigins: []string{ "http://localhost:3000", "https://yourdomain.com", } ``` ## 📚 Cache Service Örnekleri ```go import "gauth-central/internal/services" cache := services.NewCacheService() // User caching cache.SetUser(userID, user, 1*time.Hour) user, err := cache.GetUser(userID) // Session cache.SetSession(token, userID, 24*time.Hour) userID, err := cache.GetSession(token) // Rate limiting count, err := cache.IncrementRateLimit("login:"+ip, 1*time.Minute) if count > 5 { // Rate limit exceeded } // Token blacklist cache.BlacklistToken(token, 24*time.Hour) isBlacklisted, err := cache.IsTokenBlacklisted(token) ``` ## 🎯 Önemli Dosyalar | Dosya | Açıklama | |-------|----------| | `main.go` | Ana uygulama | | `config/config.go` | Yapılandırma | | `internal/database/redis.go` | Redis bağlantısı | | `internal/services/cache_service.go` | Cache servisi | | `api/routes/routes.go` | Route tanımları | | `api/middlewares/rate_limit_middleware.go` | Rate limiting | | `docker-compose.yml` | Docker yapılandırması | | `.env` | Environment variables | ## 📖 Dokümantasyon - `README.md` - Genel proje bilgisi - `SETUP.md` - Detaylı kurulum rehberi - `CHANGELOG.md` - Versiyon geçmişi - `QUICK_REFERENCE.md` - Bu dosya --- 💡 **İpucu**: Swagger UI'da tüm endpoint'leri test edebilirsiniz: http://localhost:8080/docs/index.html