افزودن قابلیت لاگین کاربران در پروژهٔ RESTful API


در آموزش گذشته دیدیم که به چه شکل می‌توان به عنوان یک کاربر جدید ثبت‌نام نمود؛ حال در ادامهٔ توسعهٔ این وب سرویس قصد داریم تا قابلیت لاگین کردن به سیستم و دریافت یک توکن از جنس JWT را به پروژه بیفزاییم. برای این منظور، داخل کلاس UserController متد جدیدی تحت عنوان ()auth به صورت زیر می‌سازیم:

public function auth()
{
    if ($this->requestMethod === 'POST') {
        $this->validateRequest();

        $this->validateParams('mail', $this->requestParams['mail'], true);
        $this->validateParams('pass', $this->requestParams['pass'], true);

        $user = new User((new Database())->connect());
        $result = $user->login($this->requestParams['mail'], $this->requestParams['pass']);
        $result = $result->fetchAll(\PDO::FETCH_ASSOC);

        if (!$result) {
            $this->returnResponse(401, 'Email or password is incorrect.');
        } else {
            $this->generateToken($result[0]['id']);
        }
    } else {
        $this->throwError(405, 'The only method that is acceptable is POST.');
    }
}

همچون متد ()signup که در آموزش گذشته مورد بررسی قرار دادیم، داخل متد ()auth نیز ابتدا به ساکن چک کرده‌ایم ببینیم که آیا ریکوئست ارسالی از جنس POST است یا خیر که اگر این گونه بود، داخل بلوک if با فراخوانی متد ()validateRequest پارامترهای ارسالی از سمت کلاینت را سِت کرده سپس با استفاده از متد ()validateParams از وجود کلید‌های mail و pass اطمینان حاصل کرده‌ایم.

همان‌طور که مشاهده می‌شود، داخل این متد آبجکتی از روی مُدل User ساخته‌ایم سپس متد ()login را روی آن فراخوانی کرده‌ایم و به عنوان پارامترهای ورودی این متد نیز کلیدهای mail و pass که پیش از این داخل پراپرتی requestParams$ ذخیره شده‌اند را در نظر گرفته‌ایم و نتیجه را در متغیری تحت عنوان result$ ذخیره کرده‌ایم. در ادامه، با استفاده از یک دستور شرطی تست کرده‌ایم ببینیم که آیا این متغیر حاوی مقداری است یا خیر که اگر پاسخ به این شرط false بود، ارور 401 با پیامی مبنی بر اینکه «ایمیل یا پسورد اشتباه است.» در معرض دید کاربر قرار می‌دهیم و در غیر این صورت وارد بلوک else شده و متدی تحت عنوان ()generateToken را فراخوانی نموده‌ایم که در حال حاضر ساخته نشده است. به طور کلی، این متد وظیفه دارد تا پس از کوئری زدن به جدول users و تطابق ایمیل و پسورد ارسالی از سمت کلاینت با آنچه قبلاً در دیتابیس ثبت شده است، یک توکن از جنس JWT ایجاد نماید به طوری که برای ارسال ادامهٔ ریکوئست‌ها می‌توان با ارسال آن توکن در بخش هِدِر، این تضمین را به وب سرویس بدهیم که کلاینتِ معتبری هستیم.

این بخش از محتوا مخصوص کاربرانی است که ثبت‌نام کرده‌اند.
جهت مشاهدهٔ این بخش از محتوا لاگین نمایید.

جمع‌بندی
در این آموزش با تکمیل کلاس UserController قابلیت لاگین در این وب سرویس و دریافت توکنی از جنس JWT را اضافه نمودیم به طوری که از این پس کلاینت صرفاً نیاز خواهد داشت تا توکن مذکور را در اختیار وب سرویس قرار داده و به اِندپوینت‌هایی که سطح دسترسی محدود دارند دست پیدا کند.


لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان