oidcService = $oidcService; $this->configResolver = $configResolver; } public function mount(int $id): void { $this->authorize(AppPermissionEnum::Read->value); $this->appId = $id; $this->loadAppData(); } public function loadAppData(): void { $this->app = ConnectedApp::with(['protocol', 'status', 'roles'])->findOrFail($this->appId); $this->passportClient = $this->oidcService->getPassportClient($this->app); $this->signOutUris = $this->oidcService->getSignOutUris($this->app); } public function generateNewSecret(): void { $this->authorize(AppPermissionEnum::Update->value); if (!$this->passportClient) { $this->error('No corresponding Passport Client found to update.'); return; } $this->attempt( action: function () { $plainSecret = $this->oidcService->generateNewSecret($this->passportClient); $this->newSecretPlain = $plainSecret; $this->success('A new client secret has been generated! Make sure to copy it now.'); $this->loadAppData(); }, successMessage: 'New client secret generated successfully!', showSuccess: false ); } public function toggleStatus(): void { $this->authorize(AppPermissionEnum::Update->value); $this->attempt( action: function () { $this->oidcService->toggleStatus($this->app); $this->loadAppData(); }, successMessage: 'Application status updated successfully!' ); } public function goBack(): void { $this->redirectRoute('apps.index', navigate: true); } public function editApp(): void { $this->redirectRoute('apps.edit', ['id' => $this->appId], navigate: true); } public function requiresPkce(Client $client) { return $this->configResolver->requiresPkce($client); } }; ?>

{{ $app->name }}

Protocol: {{ strtoupper($app->protocol->name) }}

@if($newSecretPlain)
@endif @if(!$passportClient) @endif

Client Credentials

Client ID
@if($passportClient) @endif
Public identifier for the client that is required for all OAuth flows.
Client Authentication
Proof Key for Code Exchange (PKCE)

Client Secrets

@if($passportClient) @endif
@if($passportClient) @else @endif
Creation date Secret Status
{{ $passportClient->updated_at?->format('M j, Y H:i:s') ?? 'N/A' }} •••••••••••••••••••••••••••••••••••••••• {{ !$passportClient->revoked ? 'Active' : 'Revoked' }}
No secrets available

Sign In Redirect URIs

@if(!empty($passportClient?->redirect_uris)) @foreach($passportClient->redirect_uris as $uri)
{{ $uri }}
@endforeach @else No Sign In Redirect URIs configured @endif

Sign Out Redirect URIs

@if(!empty($signOutUris)) @foreach($signOutUris as $uri)
{{ $uri }}
@endforeach @else No Sign Out Redirect URIs configured @endif

Assigned Roles

@forelse($app->roles as $role) @empty @endforelse
Role Name Priority Access Type
{{ $role->name }} {{ $role->priority }} SSO Access
No specific roles assigned. Accessible by everyone depending on user access setting.

Granted OAuth/OIDC Scopes

openid

Allows the application to fetch ID tokens for authenticating users.

profile

Allows reading default profile fields like name, picture, and locale.

email

Grants access to the user's primary email address.

offline_access

Allows requesting refresh tokens to maintain access offline.