Files
AuthCentral/ADMIN_USER_SETUP.md
Beyhan Oğur 8b1fbdee99 first commit
2026-04-26 21:37:58 +03:00

7.0 KiB
Raw Blame History

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.