7.0 KiB
7.0 KiB
Admin Kullanıcı Oluşturma
Komut
Admin kullanıcı oluşturmak için:
./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:
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:
{
"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
# 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ı
# 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ı
# Rate limit ayarları
GET /v1/settings/ratelimit
PUT /v1/settings/ratelimit/{id}
Örnek: Admin Token ile API Kullanımı
# 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
# 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:
{
"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:
# 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:
{
"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:
# 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:
{
"message": "User deleted permanently successfully"
}
4. Tam Örnek (Login'den Hard Delete'e)
#!/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
#!/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.