پرش به مطلب اصلی

بگذارید بازدیدکنندگان شرکت خودشان را اداره کنند

هدف​

بگذارید کسانی که به درگاه شما وارد می‌شوند به یک شرکت تعلق داشته باشند: شرکتی بسازند، همکارانشان را دعوت کنند، ببینند چه کسانی آنجا هستند، نقش‌ها را عوض کنند و در صورت لزوم بیرون بروند — همه از صفحه‌ای که شما می‌کشید.

پیش از شروع​

  • درگاهی که از بازدیدکننده می‌خواهد وارد شود. ببینید از بازدیدکنندگان بخواهید وارد شوند.
  • ارسال ایمیل، که مسئول نصب پارس‌ور آن را راه‌اندازی می‌کند. دعوت یک پیام با پیوند است؛ بدون ایمیل کسی را نمی‌توان دعوت کرد.

چرا این‌ها کار پلتفرم است و نه API سفارشی شما​

هر چیز دیگری که درگاه شما می‌خواند و می‌نویسد از راه API سفارشی شما می‌گذرد. شرکت این‌طور نیست، و دانستن دلیلش می‌ارزد: اینکه چه کسی به کدام شرکت تعلق دارد نزد سرویس هویت پلتفرم نگه داشته می‌شود، و آن سرویس نشست یک بازدیدکننده را فقط از سرور خود درگاه می‌پذیرد. API سفارشی شما آنجا اجرا نمی‌شود — جایی اجرا می‌شود که جدول‌های شما هستند — پس هیچ اسکریپتی که شما بنویسید اجازهٔ دعوت‌کردن کسی را نخواهد داشت.

بنابراین پلتفرم شش فراخوان را در اختیار شما می‌گذارد و شما صفحه را می‌کشید. هیچ صفحهٔ «افراد»ی درون پلتفرم ساخته نشده است: فهرست اعضا، جعبهٔ دعوت و انتخاب‌گر نقش را خودتان می‌چینید، همان‌طور که بقیهٔ درگاهتان را.

شش فراخوان​

فراخوانچه می‌کند
startCompany(name)شرکتی می‌سازد و این بازدیدکننده نخستین مالک آن می‌شود
invitePerson(email) / invitePerson(email, role)دعوت‌نامه ایمیل می‌کند. فقط مالکان. بدون نقش یعنی Member
loadCompanyPeople(into) / loadCompanyPeople(into, companyInto)افراد را در یک فیلد حالت می‌گذارد و خودِ شرکت را در فیلد دوم
changePersonRole(person, role)عوض می‌کند که یک همکار چه می‌تواند بکند
removePerson(person)همکاری را برمی‌دارد، یا دعوتی را که هنوز پذیرفته نشده پس می‌گیرد
leaveCompany()این بازدیدکننده از شرکت بیرون می‌رود

نقش‌ها Member، Billing و Owner هستند و هر کدام هر چه را قبلی می‌تواند، می‌تواند. فقط مالکان دعوت می‌کنند، نقش عوض می‌کنند و کسی را برمی‌دارند؛ این را پلتفرم تصمیم می‌گیرد، نه صفحهٔ شما.

گام‌ها​

۱. یک جعبهٔ متن بکشید و مقدار آن را به یک فیلد حالت مثل state.text وصل کنید.

۲. یک دکمه بکشید و در رویداد click آن بنویسید:

startCompany(getState("text"));
createRecord("par_client", { par_name: getState("text") });
loadCompanyPeople("people", "company");

۳. دکمهٔ دومی برای دعوت‌کردن:

invitePerson(getState("text"));
loadCompanyPeople("people", "company");
notify("دعوت فرستاده شد.");

۴. در screenLoad صفحه، loadCompanyPeople("people", "company"); را بگذارید تا صفحه با فهرستِ پرشده باز شود.

ترتیب در دکمهٔ اول تمام نکته است

startCompany دو کار می‌کند: شرکت را می‌سازد و نشست این بازدیدکننده را به آن شرکت می‌چرخاند. تنها پس از آن است که portalCustomerId() چیزی پاسخ می‌دهد — و همان است که API پشت createRecord می‌خواند تا رکورد خودتان شناسهٔ شرکت را بگیرد.

اگر برعکس انجامش دهید، شناسه‌ای برای دادن به رکورد وجود ندارد. API شما هرگز شناسه‌ای از صفحه نمی‌گیرد، و نباید هم بگیرد: پلتفرم آن را تصمیم می‌گیرد، و همین است که نمی‌گذارد کسی شرکت دیگری را از آنِ خود کند.

در فیلدهای حالت چه می‌نشیند​

loadCompanyPeople("people", "company") دو فیلد را پر می‌کند:

  • state.people — یک سطر برای هر همکار و هر دعوتِ در انتظار:

    فیلدچیست
    idmember:… یا invitation:… — همان را مستقیم به removePerson بدهید
    nameنام او، یا نشانی‌ای که دعوت به آن رفته است
    emailنشانی‌ای که با آن وارد می‌شود
    roleMember، Billing یا Owner
    statusMember یا Invited
    isYouاینکه این سطر خودِ خوانندهٔ صفحه است یا نه
  • state.company — { name, role, canManage }. یک نوشته را به state.company.name وصل کنید و دیده‌شدن جعبهٔ دعوت را به state.company.canManage ببندید تا به عضو عادی دکمه‌ای نشان داده نشود که پاسخش رد است.

کسی که در هیچ شرکتی نیست فهرست خالی و شرکت خالی می‌گیرد، و این خطا نیست — دقیقاً همان چیزی است که فرم «شرکتی بسازید» برای آن هست.

دکمهٔ برداشتن که روی هر دو نوع سطر کار می‌کند​

یک جدول را روی state.people تکرار کنید و در سطر یک دکمه بگذارید:

removePerson(row.id);
loadCompanyPeople("people", "company");

این همکار را برمی‌دارد یا دعوت را پس می‌گیرد، چون شناسهٔ سطر می‌گوید کدام است. شما این شرط را نمی‌نویسید — و نباید بنویسید، چون این دو برای پلتفرم دو کار متفاوت‌اند و قاعده‌هایشان را فقط او می‌داند.

نقش یک دعوت را نمی‌توان عوض کرد. changePersonRole روی سطر invitation: با جمله رد می‌شود: دعوت را پس بگیرید و دوباره دعوت کنید.

رد شدن چه شکلی است​

جملهٔ خود پلتفرم کنار همان دکمه‌ای می‌آید که فشرده شده است — «فقط یک مالک می‌تواند افراد را دعوت کند»، «آخرین مالک نمی‌تواند شرکت را ترک کند»، «این نشانی از پیش در این شرکت است».

لازم نیست این پیام‌ها را خودتان بنویسید و بهتر است پیش‌دستی نکنید: قاعده‌ها از آنِ پلتفرم‌اند، و صفحه‌ای که حدس بزند سرانجام اشتباه حدس می‌زند.

آخرین مالک نمی‌تواند بیرون برود

کسی که تنها مالک یک شرکت است، اول باید همکاری را مالک کند. این عمدی است: شرکتی که رکورد پشتش هست با یک فشردن دکمه بی‌مدیر رها نمی‌شود.

دعوت کجا فرود می‌آید​

روی درِ ورودی درگاه شما، مثل پیوند تأیید نشانی و پیوند بازنشانی گذرواژه. کسی که وارد شده باشد بی‌درنگ می‌پیوندد؛ کسی که نه، فرم ورود را با عنوان شما دعوت شده‌اید می‌بیند و دعوت پس از ساختن حساب و تأیید نشانی هنوز منتظر اوست. ببینید از بازدیدکنندگان بخواهید وارد شوند.

این به چه کار می‌آید​

شرکت همان چیزی است که سیاست داده رکوردها را با آن محدود می‌کند. پس این دو صفحه کنار هم می‌نشینند: این یکی می‌گوید کسی چگونه صاحب شرکت می‌شود، و آن یکی می‌گوید سطرهای یک جدول چگونه به آن شرکت تعلق می‌گیرند.

مرتبط​