# 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.