From fc505c22f2b274c31ff027a13a3f8aa65e63f607 Mon Sep 17 00:00:00 2001 From: fabriciojs Date: Tue, 20 Dec 2022 11:38:26 -0300 Subject: [PATCH 1/2] Add support to custom provider and/or guard --- src/Controllers/CypressController.php | 22 ++++++++++++---------- src/stubs/support/laravel-commands.js | 4 +++- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/Controllers/CypressController.php b/src/Controllers/CypressController.php index 2b25bc8..489758c 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); } @@ -51,20 +53,20 @@ public function login(Request $request) $user->load($request->input('load', [])); return tap($user, function ($user) { - auth()->login($user); + 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() From be1e72db2d7ea60733bda3a8dd4f4db57f83a659 Mon Sep 17 00:00:00 2001 From: fabriciojs Date: Tue, 20 Dec 2022 12:07:34 -0300 Subject: [PATCH 2/2] fix guard scope injection --- src/Controllers/CypressController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Controllers/CypressController.php b/src/Controllers/CypressController.php index 489758c..ebcf240 100644 --- a/src/Controllers/CypressController.php +++ b/src/Controllers/CypressController.php @@ -52,7 +52,7 @@ public function login(Request $request) $user->load($request->input('load', [])); - return tap($user, function ($user) { + return tap($user, function ($user) use ($guard) { auth($guard)->login($user); $user->setHidden([])->setVisible([]);