done simple login/register flow

This commit is contained in:
kroutony 2020-03-03 17:44:44 +08:00
parent ade225e507
commit c823c6f2a9
7 changed files with 47 additions and 11 deletions

View File

@ -4,6 +4,8 @@ namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider; use App\Providers\RouteServiceProvider;
use App\User;
use Illuminate\Http\Request;
use Illuminate\Foundation\Auth\AuthenticatesUsers; use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller class LoginController extends Controller
@ -37,4 +39,26 @@ class LoginController extends Controller
{ {
$this->middleware('guest')->except('logout'); $this->middleware('guest')->except('logout');
} }
public function login(Request $request)
{
// Validate request fields
$this->validateLogin($request);
// Find existed user by email
$requestEmail = $request->get('email');
$existedUser = User::where('email', $requestEmail)->first();
if($existedUser) { // Login procedure
if ($this->attemptLogin($request)) {
return $this->sendLoginResponse($request);
} else {
$this->incrementLoginAttempts($request);
return $this->sendFailedLoginResponse($request);
}
} else { // Register procedure
$registerController = app(RegisterController::class);
return $registerController->register($request);
}
}
} }

View File

@ -6,6 +6,7 @@ use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider; use App\Providers\RouteServiceProvider;
use App\User; use App\User;
use Illuminate\Foundation\Auth\RegistersUsers; use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
@ -51,7 +52,7 @@ class RegisterController extends Controller
{ {
return Validator::make($data, [ return Validator::make($data, [
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'], 'password' => ['required', 'string', 'min:8'],
]); ]);
} }
@ -68,4 +69,10 @@ class RegisterController extends Controller
'password' => Hash::make($data['password']), 'password' => Hash::make($data['password']),
]); ]);
} }
protected function registered(Request $request, $user)
{
$request->session()->flash('registerd', true);
return redirect($this->redirectPath());
}
} }

View File

@ -13,7 +13,6 @@ class HomeController extends Controller
*/ */
public function __construct() public function __construct()
{ {
$this->middleware('auth');
} }
/** /**

View File

@ -21,7 +21,7 @@ class RouteServiceProvider extends ServiceProvider
* *
* @var string * @var string
*/ */
public const HOME = '/home'; public const HOME = '/';
/** /**
* Define your route model bindings, pattern filters, etc. * Define your route model bindings, pattern filters, etc.

View File

@ -5,7 +5,10 @@
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col-md-8"> <div class="col-md-8">
<div class="card"> <div class="card">
<div class="card-header">{{ __('Login') }}</div> <div class="card-header">
<div>Login / Register</div>
<div>Enter your credential to login, if you are not a member, you will be registered automatically</div>
</div>
<div class="card-body"> <div class="card-body">
<form method="POST" action="{{ route('login') }}"> <form method="POST" action="{{ route('login') }}">

View File

@ -13,8 +13,16 @@
{{ session('status') }} {{ session('status') }}
</div> </div>
@endif @endif
@if(session('registerd'))
<div class="alert alert-success" role="alert">
Register successful!
</div>
@endif
@auth
You are logged in! You are logged in!
@else
You are guest!
@endauth
</div> </div>
</div> </div>
</div> </div>

View File

@ -41,13 +41,8 @@
<!-- Authentication Links --> <!-- Authentication Links -->
@guest @guest
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a> <a class="nav-link" href="{{ route('login') }}">Login / Register</a>
</li> </li>
@if (Route::has('register'))
<li class="nav-item">
<a class="nav-link" href="{{ route('register') }}">{{ __('Register') }}</a>
</li>
@endif
@else @else
<li class="nav-item dropdown"> <li class="nav-item dropdown">
<a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre> <a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>