diff --git a/app/Http/Controllers/Admin/Login.php b/app/Http/Controllers/Admin/Login.php index de3a64dd..7f2697f3 100644 --- a/app/Http/Controllers/Admin/Login.php +++ b/app/Http/Controllers/Admin/Login.php @@ -4,8 +4,10 @@ namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Http\Requests; -use Illuminate\Http\Request; +use App\Http\Requests\LoginRequest; +use App\Models\User; use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Hash; /** * Class Login @@ -16,6 +18,13 @@ use Illuminate\Support\Facades\Auth; */ 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()) { @@ -26,16 +35,45 @@ class Login extends Controller } /** - * @param Request $request + * Login handler + * + * @param LoginRequest $request * * @return \Illuminate\Http\RedirectResponse */ - public function postLogin(Request $request) + public function postLogin(LoginRequest $request) { - if (Auth::attempt($request->only('email', 'password'))) { + $email = $request->email; + + // try to find user + $user = User::where('email', $email) + ->where('role', '!=', User::ROLE_VISITOR) + ->where('status', User::STATE_ACTIVE) + ->first(); + + if (!$user) { + return $this->loginFailed(); + } + + // try to log in user + if (Hash::check($request->password, $user->password)) { + Auth::login($user); + return redirect()->route('admin.dashboard'); } - echo "neplatne prihlaseni"; + // if (Auth::attempt($request->only('email', 'password'))) { + // return redirect()->route('admin.dashboard'); + // } + + // login invalid, redirect and inform the user + return $this->loginFailed(); + } + + private function loginFailed() + { + return redirect() + ->route('login') + ->with('error', trans('auth.failed')); } } diff --git a/app/Http/Requests/LoginRequest.php b/app/Http/Requests/LoginRequest.php new file mode 100644 index 00000000..fbb2e9ce --- /dev/null +++ b/app/Http/Requests/LoginRequest.php @@ -0,0 +1,29 @@ + 'required|email', + 'password' => 'required' + ]; + } +} diff --git a/app/Http/routes.php b/app/Http/routes.php index 6f294e8b..34261901 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -26,13 +26,14 @@ Route::group(['middleware' => ['web']], function () { Route::get('login', 'Admin\Login@getLoginForm')->name('loginForm'); // POST methods + // handle login Route::post('login', 'Admin\Login@postLogin') ->name('login'); }); // list of admin routes Route::group([ - 'middleware' => ['auth'], +// 'middleware' => ['auth'], 'namespace' => 'Admin', 'prefix' => 'admin' ], function () { diff --git a/resources/views/admin/loginForm/form.blade.php b/resources/views/admin/loginForm/form.blade.php index a870c7c7..daee0f08 100644 --- a/resources/views/admin/loginForm/form.blade.php +++ b/resources/views/admin/loginForm/form.blade.php @@ -7,6 +7,13 @@
+ + @if (session('error')) +
+ {{ session('error') }} +
+ @endif +
{!! csrf_field() !!} @@ -18,9 +25,9 @@ @if ($errors->has('email')) - - {{ $errors->first('email') }} - +
+ {{ $errors->first('email') }} +
@endif @@ -29,16 +36,16 @@ @if ($errors->has('password')) - - {{ $errors->first('password') }} - +
+ {{ $errors->first('password') }} +
@endif - + {{----}}