私にはさまざまなユーザーがいます。そのうちの何人かは普通のユーザーで、何人かは管理者です。私が必要としているのは、管理者がユーザー リストのボタンをクリックするだけで他のユーザーとしてログインできることです。
私がこれまでに持っているものは次のとおりです。
index.blade.php (ユーザーリスト):
<a href='{{URL::route('users.loginas', array('id' => $user->id))}}'>LoginAs</a>
ルート.php:
Route::group(array('before'=>'auth'), function()
{
Route::get('/', array('as'=>'index', 'uses'=>'HomeController@showWelcome'));
Route::resource('users', 'UsersController');
Route::any('users/loginas/{id}', array('as'=>'users.loginas', 'uses' => 'UsersController@loginAs'));
});
ユーザーコントローラー.php:
class UsersController extends BaseController {
...
public function loginAs($id)
{
Auth::logout();
Auth::loginUsingId($id);
return Redirect::route('provalogin');
}
}
ID 1 のユーザーでログインしているときに、ユーザー リストから ID 2 のユーザーのリンクをクリックすると、mysite.com/users/loginas/2 に正しくリダイレクトされますが、ErrorException がスローされます。
Illuminate\Auth\Guard::login() に渡される引数 1 は、インターフェイス Illuminate\Auth\UserInterface を実装する必要があります。null を指定すると、/var/www/mysite.com/web/vendor/laravel/framework/src/Illuminate/Auth で呼び出されます。 /Guard.php 368 行目および定義済み
次に、URL を mysite.com/users に変更すると、実際に新しいユーザーとしてログインしていることがわかるので、うまくいきAuth::loginUsingId(2)
ました。
私は何を間違っていますか?またはどうすればいいですか?