261 lines
7.5 KiB
Markdown
261 lines
7.5 KiB
Markdown
# API Quick Reference - Hard Delete
|
||
|
||
## 🎯 En Hızlı Yöntem (Copy-Paste)
|
||
|
||
### Email ile Kullanıcı Sil
|
||
|
||
```bash
|
||
# 1. Bu değişkenleri değiştir
|
||
EMAIL_TO_DELETE="test@example.com"
|
||
|
||
# 2. Komutu çalıştır (tek satır)
|
||
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') && USER_ID=$(curl -s -X GET "http://localhost:8080/v1/admin/users/search?q=$EMAIL_TO_DELETE" -H "Authorization: Bearer $TOKEN" | jq -r '.users[0].id') && curl -X DELETE "http://localhost:8080/v1/admin/users/$USER_ID?hard=true" -H "Authorization: Bearer $TOKEN" | jq '.'
|
||
```
|
||
|
||
### User ID ile Kullanıcı Sil
|
||
|
||
```bash
|
||
# 1. Bu değişkenleri değiştir
|
||
USER_ID_TO_DELETE="6df5465d-b8e6-44d2-970a-f682cb428e80"
|
||
|
||
# 2. Komutu çalıştır (tek satır)
|
||
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') && curl -X DELETE "http://localhost:8080/v1/admin/users/$USER_ID_TO_DELETE?hard=true" -H "Authorization: Bearer $TOKEN" | jq '.'
|
||
```
|
||
|
||
## 📋 API Endpoints Tablosu
|
||
|
||
| Endpoint | Method | Auth | Body/Params | Açıklama |
|
||
|----------|--------|------|-------------|----------|
|
||
| `/v1/auth/login` | POST | ❌ | `{"email":"admin@gauth.local","password":"Admin@123"}` | Admin login |
|
||
| `/v1/admin/users/search` | GET | ✅ | `?q=email@test.com` | Email ile kullanıcı ara |
|
||
| `/v1/admin/users` | GET | ✅ | `?page=1&limit=10` | Kullanıcıları listele |
|
||
| `/v1/admin/users/{id}` | GET | ✅ | - | Kullanıcı detayı |
|
||
| `/v1/admin/users/{id}` | DELETE | ✅ | - | Soft delete |
|
||
| `/v1/admin/users/{id}?hard=true` | DELETE | ✅ | - | **Hard delete** |
|
||
|
||
## 📝 POST/PUT İçin Gerekli Veriler
|
||
|
||
### Yeni Kullanıcı Oluştur
|
||
|
||
```bash
|
||
curl -X POST http://localhost:8080/v1/admin/users \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
-F "email=newuser@test.com" \
|
||
-F "password=password123" \
|
||
-F "user_name=New User" \
|
||
-F "email_verified=false" \
|
||
-F "roles=user"
|
||
```
|
||
|
||
**Gerekli Alanlar:**
|
||
- `email` (string, required) - Email adresi
|
||
- `password` (string, required) - Şifre (min 6 karakter)
|
||
- `user_name` (string, required) - Kullanıcı adı (min 3 karakter)
|
||
- `email_verified` (boolean, optional) - Email doğrulandı mı? (default: false)
|
||
- `roles` (string, optional) - Roller (virgülle ayrılmış: "admin,user")
|
||
- `avatar` (file, optional) - Profil resmi
|
||
|
||
### Kullanıcı Güncelle
|
||
|
||
```bash
|
||
curl -X PUT http://localhost:8080/v1/admin/users/{user_id} \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
-F "email=updated@test.com" \
|
||
-F "user_name=Updated Name" \
|
||
-F "email_verified=true" \
|
||
-F "is_active=true" \
|
||
-F "roles=admin,user"
|
||
```
|
||
|
||
**Güncellenebilir Alanlar:**
|
||
- `email` (string, optional)
|
||
- `user_name` (string, optional)
|
||
- `email_verified` (boolean, optional)
|
||
- `is_active` (boolean, optional)
|
||
- `roles` (string, optional)
|
||
- `avatar` (file, optional)
|
||
|
||
### Rol Ata/Kaldır
|
||
|
||
```bash
|
||
# Rol ata
|
||
curl -X POST http://localhost:8080/v1/admin/users/{user_id}/roles \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"roles": ["admin", "user"]}'
|
||
|
||
# Rol kaldır
|
||
curl -X DELETE http://localhost:8080/v1/admin/users/{user_id}/roles/admin \
|
||
-H "Authorization: Bearer $TOKEN"
|
||
```
|
||
|
||
## 🔄 Tam İş Akışı Örnekleri
|
||
|
||
### Örnek 1: Kullanıcı Oluştur → Kontrol Et → Hard Delete
|
||
|
||
```bash
|
||
#!/bin/bash
|
||
set -e
|
||
|
||
echo "📝 Step 1: Admin Login"
|
||
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')
|
||
echo "✅ Token: ${TOKEN:0:30}..."
|
||
|
||
echo ""
|
||
echo "📝 Step 2: Create Test User"
|
||
CREATE_RESULT=$(curl -s -X POST http://localhost:8080/v1/admin/users \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
-F "email=temp@test.com" \
|
||
-F "password=temp123" \
|
||
-F "user_name=Temp User" \
|
||
-F "email_verified=false" \
|
||
-F "roles=user")
|
||
USER_ID=$(echo $CREATE_RESULT | jq -r '.id')
|
||
echo "✅ Created User ID: $USER_ID"
|
||
|
||
echo ""
|
||
echo "📝 Step 3: Verify User Exists"
|
||
GET_RESULT=$(curl -s -X GET "http://localhost:8080/v1/admin/users/$USER_ID" \
|
||
-H "Authorization: Bearer $TOKEN")
|
||
echo "✅ User: $(echo $GET_RESULT | jq -r '.email')"
|
||
|
||
echo ""
|
||
echo "📝 Step 4: Hard Delete User"
|
||
DELETE_RESULT=$(curl -s -X DELETE "http://localhost:8080/v1/admin/users/$USER_ID?hard=true" \
|
||
-H "Authorization: Bearer $TOKEN")
|
||
echo "✅ $DELETE_RESULT"
|
||
|
||
echo ""
|
||
echo "📝 Step 5: Verify User Deleted"
|
||
VERIFY=$(curl -s -X GET "http://localhost:8080/v1/admin/users/$USER_ID" \
|
||
-H "Authorization: Bearer $TOKEN")
|
||
if echo $VERIFY | grep -q "error"; then
|
||
echo "✅ User successfully deleted (not found)"
|
||
else
|
||
echo "❌ User still exists!"
|
||
fi
|
||
```
|
||
|
||
### Örnek 2: Toplu Test Kullanıcıları Temizleme
|
||
|
||
```bash
|
||
#!/bin/bash
|
||
|
||
echo "🧹 Cleaning test users..."
|
||
|
||
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" içeren tüm kullanıcıları bul
|
||
USERS=$(curl -s -X GET "http://localhost:8080/v1/admin/users/search?q=test" \
|
||
-H "Authorization: Bearer $TOKEN")
|
||
|
||
# Her kullanıcıyı hard delete yap
|
||
echo "$USERS" | jq -r '.users[] | .id' | while read USER_ID; do
|
||
EMAIL=$(echo "$USERS" | jq -r ".users[] | select(.id==\"$USER_ID\") | .email")
|
||
echo "Deleting: $EMAIL ($USER_ID)"
|
||
|
||
curl -s -X DELETE "http://localhost:8080/v1/admin/users/$USER_ID?hard=true" \
|
||
-H "Authorization: Bearer $TOKEN" | jq '.'
|
||
|
||
sleep 0.2 # Rate limiting
|
||
done
|
||
|
||
echo "✅ Cleanup completed!"
|
||
```
|
||
|
||
## 💾 JSON Response Örnekleri
|
||
|
||
### Başarılı Hard Delete
|
||
```json
|
||
{
|
||
"message": "User deleted permanently successfully"
|
||
}
|
||
```
|
||
|
||
### Başarılı Soft Delete
|
||
```json
|
||
{
|
||
"message": "User deleted soft successfully"
|
||
}
|
||
```
|
||
|
||
### Kullanıcı Arama Sonucu
|
||
```json
|
||
{
|
||
"users": [
|
||
{
|
||
"id": "abc-123",
|
||
"username": "testuser",
|
||
"email": "test@example.com",
|
||
"email_verified": false,
|
||
"created_at": "2026-02-04T20:00:00Z"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
### Kullanıcı Detay
|
||
```json
|
||
{
|
||
"id": "abc-123",
|
||
"username": "testuser",
|
||
"email": "test@example.com",
|
||
"avatar": "",
|
||
"email_verified": false,
|
||
"created_at": "2026-02-04T20:00:00Z",
|
||
"updated_at": "2026-02-04T20:00:00Z",
|
||
"roles": [
|
||
{
|
||
"id": 2,
|
||
"name": "user",
|
||
"description": "Default user role",
|
||
"permissions": [
|
||
{
|
||
"name": "user:read"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
## ⚠️ Önemli Hatırlatmalar
|
||
|
||
| ❌ YAPMAYIN | ✅ YAPIN |
|
||
|------------|---------|
|
||
| Üretimde hard delete kullanmadan test etmeden | Önce test ortamında deneyin |
|
||
| Token'ı kodda hard-code etmeyin | Environment variable kullanın |
|
||
| Kendi admin hesabınızı silmeye çalışmayın | Başka admin oluşturun |
|
||
| Yedek almadan toplu silme | Önce yedek alın |
|
||
|
||
## 🔧 Troubleshooting
|
||
|
||
### Token hatası alıyorsam?
|
||
```bash
|
||
# Token'ı kontrol et
|
||
curl -X GET http://localhost:8080/v1/auth/validate \
|
||
-H "Authorization: Bearer $TOKEN"
|
||
```
|
||
|
||
### Kullanıcı bulunamıyor?
|
||
```bash
|
||
# Search ile kontrol et
|
||
curl -X GET "http://localhost:8080/v1/admin/users/search?q=email@test.com" \
|
||
-H "Authorization: Bearer $TOKEN" | jq '.'
|
||
```
|
||
|
||
### Hard delete çalışmıyor?
|
||
```bash
|
||
# Önce soft delete dene
|
||
curl -X DELETE "http://localhost:8080/v1/admin/users/$USER_ID" \
|
||
-H "Authorization: Bearer $TOKEN"
|
||
|
||
# Sonra hard=true ile tekrar dene
|
||
curl -X DELETE "http://localhost:8080/v1/admin/users/$USER_ID?hard=true" \
|
||
-H "Authorization: Bearer $TOKEN"
|
||
```
|