نوشته شده توسط
plague
1 -
نمیدونم چرا تو خط اول میدلورت نوشتی که اگه لاگین نبود ریدایرکت بشه به صفحه اول معنی نمیده اگه میخای این میدلور رو روی همه رات ها بندازی
اینجوری کاربری که لاگین نیست فقط میتونه صفحه اول سایت رو ببینه
خیلیییی ممنون . خیلی نکات مبهم برام حل شد .
بله من این میدل ور رو فقط روی قسمتهایی که مربوط به کاربره مثل کد تایید ، تکمیل فرم و تغییر شماره موبایل ، روی این موارد اعمال میکنم و مثلا گفتم اگر لاگین نیست به این صفحات دسترسی نداشته باشه . ( البته میتونستم از میدل ور auth هم ترکیبی استفاده کنم )
یا اگر تایید شده دیگه نتونه به صفحه ی ارسال کد و تکمیل کد بیاد و بره به قسمت پروفایل.
public function handle($request, Closure $next)
{
if(!Auth::check()){
return redirect('/login');
}
if( Auth::user() && Auth::user()->status != 1 && !in_array( $request->route()->getName() , ['check.code','change.mobile'] ) ){
return redirect('check-code');
}
if( Auth::user() && Auth::user()->status == 1 && !in_array( $request->route()->getName() , ['user.profile'] ) ){
return redirect('user-profile');
}
return $next($request);
}
و فقط چرا میفرمایید نباید کد تایید رو در سشن ریخت ؟ بخاطر امنیت ؟
اخه از اون کدی که در پایگاه ذخیره میشه بعدا چه استفاده ای میشه ؟
مثلا اگر کاربر ثبت نام کنه و تایید موبایل انجام نده و بعد از n ساعت وارد بشه ، ما که مسلما همون کد قبلی رو بهش نمیفرستیم .
باید کد جدید ارسال کرد .
و البته ا redirect از login رو دستکاری کردم . یعنی کاربری که لاگین شده و تایید کد انجام نداده بلافاصله ریدایرکت بشه به تایید کد . ایا منطقی و درسته که در این مرحله انجام بشه ؟
protected function redirectTo()
{
if( auth()->user()->status == 0){
$verify = rand(1000,1999);
$data =[ 'user-id'=> auth()->user()->id,'verify'=>$verify,'user-phone'=> auth()->user()->phone ];
session()->put('phone_verify', $data);
$dataUser = [
'verify' => $verify
];
auth()->user()->where('id', auth()->user()->id)->update($dataUser);
return '/check-code';
}
return '/home';
}
و ببخشید سوالاتم زیاد شد.
بررسی شصت ثانیه بعد از ارسال کد باید توسط update_at از کاربر و زمان فعلی صورت بگیره درسته ؟
نمیدونم باید کجا بنویسم و به چه شکل ... فقط ممنون میشم روال کار رو بگید.
من فکر میکنم باید اگر از مثلا شصت ثانیه گذشت کد قبلی expire بشه و در صورتی که کاربر روی ارسال مجدد کد زد ،کد جدید ارسال بشه.
و ایا اینها باید در صفحه ی check-code انجام بشه ؟