Armin Rahmati
4 سال پیش توسط Armin Rahmati مطرح شد
9 پاسخ

لاگین کردن

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

public function authenticate()
    {
        $this->ensureIsNotRateLimited();
        $inputType = filter_var($this->idNumber, FILTER_VALIDATE_INT) ? 'idNumber' : 'mobile';

        if (! Auth::attempt([
            $inputType => $this->idNumber,
            'password' => $this->password
        ]));
            throw ValidationException::withMessages([
                'idNumber' => __('auth.failed'),
            ]);
    }

ثبت پرسش جدید
کیان صادقی
تخصص : کار‌آموز برنامه نویسی بک اند
@kian.sdi.0028 4 سال پیش مطرح شد
0

درود بر شما ،
اروری که باهاش برخورد میکنید رو ضمیمه کنید .
وقتیکه اجازه نمیده دقیقا چه ایرادی از شما میگیره ؟؟


Armin Rahmati
@arminrahmati999 4 سال پیش مطرح شد
0

@kian.sdi.0028
این قسمت وقتی کد زیر رو قرار میدم و میخوام با کدملی بیمار لاگین کنم، فقط mobile رو dump میکنه.

if (! Auth::attempt([
   dd($inputType)
]));

مقداری که dump میشه:

"mobile"

کیان صادقی
تخصص : کار‌آموز برنامه نویسی بک اند
@kian.sdi.0028 4 سال پیش مطرح شد
0

یعنی در واقع دستور if تک خطی شما داره اشتباه رفتار میکنه ؟؟


Armin Rahmati
@arminrahmati999 4 سال پیش مطرح شد
0

@kian.sdi.0028
ببینید اگر کاربر ادمین و دکتر باشه به درستی کار میکنه ولی اگه بیمار باشه، بله اشتباه رفتار میکنه


کیان صادقی
تخصص : کار‌آموز برنامه نویسی بک اند
@kian.sdi.0028 4 سال پیش مطرح شد
0

@arminrahmati999
اینجا شما یه if تک خطی داری که داره یه چیزیو فیلتر میکنه.
این تابع به تنهایی خودش از کجا میدونه که این مورد بیماره یا دکتر ؟
احتمالا اون کد ملی خاص که شما امتحان میکنی از این الگو خارجه و مقدار false تعبیر میشه


Armin Rahmati
@arminrahmati999 4 سال پیش مطرح شد
0

@kian.sdi.0028
خب چطور در مورد ادمین و دکتر درست کار میکنه ولی واسه بیمار فقط با شماره موبایل باید لاگین کرد؟


کیان صادقی
تخصص : کار‌آموز برنامه نویسی بک اند
@kian.sdi.0028 4 سال پیش مطرح شد
0

مبنای تصمیم گیری کد ملی بودن یا نبودن مقدار رو تغییر بده

 function isMelliCode($value)
{
    if(!preg_match('/^[0-9]{10}$/',$value))
    return false;
    for($i=0;$i<10;$i++)
    if(preg_match('/^'.$i.'{10}$/',$value))
    return false;
    for($i=0,$sum=0;$i<9;$i++)
    $sum+=((10-$i)*intval(substr($value, $i,1)));
    $ret=$sum%11;
    $parity=intval(substr($value, 9,1));
    if(($ret<2 && $ret==$parity) || ($ret>=2 && $ret==11-$parity))
    return true;

    return false;
}

اینو امتحان کن .


Armin Rahmati
@arminrahmati999 4 سال پیش مطرح شد
0

@kian.sdi.0028
من از از یه پکیج استفاده کردم و الان متوجه شدم که مشکل از پکیج هست، حال یه پکیج دیگه رو تست میکنم و بهتون خبر میدم.


کیان صادقی
تخصص : کار‌آموز برنامه نویسی بک اند
@kian.sdi.0028 4 سال پیش مطرح شد

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام