من یه نرم افزار اندروید ایجاد کردم. میخوام برای کاربر این امکان را فراهم کنم که بتونه از توی این نرم افزار نام کاربری و اطلاعات شخصی خودش رو تغییر بده. این کار رو چطور میتونیم توی thingsboard انجام داد؟
1 پاسخ
اول اینکه هر کاربر در اپلیکیشن تنها به فضای کاری خودش دسترسی دارد. یعنی فقط و فقط به اکانت خودش.
حالا ما به عنوان developer یا برنامه نویس چطری میتونیم واسه کاربر این امکان رو فراهم کنیم؟
کل کاری که باید انجام بشه اینه که آبجکت یوزر جاری رو بگیریم، تغییر بدیم و بروزرسانی کنیم:
مرحله ۱- گرفتن آبجکت (Entity) یوزر جاری (که لاگین است):
/api/auth/user
نتیجه کار همان آبجکت یوزر است.
در این مرحله میتوان تغییرات مد نظر را اعمال کرد.
نکات:
۱. اطلاعات TenantId، CustomerId، و خود Id را نمیتوان تغییر داد (واضح است که یوزر نمیتواند شناسه خود، اینکه
متعلق به چه Tenantی است، و Id خود را تغییر بدهد چون این اطلاعات در سامانه تعریف شده) اما مابقی فیلدها را می
توان تغییر داد.
۲. غیر از این فیلدهای هویتی، فیلدهای دیگر از جمله ایمیل، نام و نام خانوادگی و عکس پروفایل قابل تغییر است. برخی از
فیلدها بصورت مستقیم در آبجکت وجود دارد و قابل تغییر مستقیم هستند. اما ممکن است برخی فیلدها در زیربخش
additionalInfo موجود باشند. مثلا عکس پروفایل. چنانچه فیلدی موجود نباشد اما نیاز باشد به فیلدهای موجود اضافه
شود این نوع فیلدها فقط و فقط باید در زیربخش additionalInfo اضافه شوند.
مرحله ۲- آپدیت آبجکت یوزر: از api زیر و متد POST برای این کار استفاده میشود:
/api/user/
نکته ۱: body این آبجکت باید همان آبجکتی باشد که تغییرات در آن اعمال شده است. هیچ فیلدی نباید از این آبجکت حذف شود. در صورتی که فیلدی از فیلدهای ضروری این آبجکت مثل CustomerId، TenantId و Id حذف شود سرور خطا میدهد. بجز این فیلدهای ضروری اگر فیلد دیگری حذف شود یا به اشتباه به سرور ارسال نشوند سرور خطا نمیدهد اما آن فیلد را به عنوان حذف شده قلمداد خواهد کرد و اگر دوباره یوزر جاری را GET کنیم فیلدهایی که به سرور POST نشده بودند حذف شده اند.