Dave Dave - 1 year ago 216
PHP Question

Laravel 5.3 Redirect from Controller Method to Another Route

I have opted out of using Laravel's built in User Authentication due to my application's requirements. We rely on a Third Party SSO to authenticate our users, and I was unable to get Socialite to work with their SSO, so I am having to custom build a Controller to handle the authentication process. The Controller is performing b-e-a-utifully up until the part when I need to redirect the user from the Callback Route & Controller to the Member Route & Controller. It won't redirect. Period. I have tried every method I know how to redirect to another route from within the controller and it will not work.

Here is my custom AuthController for Laravel 5.3:


namespace App\Http\Controllers;

use App\User;
use Curl\Curl;
use App\Http\Controllers\PhealController as Pheal;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Auth;
use Illuminate\Routing\Redirector;

class AuthController extends Controller

protected $curl;
private $data;

public function __construct ()
$this->curl = new Curl();
$this->pheal = new Pheal();
$this->data = [];
public function sendToSSO()
$url = env('EVE_SSO_LOGIN')."?response_type=code&redirect_uri=".env('EVE_CALLBACK_URL')."&client_id=".env('EVE_CLIENT_ID')."&scope=".env('EVE_SCOPES');
return redirect($url);

public function handleCallback(Request $request)

$this->curl->setHeader('Authorization', "Basic ". base64_encode(env('EVE_CLIENT_ID').":".env('EVE_SECRET')));
$this->curl->setHeader('Content-Type', "application/x-www-form-urlencoded");
$this->curl->setHeader('Host', "login.eveonline.com");
$this->curl->post('https://login.eveonline.com/oauth/token', [
'grant_type' => 'authorization_code',
'code' => $request->code

$response = $this->curl->response;

if (isset($response->error)) {
throw new \Exception($response->error_description);

$this->data = [
'accessToken' => $response->access_token,
'refreshToken' => $response->refresh_token



public function verifyToken ()

$this->curl->setHeader('User-Agent', "David Douglas ddouglas@douglaswebdev.net");
$this->curl->setHeader('Authorization', "Bearer ". $this->data['accessToken']);
$this->curl->setHeader('Host', "login.eveonline.com");

$response = $this->curl->response;

if (isset($response->error)) {
throw new \Exception($response->error_description);

$this->data['characterID'] = $response->CharacterID;
$this->data['characterName'] = $response->CharacterName;
$this->data['accessTokenExpire'] = $response->ExpiresOn;

try {
$characterInfo = $this->pheal->call('eve', 'CharacterInfo', ['characterID' => $this->data['characterID']])['result'];
} catch (\Exceoption $e) {

if (!isset($characterInfo['allianceID'])) {
abort(403, "Care Factor Alliance Members Only. Sorry :-(");
if ($characterInfo['allianceID'] !== env('CF-ALLIANCE-ID')) {
abort(403, "Care Factor Alliance Members Only. Sorry :-(");

$this->data['corporationID'] = $characterInfo['corporationID'];
$this->data['corporation'] = $characterInfo['corporation'];

$user = User::find($this->data['characterID']);

if ($user) {
} else {

private function getData()
return $this->data;

public function createNewUserAndLogin()
dd('To be Created');
public function updateUserAndLogin($user)
$user->corporationID = $this->data['corporationID'];
$user->corporation = $this->data['corporation'];
$user->accessToken = $this->data['accessToken'];
$user->refreshToken = $this->data['refreshToken'];
$user->accessTokenExpire = $this->data['accessTokenExpire'];

return redirect('member/dashboard/');


I have also tried:

return redirect()->route('member.dashboard');

With no luck.

Answer Source

You mean the $this->createNewUserAndLogin()? Maybe trying return $this->updateUserAndLogin($user); and return $this->verifyToken(); so you return the response on the main method of the route?

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download