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

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