Skip to main content
#P1556

POST /api/v2/tasks/category/operation

Route Info

Method Endpoint Controller Middleware
POST /api/v2/tasks/category/operation OfficialController@operationTasksCategory authWithJwt

منطق عملکرد (Logic)

متد بر اساس پارامتر ورودی action رفتار متفاوتی دارد. تمام عملیات مستقیماً با Query Builder (بدون مدل Eloquent) انجام می‌شود:

  • Action = store:
    • درج رکورد جدید در جدول tasks_categories.
    • فیلدهای branch (از ریکوئست) و user (از آبجکت operator تزریق شده) به صورت خودکار ست می‌شوند.
  • Action = update:
    • آپدیت رکورد در tasks_categories بر اساس id ورودی.
    • فقط فیلدهای title, color, icon بروزرسانی می‌شوند.
  • Action = delete:
    • حذف رکورد از tasks_categories بر اساس id.
    • حذف آبشاری دستی (Manual Cascade): بلافاصله پس از حذف دسته، تمام رکوردهای جدول tasks_items که متعلق به این دسته هستند حذف می‌شوند.
    • سپس تمام رکوردهای جدول tasks_notes که متعلق به آن تسک‌ها بودند حذف می‌شوند.

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

ورودی به صورت JSON. پارامتر data آرایه‌ای شامل جزئیات است.

POST /api/v2/tasks/category/operation
Authorization: Bearer <JWT>

{
  "action": "store",       // مقادیر مجاز: store, update, delete
  "id": 15,                // فقط برای update و delete الزامی است
  "data": {                // برای delete نیازی به ارسال محتوای این آبجکت نیست اما کلید data باید باشد
      "title": "عنوان دسته",
      "color": "#FF0000",
      "icon": "fa-home"
  }
}

خروجی‌ها

موفق:

{
  "status": true,
  "time": 1732036500
}

خطا (Exception):

{
  "status": false,
  "time": 1732036505,
  "message": "Undefined array key \"title\"", // مثال خطا
  "trace": [...]
}

تحلیل ریسک و امنیت (مهم)

  • آسیب‌پذیری IDOR (بسیار مهم): در عملیات update و delete، هیچ بررسی روی اینکه آیا id ارسالی متعلق به branch جاری است انجام نمی‌شود. کاربر می‌تواند دسته‌بندی‌های سایر شعبه‌ها را حذف یا ویرایش کند.
  • عدم وجود Transaction: در عملیات delete، حذف از سه جدول جداگانه انجام می‌شود اما داخل DB::transaction نیست. اگر در میانه کار خطا رخ دهد، داده‌های ناقص (Inconsistent Data) در دیتابیس باقی می‌مانند.
  • Validation: هیچ اعتبارسنجی روی وجود کلیدهای داخل آرایه data انجام نمی‌شود. ارسال جیسون ناقص منجر به Crash کد می‌شود.