Files
next-go-blog/docs/QUICK_REFERENCE.md
Beyhan Oğur 6d95e27114 first commit
2026-04-26 22:16:43 +03:00

6.0 KiB
Raw Permalink Blame History

🚀 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 ı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 ı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 ı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 ı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