Sander
Sander

Reputation: 1401

Sentinel::authenticate() doesn't work

I'm using Laravel 5.2, with a fresh Sentinel 2.0 installation, registering works fine, but attempting to login returns the user, but does not set any cookie or session or whatsoever..

update1

At this moment I've found that no cookie/session is saved whatsoever. I can't really figure out as to why the cookie is not pushed.

AuthController.php

namespace App\Modules\Auth\Controllers;

use App\Http\Requests;
use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class AuthController extends Controller {

    public function getLogin() {
        return view("Auth::login");
    }

    public function postLogin(Request $request) {

        $credentials = [
            'email'    => $request->input('login_email'),
            'password' => $request->input('login_password'),
        ];


        if (\Sentinel::authenticate($credentials)) {
            return redirect('core/dashboard');
        }
    }

}

\Sentinel::check(); var_dump() before redirect

object(Cartalyst\Sentinel\Users\EloquentUser)#188 (27) {
  ["table":protected]=>
  string(5) "users"
  ["fillable":protected]=>
  array(5) {
    [0]=>
    string(5) "email"
    [1]=>
    string(8) "password"
    [2]=>
    string(9) "last_name"
    [3]=>
    string(10) "first_name"
    [4]=>
    string(11) "permissions"
  }
  ["persistableKey":protected]=>
  string(7) "user_id"
  ["persistableRelationship":protected]=>
  string(12) "persistences"
  ["loginNames":protected]=>
  array(1) {
    [0]=>
    string(5) "email"
  }
  ["connection":protected]=>
  NULL
  ["primaryKey":protected]=>
  string(2) "id"
  ["perPage":protected]=>
  int(15)
  ["incrementing"]=>
  bool(true)
  ["timestamps"]=>
  bool(true)
  ["attributes":protected]=>
  array(9) {
    ["id"]=>
    int(1)
    ["email"]=>
    string(25) "[email protected]"
    ["password"]=>
    string(60) "$2y$10$wXHwd6ubbHWWXU9CBI/7AOdDsHY.f7t8b1Kjem0m1ep7Ud.9M/4i6"
    ["permissions"]=>
    NULL
    ["last_login"]=>
    object(Carbon\Carbon)#192 (3) {
      ["date"]=>
      string(26) "2016-01-06 15:15:42.000000"
      ["timezone_type"]=>
      int(3)
      ["timezone"]=>
      string(3) "UTC"
    }

Any ideas what can go wrong?

in .env the session driver is set to database, and the sessions table stays empty after login. No cookie is set either.

Upvotes: 0

Views: 1966

Answers (3)

jessn
jessn

Reputation: 141

The reason is that Sentinel uses Cookies/Sessions. If you want to use another middleware group than web make sure that it middleware for those are added to the group.

Upvotes: 0

Samuel Dervis
Samuel Dervis

Reputation: 387

Had the same issue. I had to create a route group with the web middleware

Route::group(['middleware' => 'web'], function() {
    Route::get('modules', ['uses' => 'ModuleController@index', 'as' => 'modules']);
    Route::get('modules/{name}', ['uses' => 'ModuleController@show', 'as' => 'modules.show']);
    Route::post('modules/{module}/publish', ['as' => 'module.publish', 'uses' => 'ModuleController@publish']);
    Route::post('modules/{module}/enable', ['as' => 'module.enable', 'uses' => 'ModuleController@enable']);
    Route::post('modules/{module}/disable', ['as' => 'module.disable', 'uses' => 'ModuleController@disable']);
});

Worked as expected then.

Upvotes: 1

Sander
Sander

Reputation: 1401

I've found the answer in another answer here on stackoverflow. Need to enable 'web' middleware.. sigh

Wish they'd documented that somewhere..

https://stackoverflow.com/a/34529550/775260

Upvotes: 0

Related Questions