Skip to main content
#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).

  1. دریافت شناسه id و colleague_id از درخواست.
  2. اعتبارسنجی مالکیت: بررسی اینکه کاربر هدف به همان colleague متعلق دارد.
  3. پیدا کردن رکورد در colleague_users و users و بررسی عدم تعامل فعال (مثل فاکتور باز).
  4. در صورتی که هیچ dependency فعال وجود ندارد، soft‑delete رکورد از هر دو جدول.
  5. انجام rollback در صورت وجود خطا در هر مرحله و ثبت لاگ در system_logs.
  6. پاک‌سازی کش Redis کلید colleague:{id}:users.
  7. بازگرداندن پاسخ موفقیت با جزییات کاربر حذف‌شده.

پارامترهای ورودی

نام نوع محل الزامی توضیح
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 کاربران همکار به‌شمار می‌رود و تداوم داده‌ای را با امنیت کامل حفظ می‌کند.