今回はLaravel UIを利用して実装したログイン機能で参照するフィールド名を変更する方法を紹介する。
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller
{
use AuthenticatesUsers;
protected $redirectTo = '/home';
public function __construct()
{
$this->middleware('guest')->except('logout');
}
}
Laravel UIで生成されたLoginControllerにはuseでAuthenticatesUsersが呼び出されている。
LoginControllerを改造する時は、まずçの中身を見ることから始まる(と自分は思っている)。AuthenticatesUsersを見ているとこんなものがある。
/**
* Get the login username to be used by the controller.
*
* @return string
*/
public function username ()
{
return 'email';
}
このusername()関数でログインに利用するフィールドを使用している。こいつをオーバーライド(上書き)してやれば良い。たまにvendorファイルの中身をそのまま変更する輩がいるらしいがやめてくれ。
何の為にuseで呼び出していると思っている? use先で同じ関数名の関数を作ってやれば良い。
public function username ()
{
return 'name';
}
これでログインする際はnameフィールドを参照するようになる。
AuthenticatesUsersの中にはバリデーションについての記述もあるので、変更の必要があればLoginControllerでオーバーライドすることも出来る。