Mmanos\Social\SocialController::processLogin PHP Method

processLogin() protected method

Process the response from a provider login attempt.
protected processLogin ( string $provider, OAuth\Common\Service\AbstractService $service, array $access_token ) : Illuminate\Support\Facades\Redirect
$provider string
$service OAuth\Common\Service\AbstractService
$access_token array
return Illuminate\Support\Facades\Redirect
    protected function processLogin($provider, $service, $access_token)
    {
        $user_info_callback = Config::get('laravel-social::providers.' . strtolower($provider) . '.fetch_user_info');
        if (empty($user_info_callback) || !$user_info_callback instanceof Closure) {
            return Redirect::to(Session::pull('mmanos.social.onerror', '/'))->with(Config::get('laravel-social::error_flash_var'), 'There was a problem logging in to your account (5).');
        }
        try {
            $user_info = $user_info_callback($service);
        } catch (Exception $e) {
        }
        if (empty($user_info) || !is_array($user_info)) {
            return Redirect::to(Session::pull('mmanos.social.onerror', '/'))->with(Config::get('laravel-social::error_flash_var'), 'There was a problem logging in to your account (6).');
        }
        if (empty($user_info['id'])) {
            return Redirect::to(Session::pull('mmanos.social.onerror', '/'))->with(Config::get('laravel-social::error_flash_var'), 'There was a problem logging in to your account (7).');
        }
        $provider_id = array_get($user_info, 'id');
        $user_provider = Provider::where('provider', strtolower($provider))->where('provider_id', $provider_id)->first();
        if ($user_provider) {
            Auth::loginUsingId($user_provider->user_id);
            return Redirect::to(Session::pull('mmanos.social.onsuccess', '/'));
        }
        if ($user_validation = Config::get('laravel-social::user_validation')) {
            if ($user_validation instanceof Closure) {
                $validator = $user_validation($user_info);
            } else {
                $validator = Validator::make($user_info, (array) $user_validation);
            }
            if ($validator && $validator->fails()) {
                Session::put('mmanos.social.pending', array('provider' => $provider, 'provider_id' => $provider_id, 'user_info' => $user_info, 'access_token' => $access_token));
                Session::put('mmanos.social.failed_fields', array_keys($validator->failed()));
                return Redirect::action(Config::get('laravel-social::user_failed_validation_redirect'))->withErrors($validator);
            }
        }
        $create_user_callback = Config::get('laravel-social::create_user');
        if (empty($create_user_callback) || !$create_user_callback instanceof Closure) {
            return Redirect::to(Session::pull('mmanos.social.onerror', '/'))->with(Config::get('laravel-social::error_flash_var'), 'There was a problem logging in to your account (8).');
        }
        $user_id = $create_user_callback($user_info);
        if (!$user_id || !is_numeric($user_id) || $user_id <= 0) {
            return Redirect::to(Session::pull('mmanos.social.onerror', '/'))->with(Config::get('laravel-social::error_flash_var'), 'There was a problem logging in to your account (9).');
        }
        $this->linkProvider($user_id, $provider, $provider_id, $access_token);
        Auth::loginUsingId($user_id);
        return Redirect::to(Session::pull('mmanos.social.onsuccess', '/'));
    }