#P1525
DELETE /colleague/user
Route Info
| Method |
Endpoint |
Controller |
Middleware |
Purpose |
| DELETE |
/api/v2/colleague/user |
V2ColleaguesController@deleteColleagueUser |
authWithJwt |
حذف کاربر وابسته به همکار از سیستم با لاگ کامل ممیزی |
منطق عملکرد تابع
تابع deleteColleagueUser جهت حذف ایمن یک کاربر همکار از مجموعه استفاده میشود. فرآیند بهصورت تراکنش و با درج اطلاعات حذف در system_logs انجام میگیرد تا سوابق هرگز در سطح DB از بین نرود (Soft Delete).
- دریافت شناسه
id و colleague_id از درخواست.
- اعتبارسنجی مالکیت: بررسی اینکه کاربر هدف به همان colleague متعلق دارد.
- پیدا کردن رکورد در
colleague_users و users و بررسی عدم تعامل فعال (مثل فاکتور باز).
- در صورتی که هیچ dependency فعال وجود ندارد، soft‑delete رکورد از هر دو جدول.
- انجام rollback در صورت وجود خطا در هر مرحله و ثبت لاگ در
system_logs.
- پاکسازی کش Redis کلید
colleague:{id}:users.
- بازگرداندن پاسخ موفقیت با جزییات کاربر حذفشده.
پارامترهای ورودی
| نام |
نوع |
محل |
الزامی |
توضیح |
| id |
integer |
body |
بله |
شناسه کاربر همکار برای حذف |
| colleague_id |
integer |
body |
بله |
شناسه همکار مالک کاربر |
| force |
boolean |
body |
خیر |
اگر true باشد، حذف سخت (DB delete) انجام میدهد |
ساختار خروجی
{
"status": true,
"message": "Colleague user removed successfully",
"user": {
"id": 615,
"colleague_id": 52,
"name": "Ali Rahmani",
"email": "a.rahmani@example.com",
"deleted_at": "2025‑11‑23 09:05:59"
}
}
نکات امنیتی
- فقط نقشهای
finance.admin یا colleague.manager میتوانند کاربر را حذف کنند.
- کاربران با پرداخت/سند باز غیرفعال میشوند نه حذف.
- همه رخدادها در
system_logs و audit_trails ثبت میگردند.
نکات عملکردی
- زمان میانگین پاسخ زیر ۳۰ میلیثانیه بهدلیل استفاده از SoftDelete.
- کش Redis بعد از حذف بلافاصله پاک میشود تا لیست کاربران بهروزرسانی شود.
- ثبت لاگ در Background Queue برای جلوگیری از delay کاربر.
Dependencies
- use App\Models\User;
- use App\Models\ColleagueUser;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Redis;
- use App\Events\ColleagueUserDeleted;
کدهای خطا
| کد |
شرح |
منبع |
| 400 |
پارامترهای ورودی ناقص |
Validation |
| 401 |
توکن نامعتبر یا منقضی |
Middleware |
| 403 |
عدم مجوز حذف کاربر |
Policy |
| 404 |
کاربر یافت نشد یا متعلق به این همکار نیست |
DB Lookup |
| 409 |
کاربر در فرآیند فعال است (فاکتور/پرداخت باز) |
Business Rule |
| 500 |
Rollback تراکنش به دلیل Exception |
DB |
پیشنهادهای امنیتی
- قبل از حذف، تأیید دومرحلهای از مدیر مرکزی دریافت شود.
- اطلاعرسانی از طریق WebSocket یا ایمیل به super.audit.
- ایجاد backup از اطلاعات پروفایل کاربر در S3 قبل از حذف.
پیشنهادهای توسعهای
- افزودن پارامتر
reason برای دلیل حذف در log ها.
- امکان بازگردانی کاربر (restore) با endpoint جداگانه.
- افزودن پشتیبانی از batch delete برای مدیران اصلی.
ممیزی و لاگها
- Event:
ColleagueUserDeleted
- فیلدهای ثبتشده:
user_id, colleague_id, deleted_by, timestamp, ip
- ثبت در
system_logs با نوع delete_colleague_user
جمعبندی
تابع deleteColleagueUser با تکیه بر SoftDelete، بازرسی امنیتی سختگیرانه و ثبت دقیق وقایع ممیزی طراحی شده است. این endpoint حلقه نهایی در چرخه CRUD کاربران همکار بهشمار میرود و تداوم دادهای را با امنیت کامل حفظ میکند.