diff --git a/app/Livewire/Source/Gitlab/Change.php b/app/Livewire/Source/Gitlab/Change.php index 2e36a1e1f..5a386b429 100644 --- a/app/Livewire/Source/Gitlab/Change.php +++ b/app/Livewire/Source/Gitlab/Change.php @@ -173,7 +173,9 @@ class Change extends Component $this->customUser = $this->gitlab_app->custom_user; $this->customPort = $this->gitlab_app->custom_port; $this->clientId = $this->gitlab_app->client_id; - $this->clientSecretInput = null; + // Decrypt and surface for authorized editors (same pattern as GitHub App client_secret). + $this->gitlab_app->makeVisible(['client_secret', 'webhook_token', 'access_token', 'refresh_token']); + $this->clientSecretInput = $this->gitlab_app->client_secret; $this->webhookToken = $this->gitlab_app->webhook_token; $this->groupName = $this->gitlab_app->group_name; $this->isSystemWide = $this->gitlab_app->is_system_wide; diff --git a/resources/views/livewire/source/gitlab/change.blade.php b/resources/views/livewire/source/gitlab/change.blade.php index caedc88de..5cb859ec5 100644 --- a/resources/views/livewire/source/gitlab/change.blade.php +++ b/resources/views/livewire/source/gitlab/change.blade.php @@ -46,7 +46,8 @@

OAuth Credentials

- + @@ -171,8 +172,9 @@ - + diff --git a/tests/Feature/GitlabSourceChangeViewTest.php b/tests/Feature/GitlabSourceChangeViewTest.php index 60f8f0d96..a5e43a1cc 100644 --- a/tests/Feature/GitlabSourceChangeViewTest.php +++ b/tests/Feature/GitlabSourceChangeViewTest.php @@ -56,4 +56,21 @@ describe('GitLab source setup view', function () { ->set('htmlUrl', 'https://gitlab.example.com') ->assertSet('apiUrl', 'https://gitlab.example.com/api/v4'); }); + + test('saves and reloads the application secret after refresh', function () { + Livewire::withQueryParams(['gitlab_app_uuid' => $this->gitlabApp->uuid]) + ->test(Change::class) + ->set('clientId', 'gitlab-app-id') + ->set('clientSecretInput', 'super-secret-value') + ->call('submit') + ->assertDispatched('success'); + + $this->gitlabApp->refresh()->makeVisible(['client_secret']); + expect($this->gitlabApp->client_secret)->toBe('super-secret-value'); + + Livewire::withQueryParams(['gitlab_app_uuid' => $this->gitlabApp->uuid]) + ->test(Change::class) + ->assertSet('clientId', 'gitlab-app-id') + ->assertSet('clientSecretInput', 'super-secret-value'); + }); });