Edited at

【Laravel】メアド以外でログインしたい

標準の

$ php artisan make:auth

でログインを作るとメアドとパスワードでログインするようになる。

メアドではなく name でログインする方法

LoginController に以下の関数を追加する。別のフィールドをログインに使う場合はそのフィールド名を記述

app/Http/Controllers/Auth/LoginController.php

+    public function username()

+ {
+ return 'name';
+ }

ログイン画面をカスタマイズする。

resources/views/auth/login.blade.php

-                        <div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">

- <label for="email" class="col-md-4 control-label">メールアドレス</label>
-
- <div class="col-md-6">
- <input id="email" type="email" class="form-control" name="email" value="{{ old('email') }}" required autofocus>
-
- @if ($errors->has('email'))
- <span class="help-block">
- <strong>{{ $errors->first('email') }}</strong>
- </span>
- @endif
- </div>
- </div>
+ <div class="form-group{{ $errors->has('name') ? ' has-error' : '' }}">
+ <label for="name" class="col-md-4 control-label">名前</label>
+
+ <div class="col-md-6">
+ <input id="name" type="text" class="form-control" name="name" value="{{ old('name') }}" required autofocus>
+
+ @if ($errors->has('name'))
+ <span class="help-block">
+ <strong>{{ $errors->first('name') }}</strong>
+ </span>
+ @endif
+ </div>
+ </div>

この他にもユーザー名が重複しないようバリデーションチェックを入れるとかの対応は必要だが、とりあえずこれで name でログインが可能になる。

usersテーブルのemailフィールド同様、nameフィールドも unique にしておいた方が良いかもね。

- 目次 -