Start Front End of Client Portal - Authentication

This commit is contained in:
David Bomba 2019-07-16 12:38:11 +10:00
parent 9effc2ebca
commit 241cb02a86
8 changed files with 78 additions and 32 deletions

View File

@ -94,7 +94,7 @@ class Handler extends ExceptionHandler
switch ($guard) { switch ($guard) {
case 'contact': case 'contact':
$login = 'contact.login'; $login = 'client.login';
break; break;
case 'user': case 'user':
$login = 'login'; $login = 'login';

View File

@ -11,15 +11,18 @@
namespace App\Http\Controllers\Auth; namespace App\Http\Controllers\Auth;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Auth; use Auth;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use Route; use Route;
class ContactLoginController extends Controller class ContactLoginController extends Controller
{ {
protected $redirectTo = '/contact'; use AuthenticatesUsers;
protected $redirectTo = '/client/dashboard';
public function __construct() public function __construct()
{ {
@ -33,25 +36,34 @@ class ContactLoginController extends Controller
public function login(Request $request) public function login(Request $request)
{ {
// Validate the form data
$this->validate($request, [
'email' => 'required|email',
'password' => 'required|min:6'
]);
// Attempt to log the user in
if (Auth::guard('contact')->attempt(['email' => $request->email, 'password' => $request->password], $request->remember)) {
// if successful, then redirect to their intended location
return redirect()->intended(route('contact.dashboard'));
}
// if unsuccessful, then redirect back to the login with the form data Auth::shouldUse('contact');
return redirect()->back()->withInput($request->only('email', 'remember'));
$this->validateLogin($request);
if ($this->hasTooManyLoginAttempts($request)) {
$this->fireLockoutEvent($request);
return response()->json(['message' => 'Too many login attempts, you are being throttled']);
}
if ($this->attemptLogin($request))
return redirect()->intended(route('client.dashboard'));
else {
$this->incrementLoginAttempts($request);
return redirect()->back()->withInput($request->only('email', 'remember'));
}
} }
public function logout() public function logout()
{ {
Auth::guard('contact')->logout(); Auth::guard('contact')->logout();
return redirect('/contact/login');
return redirect('/client/login');
} }
} }

View File

@ -59,6 +59,17 @@ class Kernel extends HttpKernel
'bindings', 'bindings',
'query_logging', 'query_logging',
], ],
'client' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\StartupCheck::class,
\App\Http\Middleware\QueryLogging::class,
],
'db' => [ 'db' => [
\App\Http\Middleware\SetDb::class, \App\Http\Middleware\SetDb::class,
], ],

View File

@ -29,7 +29,7 @@ class RedirectIfAuthenticated
switch ($guard) { switch ($guard) {
case 'contact': case 'contact':
if (Auth::guard($guard)->check()) { if (Auth::guard($guard)->check()) {
return redirect()->route('contact.dashboard'); return redirect()->route('client.dashboard');
} }
break; break;
case 'user': case 'user':

View File

@ -137,6 +137,8 @@ class RouteServiceProvider extends ServiceProvider
$this->mapWebRoutes(); $this->mapWebRoutes();
$this->mapContactApiRoutes(); $this->mapContactApiRoutes();
$this->mapClientApiRoutes();
} }
/** /**
@ -182,5 +184,20 @@ class RouteServiceProvider extends ServiceProvider
->namespace($this->namespace) ->namespace($this->namespace)
->group(base_path('routes/contact.php')); ->group(base_path('routes/contact.php'));
} }
/**
* Define the "client" routes for the application.
*
* These routes are typically stateless.
*
* @return void
*/
protected function mapClientApiRoutes()
{
Route::prefix('')
->middleware('client')
->namespace($this->namespace)
->group(base_path('routes/client.php'));
}
} }

View File

@ -8,7 +8,12 @@
<div class="card-header">{{ __('Login') }}</div> <div class="card-header">{{ __('Login') }}</div>
<div class="card-body"> <div class="card-body">
<form method="POST" action="{{ route('contact.login.submit') }}"> @if (Session::has('error'))
<div class="alert alert-danger">
<li>{!! Session::get('error') !!}</li>
</div>
@endif
<form method="POST" action="{{ route('client.login.submit') }}">
@csrf @csrf
<div class="form-group row"> <div class="form-group row">

14
routes/client.php Normal file
View File

@ -0,0 +1,14 @@
<?php
Route::get('client/login', 'Auth\ContactLoginController@showLoginForm')->name('client.login');
Route::post('client/login', 'Auth\ContactLoginController@login')->name('client.login.submit');
//todo implement domain DB
//Route::group(['middleware' => ['auth:contact', 'domain_db'], 'prefix' => 'client', 'as' => 'client.'], function () {
Route::group(['middleware' => ['auth:contact'], 'prefix' => 'client', 'as' => 'client.'], function () {
Route::get('dashboard', 'ClientPortal\DashboardController@index')->name('dashboard'); // name = (dashboard. index / create / show / update / destroy / edit
Route::get('logout', 'Auth\ContactLoginController@logout')->name('logout');
});

View File

@ -15,9 +15,6 @@ Route::redirect('/', '/login', 301);
Route::get('signup', 'AccountController@index')->name('signup'); Route::get('signup', 'AccountController@index')->name('signup');
Route::post('signup', 'AccountController@store')->name('signup.submit'); Route::post('signup', 'AccountController@store')->name('signup.submit');
Route::get('contact/login', 'Auth\ContactLoginController@showLoginForm')->name('contact.login');
Route::post('contact/login', 'Auth\ContactLoginController@login')->name('contact.login.submit');
/* /*
* Password Reset Routes... * Password Reset Routes...
*/ */
@ -94,17 +91,7 @@ Route::group(['middleware' => ['url_db']], function () {
}); });
/*
Authenticated Contact Routes
*/
Route::group(['prefix' => 'contact', 'middleware' => 'auth:contact'], function () {
Route::get('/', 'ClientPortal\DashboardController@index')->name('contact.dashboard');
Route::get('logout', 'Auth\ContactLoginController@logout')->name('contact.logout');
});
/* /*
* Injects users translation strings in json format for frontend consumption. * Injects users translation strings in json format for frontend consumption.