0
0

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

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

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

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

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

#管理者側の変更
管理者の登録や変更は、ホームページ上からはできないようにします。

###ルーティングの変更
routes 内のweb.phpを開きます。
web.jpg

開いたら以下のように内容を修正。
管理者登録・リセット・メールは不要なので外します。

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

    Auth::routes(['register' => false, 'confirm' => false, 'reset' => false, 'verify' => false]);

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

###レイアウトの変更
resources/views/layouts 内のapp_admin.blade.phpを開きます。
appadminblade.jpg

以下の部分を下記のように修正します。

####変更前

app_admin.blade.php
@if (Route::has('register'))
    
        {{ __('Register') }}
    
@endif

####変更後

app_admin.blade.php
@if (Route::has('admin.register'))
    <li class="nav-item">
        <a class="nav-link" href="{{ route('admin.register') }}">{{ __('Register') }}</a>
    </li>
@endif

###login.blade.phpの修正
管理者のログイン画面ではreset機能を使わないので、Forgot Your Password?のリンクを表示させないようにします。

resources/views/admin/auth 内のlogin.blade.phpを開きます。

loginblade.jpg

内容を以下に変更します。

login.blade.php
@if (Route::has('admin.password.request'))
    <a class="btn btn-link" href="{{ route('admin.password.request') }}">
        {{ __('Forgot Your Password?') }}
    </a>
@endif

#認証項目の変更
デフォルトではメールアドレスでの認証になっているので、これをユーザー名(ユーザーID)で認証できるように設定を変更します。

###コントローラの変更
管理者側、ユーザー側両方のLoginController.phpに以下の内容を追記します。

login2.jpg

LoginController.php
    /**
     * ログイン時に使用するカラムの設定
     *
     * @return string name
     */
    public function username()
    {
        return 'name';
    }

認証時に使うカラムを指定するだけで変更ができます。

LoginController.php
    public function username()
    {
        return 'カラム名';
    }

以上で終了です。
お疲れ様でした。

#tinkerによるDB簡易接続
この設定では、管理者はホームページ上から登録ができない為、Tinkerを利用して管理者を登録したいと思います。
CodeCampの要件が、ユーザー名admin、パスワードadminでログインできることなので、Adminsテーブルにこの情報を登録してみたいと思います。

プロジェクトのディレクトリでターミナルを起動し、以下を入力します。

php artisan tinker

続けて

$admin = new Admin();

次に登録する値を代入していきます。

$admin->name = 'admin';
$admin->email = 'admin@admin';

パスワードのハッシュ化。

$admin->password = Hash::make('admin');

値を保存する。

$admin->save();

保存内容の確認。

Admin::all();

tinker終了

exit 又は Ctrl+c
0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?