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

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

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

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

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

#管理者用のモデルを作成
Laravelのプロジェクトのディレクトリでターミナルを開き、モデルを作成します。

php artisan make:model Models/Admin -m

-m を付けることで、マイグレーションファイルも同時に作成します。

#####★ポイント★
Modelsフォルダの中にAdmin.phpを作成するので、必ずモデル名の前にModels/を付けてください。

#マイグレーションファイルの編集
マイグレーションファイルcreate_users_tableを開き、nameにuniqueを追記した後、以下の内容を全てコピーします。
※最終的にメールアドレスでの認証から、ユーザー名(ユーザーID)での認証に変更する為、uniqueをnameに設定してます。
認証に使用するカラムはuniqueでなければなりません。

create_users_table
public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->id();
        $table->string('name')->unique(); // ->unique()を追記
        $table->string('email')->unique();
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
    });
}

次に、マイグレーションファイルcreate_admins_tableを開き、コピーした内容を貼り付けます。
貼り付け後、usersの部分をadminsに変更します。

create_admins_table
public function up()
{
    Schema::create('admins', function (Blueprint $table) {
        $table->id();
        $table->string('name')->unique();
        $table->string('email')->unique();
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
    });
}

#モデルの編集
ModelsフォルダのUser.phpを開き、中身をコピーします。

User.php
namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];

    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];
}

次にモデル、Admin.phpを開き、コピーした内容を貼り付けます。
class User部分はclass Adminに変更してください。

Admin.php
namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Admin extends Model
{
    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];

    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];
}

#テーブルの作成
ターミナルで以下を実行し、テーブルを作成してください。

php artisan migrate

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

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?