You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.8 KiB
3.8 KiB
تغییرات API Exchange Token
نسخه جدید (اکتبر 2024)
تغییرات اساسی
1. انتقال API از courses به account
- قدیمی:
/api/courses/auth/exchange-token/ - جدید:
/api/account/exchange-token/
2. تغییر ساختار Response
قدیمی:
{
"success": true,
"message": "ورود موفق",
"user": {
"id": "123",
"email": "user@example.com",
"name": "علی احمدی",
"role": "admin",
"is_admin": true
}
}
جدید:
{
"success": true,
"message": "ورود موفق",
"token": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0",
"user": {
"id": 123,
"fullname": "علی احمدی",
"email": "user@example.com",
"avatar": "https://cdn.example.com/avatar.jpg"
}
}
3. تغییر URL تولید Token موقت
Response قبلی:
{
"token": "abc123",
"url": "https://frontend.example.com/join-class?token=abc123",
"expires_in": 300
}
Response جدید:
{
"token": "abc123xyz789",
"url": "https://imamjavad.newhorizonco.uk/join-class?token=abc123xyz789&slug=python-basics",
"expires_in": 300
}
تغییرات در فیلدها
| فیلد قدیمی | فیلد جدید | توضیحات |
|---|---|---|
user.name |
user.fullname |
تغییر نام فیلد |
user.id (string) |
user.id (number) |
تغییر نوع داده |
user.role |
حذف شد | دیگر ارسال نمیشود |
user.is_admin |
حذف شد | دیگر ارسال نمیشود |
| - | token |
اضافه شد: توکن احراز هویت DRF |
| - | user.avatar |
اضافه شد: URL تصویر پروفایل |
URL ثابت
دیگر از تنظیمات یا environment variable استفاده نمیشود. URL ثابت است:
https://imamjavad.newhorizonco.uk/join-class?token={TEMP_TOKEN}&slug={COURSE_SLUG}
مزایای تغییرات
✅ Token واقعی: دیگر نیازی به login مجدد نیست
✅ Avatar: نمایش تصویر پروفایل کاربر
✅ Slug دوره: دسترسی مستقیم به اطلاعات دوره
✅ URL ثابت: عدم وابستگی به تنظیمات
✅ سادهتر: حذف فیلدهای اضافی (role, is_admin)
Migration Guide
Frontend (Next.js)
قدیمی:
const user = await api.exchangeToken(tempToken);
localStorage.setItem('user', JSON.stringify(user));
جدید:
const data = await exchangeToken(tempToken);
localStorage.setItem('authToken', data.token); // ⭐ جدید
localStorage.setItem('user', JSON.stringify(data.user));
Flutter
قدیمی:
final user = response['user'];
// نیاز به login مجدد داشت
جدید:
final authToken = response['token']; // ⭐ جدید
final user = response['user'];
// ذخیره token برای درخواستهای بعدی
await storage.write(key: 'authToken', value: authToken);
Breaking Changes ⚠️
- URL تغییر کرد: باید از
/api/account/exchange-token/استفاده شود - فیلد
tokenاجباری است: باید در frontend ذخیره و استفاده شود - فیلد
nameبهfullnameتغییر کرد - فیلدهای
roleوis_adminحذف شدند - URL موقت شامل
slugمیشود
تاریخ اعمال تغییرات
تاریخ: 14 اکتبر 2024
فایلهای تغییر یافته
apps/account/serializers/auth.py(جدید)apps/account/views/auth.py(جدید)apps/account/urls.py(آپدیت)apps/course/views/course.py(آپدیت: CourseOnlineClassTokenAPIView)docs/exchange_token_api.md(آپدیت)docs/online_class_entry_flow.md(آپدیت)