diff --git a/src/Controllers/CypressController.php b/src/Controllers/CypressController.php index 2b25bc8..ebcf240 100644 --- a/src/Controllers/CypressController.php +++ b/src/Controllers/CypressController.php @@ -27,22 +27,24 @@ public function routes() public function login(Request $request) { + $provider = $request->input('provider', 'users'); + $guard = $request->input('guard'); $attributes = $request->input('attributes', []); if (empty($attributes)) { $user = $this->factoryBuilder( - $this->userClassName(), + $this->userClassName($provider), $request->input('state', []) )->create(); } else { - $user = app($this->userClassName()) + $user = app($this->userClassName($provider)) ->newQuery() ->where($attributes) ->first(); if (!$user) { $user = $this->factoryBuilder( - $this->userClassName(), + $this->userClassName($provider), $request->input('state', []) )->create($attributes); } @@ -50,21 +52,21 @@ public function login(Request $request) $user->load($request->input('load', [])); - return tap($user, function ($user) { - auth()->login($user); + return tap($user, function ($user) use ($guard) { + auth($guard)->login($user); $user->setHidden([])->setVisible([]); }); } - public function currentUser() + public function currentUser(Request $request) { - return auth()->user()?->setHidden([])->setVisible([]); + return auth($request->input('guard'))->user()?->setHidden([])->setVisible([]); } - public function logout() + public function logout(Request $request) { - auth()->logout(); + auth($request->input('guard'))->logout(); } public function factory(Request $request) @@ -114,9 +116,9 @@ public function runPhp(Request $request) ]); } - protected function userClassName() + protected function userClassName($provider) { - return config('auth.providers.users.model'); + return config("auth.providers.{$provider}.model"); } protected function factoryBuilder($model, $states = []) diff --git a/src/stubs/support/laravel-commands.js b/src/stubs/support/laravel-commands.js index 9af6c64..a540f77 100644 --- a/src/stubs/support/laravel-commands.js +++ b/src/stubs/support/laravel-commands.js @@ -5,11 +5,13 @@ * * @example cy.login(); * cy.login({ name: 'JohnDoe' }); + * cy.login({ name: 'JohnDoe' }); * cy.login({ attributes: { name: 'JohnDoe' }, state: 'guest', load: ['comments] }); + * cy.login({ attributes: { name: 'JohnDoe' }, provider: 'users', guard: 'custom-guard' }); */ Cypress.Commands.add('login', (attributes = {}) => { // Are we using the new object system. - let requestBody = attributes.attributes || attributes.state || attributes.load ? attributes : { attributes }; + let requestBody = (attributes.attributes || attributes.state || attributes.load) ? attributes : { attributes }; return cy .csrfToken()