Laravel – Userモデル

概要

Laravelプロジェクト作成時にUserモデルのapp/User.phpファイルが自動作成される。この中で、認証関係について調べてみた。

User.phpファイルの内容

app/User.phpの内容は以下のとおり。

認証関係

  • UserクラスはModelクラスを(直接には)継承していない
  • UserクラスはAuthenticatableクラスを継承している
  • AuthenticatableクラスはIlluminate\Foundation\Auth\Userのエイリアスとして定義されている。

Illuminate\Foundation\Auth\Userクラス

UserモデルクラスがAuthenticatbleクラスとして継承しているIlluminate\Foundation\Auth\Userクラスの要点は以下のとおり。

  • Modelクラスを継承している(L14)
  • AuthenticatableContractインターフェイスを適用している(L15)
    • AuthenticatableContractIlluminate\Contracts\Auth\Authenticatableインターフェイスのエイリアス(L15)
  • AuthenticatableContractインターフェイスのメソッドは、Illuminate\Auth\Authenticatableトレイトで実装(L19, L5)

同じAuthenticatableという名前でインターフェイスとトレイトがあるのがややこしい。

Authenticatableインターフェース

Illuminate\Contracts\Auth\Authenticatableインターフェイスは、識別子やパスワード、セッションに関する6つのメソッドの実装を要請する。

Userクラスでこのインターフェイスを適用する際には、エイリアスでAuthenticatbleContractという別名で扱っている。

Authenticatableトレイト

Illuminate\Auth\Authenticatableトレイトは、Authenticatableインターフェイスで要請された6つのメソッドを実装する。

要約

要約すると、プロジェクトで生成されるUserクラスはIlluminate\Foundation\Auth\Userクラスを継承することによって、

  • Illuminate\Database\Eloquent\Modelクラスを継承している
  • Authenticatableインターフェイスの6つのメソッドを実装している
    • これにより、ユーザー認証と継続セッションの機能が実装される。

通知関係

UserモデルクラスはIlluminate\Notifications\Notifiableトレイトを実装している。

属性関係

$fillable

フォームのデータをマスアサインメントで取り込むための設定。

$hidden

モデルを変換する際に、指定した属性を含めないための指定。

$cast

データベースの読み込み時にstringから特定のデータ型にキャストするための指定。

マイグレーションファイル

Userモデルクラスファイルとともに、以下のマイグレーションファイルもLaravelにより生成される。

artisan migrateコマンドで生成されたテーブルの構造は以下のとおり。

ユーザー認証

基本的なユーザー認証の設定はこちらを参照。

また、ユーザー登録処理の内容ログイン処理の内容についてはそれぞれのリンクを参照。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です