FIX: fix login

Login should work again. Problem was in non-setting sessions. This was resolved by adding middleware "web" to admin group. Thanks to great documentation for NOT MENTIONING this pitfall!
This commit is contained in:
Michal Kváček
2016-01-24 15:08:59 +01:00
parent 2ade14beba
commit 8a91a95a67
11 changed files with 40 additions and 80 deletions
+2 -1
View File
@@ -4,10 +4,11 @@ namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Http\Requests; use App\Http\Requests;
use Illuminate\Support\Facades\Session;
class Dashboard extends Controller class Dashboard extends Controller
{ {
public function getIndex() { public function getIndex(Request $request) {
return view('admin.dashboard'); return view('admin.dashboard');
} }
} }
+5 -22
View File
@@ -6,8 +6,10 @@ use App\Http\Controllers\Controller;
use App\Http\Requests; use App\Http\Requests;
use App\Http\Requests\LoginRequest; use App\Http\Requests\LoginRequest;
use App\Models\User; use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Session;
/** /**
* Class Login * Class Login
@@ -18,22 +20,6 @@ use Illuminate\Support\Facades\Hash;
*/ */
class Login extends Controller class Login extends Controller
{ {
/**
* Display login form
*
* This method displays login form, or in case that user is logged in, redirects him to admin dashboard panel.
*
* @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse|\Illuminate\View\View
*/
public function getLoginForm()
{
if (Auth::check()) {
return redirect()->route('admin.dashboard');
}
return view('admin.loginForm.form');
}
/** /**
* Login handler * Login handler
* *
@@ -59,13 +45,9 @@ class Login extends Controller
if (Hash::check($request->password, $user->password)) { if (Hash::check($request->password, $user->password)) {
Auth::login($user); Auth::login($user);
return redirect()->route('admin.dashboard'); return redirect()->intended(route('admin.dashboard'));
} }
// if (Auth::attempt($request->only('email', 'password'))) {
// return redirect()->route('admin.dashboard');
// }
// login invalid, redirect and inform the user // login invalid, redirect and inform the user
return $this->loginFailed(); return $this->loginFailed();
} }
@@ -74,6 +56,7 @@ class Login extends Controller
{ {
return redirect() return redirect()
->route('login') ->route('login')
->with('error', trans('auth.failed')); ->with('error', trans('auth.failed'))
->withInput();
} }
} }
+1 -1
View File
@@ -45,7 +45,7 @@ class Kernel extends HttpKernel
*/ */
protected $routeMiddleware = [ protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class, 'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, // 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
]; ];
+6 -5
View File
@@ -10,19 +10,20 @@ class Authenticate
/** /**
* Handle an incoming request. * Handle an incoming request.
* *
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @param \Closure $next * @param \Closure $next
* @param string|null $guard * @param string|null $guard
*
* @return mixed * @return mixed
*/ */
public function handle($request, Closure $next, $guard = null) public function handle($request, Closure $next, $guard = null)
{ {
if (!Auth::check($guard)) { if (!Auth::guard($guard)->check()) {
if ($request->ajax()) { if ($request->ajax()) {
return response('Unauthorized.', 401); return response('Unauthorized.', 401);
} }
return redirect()->guest('login'); return redirect()->route('login');
} }
return $next($request); return $next($request);
@@ -18,7 +18,7 @@ class RedirectIfAuthenticated
public function handle($request, Closure $next, $guard = null) public function handle($request, Closure $next, $guard = null)
{ {
if (Auth::guard($guard)->check()) { if (Auth::guard($guard)->check()) {
return redirect('/'); return redirect()->route('admin.dashboard');
} }
return $next($request); return $next($request);
-10
View File
@@ -4,16 +4,6 @@ namespace App\Http\Requests;
class LoginRequest extends Request class LoginRequest extends Request
{ {
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/** /**
* Get the validation rules that apply to the request. * Get the validation rules that apply to the request.
* *
+7 -3
View File
@@ -3,14 +3,18 @@
/** /**
* This routing groups is used for routing along public part of website * This routing groups is used for routing along public part of website
*/ */
use Illuminate\Http\Request;
Route::group(['middleware' => ['web']], function () { Route::group(['middleware' => ['web']], function () {
// display login form // display login form
Route::get('login', 'Admin\Login@getLoginForm') Route::get('login', function () {
return view('admin.loginForm.form');
})
->name('loginForm'); ->name('loginForm');
// handle login // handle login
Route::post('admin/login', 'Admin\Login@postLogin') Route::post('login', 'Admin\Login@postLogin')
->name('login'); ->name('login');
}); });
@@ -20,7 +24,7 @@ Route::group(['middleware' => ['web']], function () {
* This route group serves to handle request in admin * This route group serves to handle request in admin
*/ */
Route::group([ Route::group([
'middleware' => ['auth'], 'middleware' => ['web', 'auth'],
'namespace' => 'Admin', 'namespace' => 'Admin',
'prefix' => 'admin' 'prefix' => 'admin'
], function () { ], function () {
+2 -18
View File
@@ -13,7 +13,7 @@ use Illuminate\Foundation\Auth\Access\Authorizable;
*/ */
class User extends Model implements AuthenticableInterface class User extends Model implements AuthenticableInterface
{ {
use Authenticatable, Authorizable, CanResetPassword; use Authenticatable, Authorizable;
public $timestamps = false; public $timestamps = false;
protected $fillable = [ protected $fillable = [
@@ -39,20 +39,4 @@ class User extends Model implements AuthenticableInterface
const ROLE_VISITOR = 'visitor'; const ROLE_VISITOR = 'visitor';
const ROLE_EDITOR = 'editor'; const ROLE_EDITOR = 'editor';
const ROLE_ADMIN = 'admin'; const ROLE_ADMIN = 'admin';
}
/**
* Validation method for input data
*
* @param array $data
*
* @throws ValidationException
*/
public static function validate(array $data)
{
$valid = true;
if (!$valid) {
throw new ValidationException(Validator::class, 'Invalid request');
}
}
}
+3 -4
View File
@@ -1,9 +1,8 @@
{ {
"name": "laravel/laravel", "name": "binarity/minicms",
"description": "The Laravel Framework.", "description": "Content management system.",
"keywords": [ "keywords": [
"framework", "cms"
"laravel"
], ],
"license": "MIT", "license": "MIT",
"type": "project", "type": "project",
Generated
+12 -12
View File
@@ -4,8 +4,8 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"hash": "e1df7a663824f03abec6a4688a30e0d3", "hash": "53113db66c2d51264c2a77f87dd0e86b",
"content-hash": "f6d1dca260e16530b88c6572ad98598e", "content-hash": "d8baefcd2e40fe5a3b7f262146c46f34",
"packages": [ "packages": [
{ {
"name": "classpreloader/classpreloader", "name": "classpreloader/classpreloader",
@@ -793,16 +793,16 @@
}, },
{ {
"name": "laravel/framework", "name": "laravel/framework",
"version": "v5.2.10", "version": "v5.2.11",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/laravel/framework.git", "url": "https://github.com/laravel/framework.git",
"reference": "93dc5b0089eef468157fd7200e575c3861ec59a5" "reference": "e8ad411ac3ca63f532952417156e32d010fcc522"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/laravel/framework/zipball/93dc5b0089eef468157fd7200e575c3861ec59a5", "url": "https://api.github.com/repos/laravel/framework/zipball/e8ad411ac3ca63f532952417156e32d010fcc522",
"reference": "93dc5b0089eef468157fd7200e575c3861ec59a5", "reference": "e8ad411ac3ca63f532952417156e32d010fcc522",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -917,20 +917,20 @@
"framework", "framework",
"laravel" "laravel"
], ],
"time": "2016-01-13 20:29:10" "time": "2016-01-22 18:36:05"
}, },
{ {
"name": "laravelcollective/html", "name": "laravelcollective/html",
"version": "v5.2.2", "version": "v5.2.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/LaravelCollective/html.git", "url": "https://github.com/LaravelCollective/html.git",
"reference": "c88b2d59a56ed2290fc5082a1a6099e357c9fdbc" "reference": "7ec0ca55cab54cc6d331007d86ec068b61f46aad"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/LaravelCollective/html/zipball/c88b2d59a56ed2290fc5082a1a6099e357c9fdbc", "url": "https://api.github.com/repos/LaravelCollective/html/zipball/7ec0ca55cab54cc6d331007d86ec068b61f46aad",
"reference": "c88b2d59a56ed2290fc5082a1a6099e357c9fdbc", "reference": "7ec0ca55cab54cc6d331007d86ec068b61f46aad",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -971,7 +971,7 @@
], ],
"description": "HTML and Form Builders for the Laravel Framework", "description": "HTML and Form Builders for the Laravel Framework",
"homepage": "http://laravelcollective.com", "homepage": "http://laravelcollective.com",
"time": "2016-01-16 16:54:49" "time": "2016-01-20 18:28:21"
}, },
{ {
"name": "league/flysystem", "name": "league/flysystem",
@@ -4,11 +4,9 @@
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge"> <meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
@yield('head_meta')
<title>@lang('admin/loginForm.login') | {{$vendorName}}</title> <title>@lang('admin/loginForm.login') | {{$vendorName}}</title>
<link rel="stylesheet" href="{{asset('../resources/assets/css/foundation.css')}}" /> <link rel="stylesheet" href="{{asset('../resources/assets/css/foundation.css')}}" />
<link rel="stylesheet" href="{{asset('../resources/assets/css/admin.css')}}" /> <link rel="stylesheet" href="{{asset('../resources/assets/css/admin.css')}}" />
@yield('head_stylesheets')
</head> </head>
<body> <body>
@@ -29,7 +27,7 @@
<label> <label>
@lang('admin/loginForm.email') @lang('admin/loginForm.email')
<input type="text" placeholder="somebody@example.com" name="email"> <input type="text" placeholder="somebody@example.com" value="{{old('email')}}" name="email">
@if ($errors->has('email')) @if ($errors->has('email'))
<div data-alert class="callout alert text-center small"> <div data-alert class="callout alert text-center small">