5.2 KiB
راهنمای جدید ورود به کلاس آنلاین
این فایل برای تیمهای frontend و flutter نوشته شده و توضیح میدهد که از این به بعد
برای ورود کاربر به کلاس آنلاین، endpoint اصلی فقط validate است.
هدف تغییر
قبلاً کلاینت برای ورود به کلاس باید بین چند endpoint تصمیم میگرفت:
online/validateonline/tokenonline/room/token
این کار باعث میشد منطق تصمیمگیری، ساخت token و تشخیص مسیر redirect در کلاینت پخش شود.
الان این تصمیمگیری به بکند منتقل شده است.
endpoint اصلی
بررسی وضعیت کلاس و گرفتن مسیر نهایی ورود
GET /api/courses/<course-slug>/online/validate/
کاری که این endpoint انجام میدهد
این endpoint حالا همه این کارها را یکجا انجام میدهد:
- وضعیت کلاس را بررسی میکند
- مشخص میکند کاربر اجازه ورود دارد یا نه
- اگر کلاس شروع شده باشد،
access_tokenمستقیم کلاس را میسازد - اگر کلاس شروع نشده باشد،
temporary tokenصفحه انتظار را میسازد - مسیر نهایی redirect را در
redirect_pathبرمیگرداند
منطق پاسخ
اگر کلاس آنلاین باشد
بکند:
join tokenواقعی PlugNMeet را میسازد- کاربر را باید به مسیر مستقیم کلاس هدایت کرد
نمونه:
https://meet.example.com/?access_token=<access_token>
اگر کلاس هنوز آنلاین نشده باشد
بکند:
temporary tokenصفحه انتظار را میسازد- کاربر را باید به flow انتظار/پریجوین هدایت کرد
نمونه:
https://meet.example.com/?token=<temporary_token>&slug=<course_slug>
اگر کلاس هنوز آنلاین نشده باشد و کاربر استاد باشد
بکند:
- room را همان لحظه میسازد
access_tokenمستقیم ورود به کلاس را برمیگرداند- استاد مستقیم وارد خود کلاس میشود
نمونه:
https://meet.example.com/?access_token=<access_token>
فیلد مهم جدید
در پاسخ این endpoint، فیلد redirect_path برگردانده میشود.
کلاینت باید فقط از همین فیلد برای navigation استفاده کند.
ساختار پاسخ
پاسخ همچنان شامل این بخشهاست:
courseusermetadataredirect_path
فیلد metadata.redirect_path هم با همین مقدار نهایی پر میشود تا سازگاری قبلی حفظ شود.
رفتار پیشنهادی کلاینت
سناریوی استاندارد
- کاربر روی دکمه ورود به کلاس میزند
- کلاینت فقط
online/validateرا صدا میزند - اگر
redirect_pathمقدار داشت:- کاربر به همان مسیر هدایت میشود
- اگر
redirect_pathمقدار نداشت:- یعنی کاربر اجازه ورود ندارد یا هنوز شرایط ورود برای او مهیا نیست
معنی فیلدهای مهم metadata
is_onlinecan_join_live_sessioncan_create_live_sessionhas_finishedredirect_path
نکته مهم برای صفحه انتظار
اگر redirect_path از نوع ?token=...&slug=... باشد:
- کاربر وارد
conference_clientمیشود - صفحه انتظار یا pre-join نمایش داده میشود
- اگر استاد باشد، میتواند از همان flow کلاس را شروع کند
- اگر دانشجو باشد، منتظر شروع کلاس میماند
اگر کاربر استاد باشد و کلاس هنوز شروع نشده باشد:
redirect_pathباید مستقیم از نوع?access_token=...باشد- کلاینت نباید استاد را به waiting page بفرستد
نکته مهم برای ورود مستقیم
اگر redirect_path از نوع ?access_token=... باشد:
- کاربر مستقیم وارد کلاس میشود
- دیگر نیازی نیست کلاینت جداگانه
room/tokenرا صدا بزند
وضعیت endpoint های قبلی
endpoint های زیر هنوز ممکن است برای سازگاری یا استفاده داخلی موجود باشند:
POST /api/courses/<course_id>/online/token/POST /api/courses/online/room/token/
اما برای flow اصلی ورود کاربر، کلاینت جدید نباید روی آنها تصمیمگیری انجام دهد.
جمعبندی نهایی
برای ورود کاربر به کلاس:
- فقط
online/validateرا صدا بزنید - فقط
redirect_pathرا بخوانید - بر اساس آن redirect کنید
یعنی منطق انتخاب بین:
- صفحه انتظار
- ورود مستقیم به کلاس
دیگر مسئولیت کلاینت نیست و در بکند انجام میشود.