From a8ad4cedf1f4bf0e4cc207ae65f9ee64652b1f96 Mon Sep 17 00:00:00 2001 From: Dries Vints Date: Wed, 6 May 2020 17:42:38 +0200 Subject: [PATCH] Fix displaying secret in Vue component --- resources/js/components/Clients.vue | 4 ++-- src/Http/Controllers/ClientController.php | 21 +++++++++++++++++---- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/resources/js/components/Clients.vue b/resources/js/components/Clients.vue index 6bf4f4c3e..708a3e2b3 100644 --- a/resources/js/components/Clients.vue +++ b/resources/js/components/Clients.vue @@ -50,7 +50,7 @@ - {{ client.secret }} + {{ client.secret ? client.secret : '-' }} @@ -337,7 +337,7 @@ axios[method](uri, form) .then(response => { - this.getClients(); + this.clients.push(response.data); form.name = ''; form.redirect = ''; diff --git a/src/Http/Controllers/ClientController.php b/src/Http/Controllers/ClientController.php index 1ef17d852..8e418a414 100644 --- a/src/Http/Controllers/ClientController.php +++ b/src/Http/Controllers/ClientController.php @@ -7,6 +7,7 @@ use Illuminate\Http\Response; use Laravel\Passport\ClientRepository; use Laravel\Passport\Http\Rules\RedirectRule; +use Laravel\Passport\Passport; class ClientController { @@ -59,14 +60,20 @@ public function forUser(Request $request) { $userId = $request->user()->getAuthIdentifier(); - return $this->clients->activeForUser($userId)->makeVisible('secret'); + $clients = $this->clients->activeForUser($userId); + + if (Passport::$hashesClientSecrets) { + return $clients; + } + + return $clients->makeVisible('secret'); } /** * Store a new client. * * @param \Illuminate\Http\Request $request - * @return \Laravel\Passport\Client + * @return \Laravel\Passport\Client|array */ public function store(Request $request) { @@ -76,10 +83,16 @@ public function store(Request $request) 'confidential' => 'boolean', ])->validate(); - return $this->clients->create( + $client = $this->clients->create( $request->user()->getAuthIdentifier(), $request->name, $request->redirect, false, false, (bool) $request->input('confidential', true) - )->makeVisible('secret'); + ); + + if (Passport::$hashesClientSecrets) { + return ['secret' => $client->plainSecret] + $client->toArray(); + } + + return $client->makeVisible('secret'); } /**