Files
atahango/belgeler/QUICK_REFERENCE.md
Beyhan Oğur bbbf76b184 first commit
2026-04-26 21:35:24 +03:00

268 lines
6.0 KiB
Markdown
Raw 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.
# 🚀 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 <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ı
```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