first commit

This commit is contained in:
Beyhan Oğur
2026-04-26 21:37:58 +03:00
commit 8b1fbdee99
104 changed files with 23398 additions and 0 deletions

300
ADMIN_USER_SETUP.md Normal file
View File

@@ -0,0 +1,300 @@
# Admin Kullanıcı Oluşturma
## Komut
Admin kullanıcı oluşturmak için:
```bash
./main seed-admin
```
## Varsayılan Admin Bilgileri
Komut çalıştırıldığında aşağıdaki bilgilerle admin kullanıcı oluşturulur:
- **Email:** `admin@gauth.local`
- **Password:** `Admin@123`
- **Username:** `admin`
- **Role:** `admin` (tüm yetkiler)
## Güvenlik Uyarısı
⚠️ **İlk login sonrası şifrenizi mutlaka değiştirin!**
## Login Testi
Admin ile login:
```bash
curl -X POST http://localhost:8080/v1/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "admin@gauth.local",
"password": "Admin@123"
}'
```
**Başarılı Yanıt:**
```json
{
"access_token": "...",
"refresh_token": "...",
"user_id": "...",
"username": "admin",
"email": "admin@gauth.local",
"roles": [
{
"name": "admin",
"permissions": [
{"name": "user:read"},
{"name": "user:write"},
{"name": "admin:access"}
]
}
]
}
```
## Admin Yetkili Endpoint'ler
Admin kullanıcısı aşağıdaki endpoint'lere erişebilir:
### Kullanıcı Yönetimi
```bash
# Tüm kullanıcıları listele
GET /v1/admin/users
# Kullanıcı ara
GET /v1/admin/users/search?q=email@example.com
# Kullanıcı detayı
GET /v1/admin/users/{user_id}
# Yeni kullanıcı oluştur
POST /v1/admin/users
# Kullanıcı güncelle
PUT /v1/admin/users/{user_id}
# Kullanıcı sil (soft delete)
DELETE /v1/admin/users/{user_id}
# Kullanıcı sil (hard delete - kalıcı)
DELETE /v1/admin/users/{user_id}?hard=true
# Kullanıcıya rol ata
POST /v1/admin/users/{user_id}/roles
# Kullanıcıdan rol kaldır
DELETE /v1/admin/users/{user_id}/roles/{role_name}
```
### CORS Ayarları
```bash
# CORS Whitelist
GET /v1/settings/cors/whitelist
POST /v1/settings/cors/whitelist
PUT /v1/settings/cors/whitelist/{id}
DELETE /v1/settings/cors/whitelist/{id}
# CORS Blacklist
GET /v1/settings/cors/blacklist
POST /v1/settings/cors/blacklist
PUT /v1/settings/cors/blacklist/{id}
DELETE /v1/settings/cors/blacklist/{id}
```
### Rate Limit Ayarları
```bash
# Rate limit ayarları
GET /v1/settings/ratelimit
PUT /v1/settings/ratelimit/{id}
```
## Örnek: Admin Token ile API Kullanımı
```bash
# 1. Admin login
RESPONSE=$(curl -s -X POST http://localhost:8080/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"admin@gauth.local","password":"Admin@123"}')
# 2. Token'ı al
TOKEN=$(echo $RESPONSE | jq -r '.access_token')
# 3. Kullanıcıları listele
curl -X GET http://localhost:8080/v1/admin/users \
-H "Authorization: Bearer $TOKEN"
```
## Hard Delete (Kalıcı Silme) Örnekleri
### 1. Önce Kullanıcı ID'sini Bul
```bash
# Admin login ve token al
TOKEN=$(curl -s -X POST http://localhost:8080/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"admin@gauth.local","password":"Admin@123"}' | jq -r '.access_token')
# Email ile kullanıcı ara
curl -X GET "http://localhost:8080/v1/admin/users/search?q=test@example.com" \
-H "Authorization: Bearer $TOKEN"
```
**Yanıt örneği:**
```json
{
"users": [
{
"id": "6df5465d-b8e6-44d2-970a-f682cb428e80",
"username": "testuser",
"email": "test@example.com",
"email_verified": false
}
]
}
```
### 2. Soft Delete (Varsayılan)
Kullanıcı `deleted_at` timestamp ile işaretlenir, veritabanından silinmez:
```bash
# Soft delete
curl -X DELETE "http://localhost:8080/v1/admin/users/6df5465d-b8e6-44d2-970a-f682cb428e80" \
-H "Authorization: Bearer $TOKEN"
```
**Başarılı Yanıt:**
```json
{
"message": "User deleted soft successfully"
}
```
### 3. Hard Delete (Kalıcı Silme)
Kullanıcı ve tüm ilişkili kayıtları (user_roles, social_accounts) kalıcı olarak silinir:
```bash
# Hard delete
curl -X DELETE "http://localhost:8080/v1/admin/users/6df5465d-b8e6-44d2-970a-f682cb428e80?hard=true" \
-H "Authorization: Bearer $TOKEN"
```
**Başarılı Yanıt:**
```json
{
"message": "User deleted permanently successfully"
}
```
### 4. Tam Örnek (Login'den Hard Delete'e)
```bash
#!/bin/bash
# Admin login
echo "🔐 Admin login..."
LOGIN_RESPONSE=$(curl -s -X POST http://localhost:8080/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"admin@gauth.local","password":"Admin@123"}')
TOKEN=$(echo $LOGIN_RESPONSE | jq -r '.access_token')
if [ "$TOKEN" = "null" ]; then
echo "❌ Login failed!"
exit 1
fi
echo "✅ Login successful!"
echo "Token: ${TOKEN:0:20}..."
# Kullanıcı ara
echo ""
echo "🔍 Searching user..."
SEARCH_RESULT=$(curl -s -X GET "http://localhost:8080/v1/admin/users/search?q=test@example.com" \
-H "Authorization: Bearer $TOKEN")
USER_ID=$(echo $SEARCH_RESULT | jq -r '.users[0].id')
if [ "$USER_ID" = "null" ]; then
echo "❌ User not found!"
exit 1
fi
echo "✅ User found!"
echo "User ID: $USER_ID"
# Hard delete
echo ""
echo "🗑️ Hard deleting user..."
DELETE_RESULT=$(curl -s -X DELETE "http://localhost:8080/v1/admin/users/$USER_ID?hard=true" \
-H "Authorization: Bearer $TOKEN")
echo "Response: $DELETE_RESULT"
# Verify deletion
echo ""
echo "✔️ Verifying deletion..."
VERIFY=$(curl -s -X GET "http://localhost:8080/v1/admin/users/$USER_ID" \
-H "Authorization: Bearer $TOKEN")
echo "Verification: $VERIFY"
```
### 5. Toplu Silme Scripti
```bash
#!/bin/bash
# Kullanıcıları listele ve hard delete yap
TOKEN=$(curl -s -X POST http://localhost:8080/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"admin@gauth.local","password":"Admin@123"}' | jq -r '.access_token')
# Test kullanıcılarını sil (email'i test içeren)
USER_IDS=$(curl -s -X GET "http://localhost:8080/v1/admin/users/search?q=test" \
-H "Authorization: Bearer $TOKEN" | jq -r '.users[].id')
for USER_ID in $USER_IDS; do
echo "Deleting user: $USER_ID"
curl -s -X DELETE "http://localhost:8080/v1/admin/users/$USER_ID?hard=true" \
-H "Authorization: Bearer $TOKEN"
echo ""
done
```
## Hard Delete ile Soft Delete Farkları
| Özellik | Soft Delete | Hard Delete |
|---------|-------------|-------------|
| **Komut** | `DELETE /v1/admin/users/{id}` | `DELETE /v1/admin/users/{id}?hard=true` |
| **Veritabanı** | `deleted_at` timestamp set edilir | Tamamen silinir |
| **İlişkili Kayıtlar** | Korunur | Silinir (user_roles, social_accounts) |
| **Geri Getirme** | Mümkün (restore edilebilir) | İmkansız |
| **Kullanım** | Güvenli, varsayılan | Dikkatli kullanılmalı |
## Güvenlik Notları
⚠️ **HARD DELETE DİKKAT:**
- Hard delete **geri alınamaz**
- Tüm kullanıcı verileri kalıcı olarak silinir
- İlişkili tüm kayıtlar (roller, sosyal hesaplar) silinir
- Üretim ortamında dikkatli kullanılmalıdır
- Yedek almadan hard delete yapmayın
## Notlar
- Admin kullanıcı email doğrulaması gerektirmez (`email_verified: true`)
- Admin kullanıcı zaten varsa komut hata vermez
- Soft-deleted admin varsa restore edilir
- Admin rolü otomatik olarak atanır
## Şifre Değiştirme
Admin şifresini değiştirmek için user update endpoint'ini kullanabilirsiniz veya başka bir admin oluşturabilirsiniz.