お久しぶりです。
少し期間が空いてしまいました。コロナ怖いですね。皆さんうがい手洗い、マスク着用、Social Distanceでこの危機を乗り切りましょう。
今回は久しぶりにLaravelを触る機会があった+新しい知識を得たのでここに共有したいと思います。
Laravel標準の認証をemailからnameに変更する
タイトルにあるよう、Laravel標準の認証をemailからnameに変更しました。
まず認証をアプリケーションに実装する方法は、以下の記事で説明してありますので参考にしてみてください。
Laravel標準の認証では、emailとpassowrdでのログインですのでこれをnameとpasswordでのログインに変更していきたいと思います。
と言ってもLaravel様。簡単に実装ができるようになっております。
controllerの編集
// /app/Http/Controllers/Auth/LoginController.php
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
class LoginController extends Controller
{
use AuthenticatesUsers;
protected $redirectTo = '/admin';
public function __construct()
{
$this->middleware('guest')->except('logout');
}
// ここから ->
public function username()
{
return 'name';
}
// <-ここまで
}
とLoginController.phpを編集します。usernameメソッドでemailと指定していたのをnameにオーバーライドすることができます。
viewの編集
<input name="name" value="" type="text">
といった感じでnameをemailからnameに変更してください。
注意点
デフォルトの設定ではnameはユニークではないのでnameが被ってしまう可能性があります。なのでregisterの時点でnameがユニークになるよう設定しておく必要がありますのでご注意を。