0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Laravel 6.x / 7.x マルチ認証の設定方法 ユーザーと管理者を分けてログイン 【第5回】

Last updated at Posted at 2020-10-09

#制作環境

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 マルチ認証の設定方法 ユーザーと管理者を分けてログイン 【第6回】
Laravel 6.x / 7.x マルチ認証の設定方法 ユーザーと管理者を分けてログイン 【第7回】
Laravel 6.x / 7.x マルチ認証の設定方法 ユーザーと管理者を分けてログイン 【最終回】

#はじめに
この記事はプログラミングをはじめたばかりの素人が、できたことをメモするのに利用しています。
内容には誤りがあるかもしれません。

記事を作成するにあたり、以下のサイトを参考にしています。
こちらの方が詳しいので、当方で付け加えている要件が不要であれば、以下を参考にした方がいいと思います。

長くなるので、何回かに分けて記事を投稿します。

#トレイトメソッドの上書き
app\Http\Controllers\Admin\Auth にあるRegisterController.phpを開き、以下を追記します。
この記述で、RegistersUsersトレイトのshowRegistrationFormを上書きしてます。

RegisterController.php
public function showRegistrationForm()
{
    return view('admin.auth.register');
}

#createメソッドの修正
RegisterController.php をさらに以下のように修正します。
use App\Models\User;は削除するかコメントアウトしてください。

####変更前

RegisterController.php
use App\Models\User;

protected function create(array $data)
{
    return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => Hash::make($data['password']),
    ]);
}

####変更後

RegisterController.php
use App\Models\Admin;

protected function create(array $data)
{
    return Admin::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => Hash::make($data['password']),
    ]);
}

#リダイレクト先の変更
app\Providers 内のRouteServiceProvider.phpを開きます。
routeservece.jpg

開いたらpublic const ADMIN_HOME = '/admin/home';を以下のように追記します。

RouteServiceProvider.php
    /**
     * The path to the "home" route for your application.
     *
     * @var string
     */
    public const HOME = '/home';
    public const ADMIN_HOME = '/admin/home';

追記が完了したら、再度app\Http\Controllers\Admin\Auth にあるRegisterController.phpを開き、以下を変更します。

RegisterController.php
    /**
     * Where to redirect users after registration.
     *
     * @var string
     */
    protected $redirectTo = RouteServiceProvider::ADMIN_HOME;

#コントローラーとルーティングの追加
新たにAdminHomeControllerを作成します。
ターミナルで以下を実行してください。

php artisan make:controller Admin/AdminHomeController

作成したらAdminHomeController.phpを開き、HomeController.phpをベースにして、内容を以下のように記述します。

AdminHomeController.php
namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class AdminHomeController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth:admin');
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Contracts\Support\Renderable
     */
    public function index()
    {
        return view('admin.home');
    }
}

次にweb.phpを開きルーティングを追記します。

web.php
Route::prefix('admin')->namespace('Admin')->name('admin.')->group(function(){
    Auth::routes();

    Route::get('/home', 'AdminHomeController@index')->name('Admin_home');
});

今回はここで終了です。
次回に続く。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?