6.0 KiB
6.0 KiB
🚀 GAuth-Central - Quick Reference
🏃 Hızlı Başlatma
# 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
# 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
# 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)
# Get User Info
GET /v1/auth/me
Authorization: Bearer <token>
# Validate Token
GET /v1/auth/validate
Authorization: Bearer <token>
🛡️ 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ı
# 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
# 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
-- 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:
AllowOrigins: []string{
"http://localhost:3000",
"https://yourdomain.com",
}
📚 Cache Service Örnekleri
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 bilgisiSETUP.md- Detaylı kurulum rehberiCHANGELOG.md- Versiyon geçmişiQUICK_REFERENCE.md- Bu dosya
💡 İpucu: Swagger UI'da tüm endpoint'leri test edebilirsiniz: http://localhost:8080/docs/index.html