Skip to main content
#P1386

POST /api/auth/update

Route Info

Method Endpoint Controller Middleware Purpose تگ Swagger
POST /api/auth/update UserController@update domainAccess, ipTrust به‌روزرسانی داده‌های رابط کاربری اپراتور (shortcuts) از سمت کلاینت tags={“Auth”}

توضیح عملکرد (Function Logic)

تابع update() مسئول همگام‌سازی اطلاعات رابط کاربری اپراتور با سرور است. اطلاعات از جمله میان‌برها (shortcuts) از سمت کلاینت ارسال شده و در Redis ذخیره می‌شوند. اگر IP فعلی کاربر با IP ثبت‌شده در توکن JWT مطابقت نداشته باشد، خطایی با نوع changeIp بازگردانده می‌شود. عملکرد تابع شامل مراحل زیر است:
  1. دریافت ورودی data از درخواست.
  2. تحلیل و اعتبارسنجی توکن access_token با استفاده از JWT::decode.
  3. مقایسه IP کاربر فعلی با IP ذخیره‌شده در توکن (uip).
  4. در صورت تطابق، یافتن اپراتور بر اساس uuid استخراج‌شده از JWT.
  5. اگر اپراتور فعال باشد (status == 1)، دادهٔ shortcuts جدید در Redis ذخیره می‌شود.
  6. در صورت غیرفعال بودن وضعیت اپراتور، پیام خطا بازگردانده می‌شود.
  7. اگر IP تغییر کرده باشد، جزئیات هر دو IP در خروجی خطا قرار می‌گیرد.
  8. در صورت بروز هر Exception، محتوا و trace بازگردانده می‌شود.

ورودی‌ها (Inputs)

پارامتر نوع داده الزامی توضیح
branch integer بله شناسه شعبه‌ای که کاربر در آن وارد شده است.
data.access_token string (JWT) بله توکن JWT معتبر که شامل شناسه کاربر (uuid)، IP و زمان صدور است.
data.user.data.shortcuts array بله لیست میان‌برهای جدید رابط کاربری اپراتور که باید در Redis ذخیره شوند.
نمونه درخواست:
POST /api/auth/update

Content-Type: application/json

{

“branch”: 1,

“data”: {

“access_token”: “jwt.token.value”,

“user”: {

“data”: {

“shortcuts”: [“dashboard”, “customers”, “tickets”]

}

}

}

}

خروجی‌ها (Outputs)

پاسخ موفق (HTTP 200)

{}

(در صورت موفقیت، بدنه پاسخ خالی و بدون خطا بازگردانده می‌شود.)

وضعیت غیرفعال کاربر

{

“error”: {

“type”: “personnelId”,

“message”: “وضعیت شما بصورت غیرفعال می باشد.”

}

}

تغییر IP کاربر

{

“error”: {

“type”: “changeIp”,

“message”: “وضعیت اینترنت شما تغییر پیدا کرده”,

“details”: {

“token_ip”: “192.168.1.10”,

“current_ip”: “5.114.200.88”

}

}

}

خطا در پردازش

{

“error”: {

“type”: “personnelId”,

“message”: “Signature verification failed”,

“trace”: […]

}

}

منطق تشخیص IP مجاز

در هنگام بررسی صحت IP، سیستم IP توکن را با IP جاری تطبیق می‌دهد. سرویس آدرس‌های داخلی (Local IP Range) را مجاز می‌داند:
  • 192.168..
  • 10...*
  • 172.16..
در این شبکه‌ها حتی در صورت تغییر IP نیازی به invalid کردن توکن نیست.

ذخیره اطلاعات در Redis

Redis::set(
𝑟𝑒𝑞𝑢𝑒𝑠𝑡−>𝑔𝑒𝑡(′𝑏𝑟𝑎𝑛𝑐ℎ′).′𝑜𝑝𝑒𝑟𝑎𝑡𝑜𝑟:′.
request−>get( ′branch ′). ′operator:′.
Operator->id . ‘:shortcuts’,
json_encode($data[‘user’][‘data’][‘shortcuts’]));
اطلاعات ذخیره‌شده در Redis جهت شخصی‌سازی محیط کاربری اپراتور در ورودهای بعدی استفاده می‌شوند.

مدیریت استثناها (Exceptions)

  • Token نامعتبر یا منقضی شده: پیام Signature Verification Failed
  • خطا در ساختار درخواست: بازگرداندن Exception عمومی با Trace

وابستگی‌ها (Dependencies)

  • use Firebase\JWT\JWT;
  • use Firebase\JWT\Key;
  • use Illuminate\Support\Facades\Redis;
  • use App\Models\User;
  • use Exception;

مثال تست (Postman Example)

POST https://console.service01.ir/api/auth/update

Content-Type: application/json

{

“branch”: 2,

“data”: {

“access_token”: “jwt.token.value”,

“user”: {

“data”: {

“shortcuts”: [“dashboard”, “customers”, “trade-management”]

}

}

}

}

تحلیل امنیتی

  • از IP واقعی کاربر برای مطابقت توکن استفاده می‌شود (افزایش امنیت session).
  • رمزگشایی JWT تنها با کلید محیطی JWT_SECRET_KEY انجام می‌شود.
  • هیچ داده‌ای بازگردانده نمی‌شود تا احتمال افشای Token یا داده کاهش یابد.
  • درخواست‌ها فقط از دامنه‌های معتبر (domainAccess) و IP مجاز (ipTrust) پذیرفته می‌شوند.

نتیجه عملکرد (Summary Result)

این Endpoint به‌طور خاص برای همگام‌سازی داده‌های رابط کاربری طراحی شده تا تجربه کاربر در اتوماسیون حفظ شود. در صورت تغییر IP یا وضعیت کاربر، کلاینت باید فرآیند Sign-In را تکرار نماید.

پیوست: نگهداری و بهینه‌سازی

  • اطلاعات Redis می‌توانند با TTL (Time To Live) مدیریت شوند تا از انباشت داده جلوگیری شود.
  • در صورت تغییر ساختار shortcuts، مطابقت نسخه کلاینت الزامی است.
  • در نسخه‌های بعدی، API می‌تواند بازگشت وضعیت موفقیت با پیام استاندارد ارائه دهد.