first commit
This commit is contained in:
300
belgeler/ADMIN_USER_SETUP.md
Normal file
300
belgeler/ADMIN_USER_SETUP.md
Normal 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.
|
||||
Reference in New Issue
Block a user