#P1523
PUT /colleague/user
Route Info
| Method |
Endpoint |
Controller |
Middleware |
Purpose |
| PUT |
/api/v2/colleague/user |
V2ColleaguesController@updateColleagueUser |
authWithJwt |
ویرایش اطلاعات یکی از کاربران ثبتشده زیرمجموعه همکار |
منطق عملکرد تابع
تابع updateColleagueUser برای بهروزرسانی دادههای کاربر متصل به یک colleague خاص است. سامانه بررسی میکند که کاربر ارسالی متعلق به همان همکار باشد تا از تغییر دسترسی اشتباه جلوگیری شود.
- دریافت شناسهٔ کاربر با
id از بدنهٔ درخواست.
- اعتبارسنجی فیلدهای حیاتی (نام، ایمیل، شماره تماس، نقش، وضعیت).
- بررسی تعلق کاربر به همکار جاری از طریق جدول
colleague_users.
- بهروزرسانی رکورد در جداول
users و colleague_users در یک تراکنش.
- پاک کردن کش Redis مربوط به
colleague:{id}:users تا اطلاعات جدید در فراخوانی بعدی بازسازی شود.
- بازگرداندن خروجی موفقیت شامل اطلاعات تازهٔ کاربر.
پارامترهای ورودی
| نام |
نوع |
محل |
الزامی |
توضیح |
| 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 عمل میکند. تمامی تغییرات در لاگ سیستمی ثبت میشود تا قابلیت ممیزی کامل داشته باشد.