سلام دوستان.
من سه نوع کاربر دارم: ادمین، دکتر و بیمار.
واسه لاگین کردن کاربر هم میتونه با کدملی لاگین کنه و هم شماره موبایل.
حالا مشکل اینجاس که ادمین و دکتر هم با کدملی و هم با شماره موبایل لاگین میشن ولی بیمار فقط میتونه با شماره موبایل لاگین کنه و وقتی میخوام با کدملی لاگین کنم اجازه ورود نمیده.
اینم از کد مربوط به لاگین کردن:
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
این قسمت وقتی کد زیر رو قرار میدم و میخوام با کدملی بیمار لاگین کنم، فقط mobile رو dump میکنه.
if (! Auth::attempt([ dd($inputType) ]));
مقداری که dump میشه:
"mobile"
@kian.sdi.0028
ببینید اگر کاربر ادمین و دکتر باشه به درستی کار میکنه ولی اگه بیمار باشه، بله اشتباه رفتار میکنه
@arminrahmati999
اینجا شما یه if تک خطی داری که داره یه چیزیو فیلتر میکنه.
این تابع به تنهایی خودش از کجا میدونه که این مورد بیماره یا دکتر ؟
احتمالا اون کد ملی خاص که شما امتحان میکنی از این الگو خارجه و مقدار false تعبیر میشه
@kian.sdi.0028
خب چطور در مورد ادمین و دکتر درست کار میکنه ولی واسه بیمار فقط با شماره موبایل باید لاگین کرد؟
مبنای تصمیم گیری کد ملی بودن یا نبودن مقدار رو تغییر بده
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; }
اینو امتحان کن .
@kian.sdi.0028
من از از یه پکیج استفاده کردم و الان متوجه شدم که مشکل از پکیج هست، حال یه پکیج دیگه رو تست میکنم و بهتون خبر میدم.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟