Skip to main content
#P1523

PUT /colleague/user

Route Info

Method Endpoint Controller Middleware Purpose
PUT /api/v2/colleague/user V2ColleaguesController@updateColleagueUser authWithJwt ویرایش اطلاعات یکی از کاربران ثبت‌شده زیرمجموعه همکار

منطق عملکرد تابع

تابع updateColleagueUser برای به‌روزرسانی داده‌های کاربر متصل به یک colleague خاص است. سامانه بررسی می‌کند که کاربر ارسالی متعلق به همان همکار باشد تا از تغییر دسترسی اشتباه جلوگیری شود.

  1. دریافت شناسهٔ کاربر با id از بدنهٔ درخواست.
  2. اعتبارسنجی فیلدهای حیاتی (نام، ایمیل، شماره تماس، نقش، وضعیت).
  3. بررسی تعلق کاربر به همکار جاری از طریق جدول colleague_users.
  4. به‌روزرسانی رکورد در جداول users و colleague_users در یک تراکنش.
  5. پاک کردن کش Redis مربوط به colleague:{id}:users تا اطلاعات جدید در فراخوانی بعدی بازسازی شود.
  6. بازگرداندن خروجی موفقیت شامل اطلاعات تازهٔ کاربر.

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

نام نوع محل الزامی توضیح
id integer body بله شناسه کاربر همکار برای ویرایش
colleague_id integer body بله شناسه همکار مادر
name string body خیر نام کامل (در صورت تغییر)
email string body خیر ایمیل در سیستم کاربر
mobile string body خیر شماره موبایل (فرمت شمسی کد ملی)
role string body خیر نقش جدید در چارچوب همان colleague
active boolean body خیر وضعیت فعال/غیرفعال

ساختار خروجی

{
 "status": true,
 "message": "User updated successfully",
 "user": {
    "id": 410,
    "colleague_id": 52,
    "name": "Sara Azimi",
    "email": "s.azimi@example.com",
    "mobile": "09131234567",
    "role": "accountant",
    "active": true,
    "updated_at": "2025‑11‑23 08:42:11"
 }
}

نکات امنیتی

  • به‌روزرسانی فقط توسط مدیر مالی سازمان (finance.admin) یا مدیر همان همکار مجاز است.
  • هر ویرایش در جدول system_logs ثبت و به کاربر super.audit اعلام می‌شود.
  • ایمیل منحصربه‌فرد و غیرتکراری در سطح کل سامانه اعتبارسنجی می‌شود.

نکات عملکردی

  • استفاده از تراکنش واحد (DB::transaction) برای اطمینان از atomic commit.
  • تازه‌سازی کش Redis در مدت کمتر از ۲۰ میلی‌ثانیه با پترن key شبیه colleague:{id}:users.
  • ارسال webhook بین‌سیستمی در صورت تغییر role کاربر.

Dependencies

  • use Illuminate\Support\Facades\DB;
  • use Illuminate\Support\Facades\Redis;
  • use App\Models\User;
  • use App\Models\ColleagueUser;
  • use Illuminate\Http\Request;

کدهای خطا

کد شرح منبع
400 پارامترهای ناقص یا خطای اعتبارسنجی ورودی Validation
401 عدم احراز هویت یا توکن منقضی‌شده Middleware
403 کاربر دسترسی تغییر کاربران همکار ندارد Policy
404 کاربر یافت نشد یا متعلق به این همکار نیست DB Query
500 خطای پایگاه داده یا Rollback تراکنش Exception

پیشنهادهای امنیتی

  • اعمال Two‑Step Verification هنگام تغییر نقش critical (مثل finance.manager).
  • ثبت historical snapshot از مقادیر قبل و بعد از به‌روزرسانی.
  • اعلان سیستمی به CLI برنامه درصورت تغییر نقش کاربر.

پیشنهادهای توسعه‌ای

  • افزودن پشتیبانی برای Partial‑Update (fast‑patch) فقط روی فیلدهای تغییریافته.
  • امکان ثبت "توضیح مدیر" برای هر ویرایش کاربر.
  • استفاده از Event Broadcast جهت refresh داشبورد به‌صورت زنده.

ممیزی و لاگ‌ها

  • Event: ColleagueUserUpdated
  • اطلاعات ثبت‌شده: user_id, colleague_id, changes_json, ip, timestamp
  • ثبت در جدول system_logs با نوع update_colleague_user

جمع‌بندی

تابع updateColleagueUser پایهٔ اصلی مدیریت کاربران همکاران است که با رعایت atomicity، احراز هویت سخت‌گیرانه و refresh خودکار cache عمل می‌کند. تمامی تغییرات در لاگ سیستمی ثبت می‌شود تا قابلیت ممیزی کامل داشته باشد.