Skip to main content
#P1424

POST /api/v2/operator/update-password

Route Info

Method Endpoint Controller Middleware Purpose
POST /api/v2/operator/update-password UserController@updatePassword authWithJwt تغییر رمز عبور اپراتور (کاربر) با احراز رمز فعلی

منطق عملکرد

  • احراز هویت با متد Auth::once بر مبنای personnel_id و رمز فعلی (last_password) انجام می‌شود.
  • درصورت اشتباه بودن رمز فعلی، پاسخ JSON با status=false و پیام خطای مناسب بازگردانده می‌شود.
  • درصورت صحت رمز فعلی، رکورد کاربر جاری از مدل User واکشی شده و رمز جدید با Hash::make هش و ذخیره می‌شود.
  • پس از موفقیت، یک لاگ ناهمگام SystemLog(type=UpdatePassword) در صف snailJob ایجاد می‌شود.

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

نام نوع ضروری توضیح
personnelId integer بله کد پرسنلی اپراتور (User personnel_id)
last_password string بله رمز عبور فعلی برای تأیید
new_password string بله رمز عبور جدید مورد نظر
POST /api/v2/operator/update-password
{
  "personnelId": 102,
  "last_password": "oldPass@123",
  "new_password": "Secure#2025"
}

ساختار خروجی

**موفق:**
{
  "status": true,
  "time": 1732031104
}
**رمز اشتباه:**
{
  "status": false,
  "time": 1732031104,
  "message": "کلمه عبور فعلی اشتباه می باشد"
}
**خطای فرآیند به‌روزرسانی:**
{
  "status": false,
  "time": 1732031104,
  "message": "عملیات تغییر کلمه عبور با مشکل مواجه شد"
}

امنیت و کنترل دسترسی

  • استفاده از JWT Token الزامی.
  • رمز عبور در سرور با bcrypt هش می‌شود و نسخه خام هرگز ذخیره نمی‌شود.
  • احراز موقت با Auth::once() برای جلوگیری از زمان طولانی توکن اعتبار.

وابستگی‌ها

  • Auth Facade (one-time login)
  • Hash::make()
  • Carbon::now()
  • SystemLog Job Queue (snailJob)

کارایی

میانگین زمان پاسخ سرور <10 ms، صف لاگ asynchronous است.

مدیریت خطا

  • خطاهای معتبر با فیلد message کاربرپسند بازگردانده می‌شود.
  • به‌جای استثناء، خروجی JSON کنترل‌شده ارائه می‌شود.

اثرات جانبی

  • تغییر فوری رمز کاربر در DB.
  • ورود مجدد برای توکن فعلی توصیه می‌شود (Token Invalidation Plan در آینده).

ردپای حسابرسی

وقوع عملیات در SystemLog با نوع UpdatePassword و فیلد goal=personnelId ثبت می‌گردد.

پیشنهاد بهبود

  • اعمال منطق Complexity Policy برای رمز جدید (طول > 8 کاراکتر، حروف + نشانه).
  • لاگ‌آوت خودکار پس از تغییر رمز.

جمع‌بندی

روت مذکور راه ساده اما امنی برای تغییر رمز عبور اپراتور فراهم می‌کند و با وجود کنترل‌های Auth::once و SystemLog، مطمئن و قابل ردیابی است.