بنده آموزش آقای موسوی رو ندیدم راجع به این موضوع؛ ولی به طور کلی الگوریتم این کار یک ساختار و قواعد مشخصی دارد که در ادامه عرض میکنم.
مراحل پیاده سازی مکانیسم ﻓﻌﺎل ﺳﺎزی ﺑﺎ ﺷﻤﺎره ﻣﻮﺑﺎﯾﻞ
- در جدول
users
باید دو ستون اضافه کنید با نام های verification_code
و active
(که active
به صورت پیش فرض مقدار 0
را دارد). ستون اول قرار است که کدی که ما برای کاربر ارسال میکنیم را نگهداری کند و ستون دوم یک مقدار boolean میگیرد که اگر 0 بود به معنای غیر فعال بودن حساب کاربریست و اگر 1 بود به معنی فعال بودن حساب کاربری است. (در model)
- پس از ثبت نام کاربر، توسط یک سرویس دهنده (مثل فراز اس ام اس، کاوه نگار، ملی پیامک و ..) برای کاربری که ثبت نام شده یک sms ارسال کنید. این بدان معناست که یک سطر در جدول
users
اضافه شده و فرایند ثبت نام کاربر اتفاق افتاده است، ولی آن سطر، در ستون active
مقدار 0
را دارد و بدان معنیست که هنوز حساب کاربری وی فعال نشده است. (در controller)
-
اس ام اس فوق باید عرفا حاوی یک عدد 5 رقمی باشد که پس از ارسال آن، باید این عدد را در همان فیلد verification_code
برای همان کاربر هم ثبت/بروزرسانی کنید. (در controller)
-
فرم ثبت نام، پس از ثبت، باید به صفحه ای به اسم «فعال سازی» حساب کاربری هدایت شده باشد که حاوی یک input است که همان عدد 5 رقمی را کاربر باید در آن وارد کند. لازم به ذکر است که میتوان از هر توکنی استفاده کرد و یک عدد 5 رقمی صرفا چیزیست که اغلب سامانه ها از آن برای توکن های فعال سازیشان استفاده میکنند. (در view)
-
پس از وارد کردن کد 5 رقمی توسط کاربر، فرم سامبمیت می شود و یک درخواست به سرور ارسال می شود (به همراه آن کد 5 رقمی و شناسه کاربر) که اعتبارسنجی در آنجا رخ میدهد. در این مرحله نیز باید یک کوئری به دیتابیس میزنید و توسط شناسه کاربری، کاربر مورد نظر را انتخاب میکنید و در ابتدا فعال بودن/نبودنش را چک میکنید و در صورت نبودن، توکن را با verification_code
تطبیق میدهید. (در controller)
- در صورتی که کد صحیح بود، درخواست با پاسخ success 200 به سمت کلاینت بر میگردد و نهایتا حساب کاربر مورد نظر فعال می شود. (فیلد
active
به 1
تغییر پیدا می کند.)
نکته1: طبیعتا فرایند ثبت نام باید مبتنی بر شماره موبایل باشه که بتونیم برای کاربر sms ارسال کنیم؛ یا حداقل حین ثبت نام شماره موبایل کاربر رو هم ازش بگیریم.
نکته2: مورد 2 رو در لاراول میشه به صورت یک event هم تعریف کرد و که خیلی حرفه ای ترم هست.