Я работаю над проектом laravel 5.7
и хочу иметь свой собственный сценарий аутентификации.
Хорошо, я передам мобильный телефон от моего пользователя и отправлю ей one time pass
на ее телефон, а затем проверим, дает ли она мне правильный код.
Итак, я вообще не использую систему аутентификации laravel.
Мой контроллер выглядит примерно так:
/*
* Show Login Form
*/
public function showLoginForm()
{
return view('auth.custom.login');
}
/*
* Login
*/
public function login(Request $request)
{
$mobile = $request->mobile;
$this->validate($request, [
'mobile' => 'iran_mobile|required'
]);
$check = User::where('mobile', $mobile)->first();
if( $check === null )
{
Session::flash('toasterr', 'is not registered yet');
Session::put('mobile', $mobile);
return redirect(route('register'));
}
else
{
$singleTimePass = Str::random(4);
sendSms($mobile, 'your code:' . PHP_EOL . $singleTimePass . PHP_EOL . 'Insert that bla bla');
Session::put('singleTimePass', $singleTimePass);
Session::put('mobile', $mobile);
return redirect(route('check_pass'));
}
dd($check);
}
/*
* Show Check Pass page
*/
public function showCheckPass()
{
return view('auth.custom.pass');
}
/*
* Check Pass For Login
*/
public function checkPassForLogin(Request $request)
{
$this->validate($request, [
'pass' => 'required|regex:/^[\w-]*$/'
]);
if( $request->pass == Session::get('singleTimePass'))
{
$user = User::where('mobile', Session::get('mobile'))->first();
// dd($user->id);
Auth::login($user->id);
return redirect(route('game'));
}
else
{
Session::flash('toasterr', 'pass is wrong');
return redirect(route('check_pass'));
}
}
/*
* Show Register Form
*/
public function showRegisterForm()
{
return view('auth.custom.register');
}
/*
* Register
*/
public function register(Request $request)
{
$this->validate($request, [
'name' => 'persian_alpha|required',
'family' => 'persian_alpha|required',
'username' => 'required|min:4|max:255|string',
'mobile' => 'iran_mobile|required',
]);
return $request->all();
}
Хорошо! Кажется, все хорошо, но теперь я ожидаю, что laravel даст мне такие способности, как Auth::check()
или Auth::user()
и ...
Итак, я знаю, что у меня есть ошибка в этой строке: Auth::login($user->id);
, и я хочу знать, как я могу сделать что-то подобное вручную для указанной цели.
Может быть, это из-за моих плохих знаний об архитектуре аутентификации Laravel, но было бы полезно, если бы вы мне сообщили, как это сделать, потому что некоторое время гуглил, а прямого ответа на этот вопрос нет -or I did not searched enough-
.