$data->name, 'type' => $data->type, ]); try { DB::beginTransaction(); $logo = $this->logoUploader->store($data->logo); $appData = $this->connectedAppService->create( new ConnectAppRequest( name: $data->name, connectionProtocolId: ConnectionProtocol::query()->where('name', ConnectionProtocolEnum::OIDC->value)->first()->id, connectionProviderId: 0, slug: Str::slug($data->name), connectionStatusId: ConnectionStatus::query()->where('name', ConnectionStatusEnum::Connected->value)->first()->id, settings: [ 'access_url' => $data->accessUrl, ], logo: $logo, ) ); $clientData = $this->clientCreationFactory->for($data->type)->create($data); DB::commit(); // remove sensitive data $appData->settings = null; Log::info('OIDC app created', [ 'name' => $data->name, 'type' => $data->type, 'clientId' => isset($clientData->clientId), 'clientSecret' => isset($clientData->clientSecret), ]); return new CreatedApplicationData( application: $appData, clientCredentials: $clientData, ); } catch (Throwable $e) { DB::rollBack(); Log::error('Failed to create OIDC app', [ 'name' => $data->name, 'type' => $data->type, ]); throw $e; } } }