National-code-authentication-in-Laravel2

احراز هویت با کد ملی در لاراول

اگه شما هم توسعه دهنده لاراول هستید ممکنه براتون پیش بیاد بخواید اعتبار سنجی کد ملی تو سایتتون انجام بدید.لاراول یه سیستم مخصوص خودش داره برای تایید درخواست api به اسم request که توسط رول های کاستوم میتونین ارتقا بدینش.

 

خب بریم سراغ اعتبار سنجی ابتدا یک رول ایجاد میکنیم

دستور زیر تو ترمینال وارد کنید 



Php artisan make:rule  Nationalcode




این Rule که ایجاد کردیم تو مسیر App و Rule ایجاد شده فایل مورد نظر باز میکنیم  دو متد داریم یکی passes که اعتبار سنجی تو این متد انجام میشه و یه  متد message که در صورت اشتباه بودن کد ملی پیغامی که میخایم به کابر نمایش بده مینویسیم.

تو متد passes به این شکل مینویسم

 



public function passes($attribute, $value)
{
    if(!preg_match("/^[۰-۹]{۱۰}$/",$value))
        return false;
    for($i=۰;$i<۱۰;$i++)
        if(preg_match("/^".$i."{۱۰}$/",$value))
            return false;
    for($i=۰,$sum=۰;$i<۹;$i++)
        $sum+=((۱۰-$i)*intval(substr($value, $i,۱)));
    $ret=$sum%۱۱;
    $parity=intval(substr($value, ۹,۱));
    if(($ret<۲ && $ret==$parity) || ($ret>=۲ && $ret==۱۱-$parity))
        return true;
    return false;
}


 

تو متد message به این شکل مینویسم 

 



    public function message()
    {
        return "The national code is incorrect";
    }


با استفاده از تابع preg_match()   هر نوع اعتبار سنجی با همدیگه انجام می دیم.

این تابع دو پارامتر ورودی داره، پارامتر اول همون عبارت منظمیه که ما اونو به عنوان یک الگو یا طرح می سازیم و دومین پارامتر هم رشته ایه که قصد داریم ببینیم که آیا با عبارت با قاعده، متناظر (match) می شه یا نه.

به طور خلاصه به کمک این تابع میتونیم یک رشته را بر اساس الگویی که نوشتیم بررسی کنیم که رشته مورد نظر ما هست یا خیر.

 

و در اخر باید در رجیستر کنترلر در قسمت ولیدیت  Rule که ایجاد کردیم به ریکوئست به این شکل اضافه میکنیم

 



"codemeli" => ["required", new Nationalcode],


و حتماباید رول Nationalcode در بالا یوز کنیم

 



use App\Rules\Nationalcode;


موفق باشید.

 

3 سال پیش
برای ثبت نظر لطفا وارد سایت شوید.