Установить аутентификацию вещи вручную в Laravel 5.7 - PullRequest
0 голосов
/ 12 марта 2019

Я работаю над проектом 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-.

1 Ответ

3 голосов
/ 12 марта 2019

Основываясь на документации , метод входа предполагает, что объект User будет входить в систему. Поэтому вы можете попробовать

Auth::login($user);

// or

Auth::loginUsingId($user->id);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...