#制作環境
Windows 10
Laravel : 6.18.35
Laravel/ui : 1.0
Laravel-mix : 5.0.1
Bootstrap : 4.0.0
MDBootstrap : 4.19.1
chart.js : 2.9.3
XAMPP
PHP : 7.4.3
Visual Studio Code
#関連記事
Laravel 6.x / 7.x マルチ認証の設定方法 ユーザーと管理者を分けてログイン 【第1回】
Laravel 6.x / 7.x マルチ認証の設定方法 ユーザーと管理者を分けてログイン 【第2回】
Laravel 6.x / 7.x マルチ認証の設定方法 ユーザーと管理者を分けてログイン 【第3回】
Laravel 6.x / 7.x マルチ認証の設定方法 ユーザーと管理者を分けてログイン 【第4回】
Laravel 6.x / 7.x マルチ認証の設定方法 ユーザーと管理者を分けてログイン 【第5回】
Laravel 6.x / 7.x マルチ認証の設定方法 ユーザーと管理者を分けてログイン 【第6回】
Laravel 6.x / 7.x マルチ認証の設定方法 ユーザーと管理者を分けてログイン 【最終回】
#はじめに
この記事はプログラミングをはじめたばかりの素人が、できたことをメモするのに利用しています。
内容には誤りがあるかもしれません。
記事を作成するにあたり、以下のサイトを参考にしています。
こちらの方が詳しいので、当方で付け加えている要件が不要であれば、以下を参考にした方がいいと思います。
長くなるので、何回かに分けて記事を投稿します。
#LoginController.phpの更新
app/Http/Controllers/Admin/Auth 内のLoginController.phpを開きます。
開いたら、内容を以下に修正します。
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = RouteServiceProvider::ADMIN_HOME;
さらに以下を追記し、メソッドを上書きします。
// この記述だけ画面のトップに
use Illuminate\Support\Facades\Auth;
/**
* ログインページの表示
*
* @return view
*/
public function showLoginForm()
{
return view('admin.auth.login');
}
/**
* guardメソッドの上書き
*
* @return \Illuminate\Contracts\Auth\StatefulGuard
*/
protected function guard()
{
return Auth::guard('admin');
}
#ミドルウェアの修正
app/Http/Middleware 内のAuthenticate.phpを開きます。
開いたら、内容を以下のように修正します。
/**
* 認証されていないときにユーザーがリダイレクトされるパスを取得します。
*
* @param \Illuminate\Http\Request $request
* @return string|null
*/
protected function redirectTo($request)
{
if (!$request->expectsJson()) {
if ($request->is('admin/*')) {
return route('admin.login');
}
return route('login');
}
}
#コントローラの修正
app/Http/Controllers/Admin 内のAdminHomeController.phpを開きます。
開いたら、内容を以下に修正。
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest:admin')->except('logout');
}
次にapp/Http/Controllers/Admin/Auth 内のRegisterController.phpを開きます。
開いたら、内よを以下に修正。
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest:admin');
}
#ミドルウェアの修正
app/Http/Middleware 内のRedirectifAuthenticated.phpを開きます。
開いたら、内容を以下に修正します。
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard()->check()) {
return redirect(RouteServiceProvider::HOME);
}
if (Auth::guard('admin')->check()) {
return redirect(RouteServiceProvider::ADMIN_HOME);
}
return $next($request);
}
今回は以上で終了です。
基本的な設定はここで終了ですが、当方の場合管理者はログイン機能だけを使い、新規登録やパスワードを忘れた場合の変更はホームページ上からはできないようにします。
またログインはメールアドレスではなく、ユーザー名(ユーザーID)でできるようの変更します。
次回はそちらの方を掲載します。