Skip to content

Provide admin portal#171

Merged
hartman merged 143 commits into
developfrom
develop-admin-portal
May 26, 2026
Merged

Provide admin portal#171
hartman merged 143 commits into
developfrom
develop-admin-portal

Conversation

@hartman

@hartman hartman commented May 18, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

JDDV and others added 30 commits April 17, 2026 13:30
…rypt guard, register AllTables

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Resolved conflict: moved oidcSettingsRoutes to new api/admin/routes package
and registered it in AdminRoutes alongside blobStorageRepositoryRoutes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Backend: V13 singleton tabel voor DMF-instellingen (trigger/chunk grootte,
  validatie), V14 tabel voor ZGW API-koppelingsprofielen, V15 rename
  application_settings → dmf_settings; bijbehorende entities, models en CRUD routes
- Frontend: /instellingen/dmf pagina met formulier voor DMF-systeeminstellingen;
  /instellingen/zgw-api pagina met TanStack Table, checkbox-selectie, bulk-delete
  met bevestigingsdialoog, rij-actieknop met Details/Verwijderen en drawer voor
  toevoegen/bewerken
* feat(oidc): add oidc_settings table migration (V12)

* feat(oidc): add OidcSettingsEntity (Exposed ORM)

* feat(oidc): add OidcSettingsResponse and UpdateOidcSettingsRequest models

* feat(oidc): add AES-256-GCM crypto utility for client secret

* Changed UI authentication and added menu items

* fix(oidc): use envOrThrow for secret key, singleton SecureRandom, decrypt guard, register AllTables

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(oidc): add GET/PUT /admin/oidc-settings route handler

* fix(oidc): set updatedAt on insert, use wildcard ktor imports

* feat(oidc): register oidcSettingsRoutes in admin block

* fix(oidc): refresh token before fetch, use cn() for class merging

* Updated redirect url when logging out, updated settings model to be single lined

* fix navigation and clean up routing data

* remove superpowers plans

* Corresponding Undo migration U12 for OidcSettings

* rename U12, add extra _

* docs: add OIDC secret reveal design spec

* docs: add OIDC secret reveal implementation plan

* Show secret after eye icon pressing, update UI

* Added in dashboard components, made multiple provider selection screen

* Ran spotlessAply

* Rename V12 migration to V13, same for Undo action
* feat(oidc): add oidc_settings table migration (V12)

* feat(oidc): add OidcSettingsEntity (Exposed ORM)

* feat(oidc): add OidcSettingsResponse and UpdateOidcSettingsRequest models

* feat(oidc): add AES-256-GCM crypto utility for client secret

* Changed UI authentication and added menu items

* fix(oidc): use envOrThrow for secret key, singleton SecureRandom, decrypt guard, register AllTables

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(oidc): add GET/PUT /admin/oidc-settings route handler

* fix(oidc): set updatedAt on insert, use wildcard ktor imports

* feat(oidc): register oidcSettingsRoutes in admin block

* fix(oidc): refresh token before fetch, use cn() for class merging

* Updated redirect url when logging out, updated settings model to be single lined

* fix navigation and clean up routing data

* remove superpowers plans

* Corresponding Undo migration U12 for OidcSettings

* rename U12, add extra _

* docs: add OIDC secret reveal design spec

* docs: add OIDC secret reveal implementation plan

* Show secret after eye icon pressing, update UI

* Added in dashboard components, made multiple provider selection screen

* feat(db): add V13 application_settings migration

* feat(db): add U13 undo script for application_settings

* feat(entities): add ApplicationSetting entity and register in AllTables

* feat(models): add ApplicationSetting request/response models

* docs(models): add KDoc to CreateApplicationSettingRequest.clientSecret

* test(application-settings): add failing route tests

* test(application-settings): remove unused import, add missing-fields test

* feat(api): add application-settings CRUD and rotate-secret routes

* refactor(api): use shared SecureRandom instance, fix route registration order

* feat(ui): add shadcn Dialog component

* feat(frontend): add applicatie-instellingen page with CRUD and secret rotation

* fix(frontend): use consistent onOpenChange pattern for rotation Dialog

* feat(nav): add Applicatie instellingen to sidebar navigation

* feat(api,frontend): expose decrypted clientSecret in response, pre-fill edit form

* fix(frontend): update clientSecret in local state after secret rotation

* Remove superpowers plan, updated dialog

* Ran spotlessAply

* Ran spotlessApply

* Rename V12 migration to V13, same for Undo action

* Updated renaming V13 and U13 to V14 and U14

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Laurens Jan <laurensjanvanheek@gmail.com>
* feat(oidc): add oidc_settings table migration (V12)

* feat(oidc): add OidcSettingsEntity (Exposed ORM)

* feat(oidc): add OidcSettingsResponse and UpdateOidcSettingsRequest models

* feat(oidc): add AES-256-GCM crypto utility for client secret

* Changed UI authentication and added menu items

* fix(oidc): use envOrThrow for secret key, singleton SecureRandom, decrypt guard, register AllTables

* feat(oidc): add GET/PUT /admin/oidc-settings route handler

* fix(oidc): set updatedAt on insert, use wildcard ktor imports

* feat(oidc): register oidcSettingsRoutes in admin block

* fix(oidc): refresh token before fetch, use cn() for class merging

* Updated redirect url when logging out, updated settings model to be single lined

* fix navigation and clean up routing data

* remove superpowers plans

* Corresponding Undo migration U12 for OidcSettings

* rename U12, add extra _

* docs: add OIDC secret reveal design spec

* docs: add OIDC secret reveal implementation plan

* Show secret after eye icon pressing, update UI

* Added in dashboard components, made multiple provider selection screen

* Ran spotlessAply

* Rename V12 migration to V13, same for Undo action

* Repositories blob storage settings

* Updated migration naming
# Conflicts:
#	frontend/admin-portal/app/instellingen/zgw-api/page.tsx
#	frontend/admin-portal/components/site-header.tsx
#	frontend/admin-portal/lib/navigation.tsx
#	src/main/kotlin/api/admin/AdminRoutes.kt
#	src/main/kotlin/api/admin/routes/OidcProvidersRoutes.kt
#	src/main/kotlin/tooling/AllTables.kt
- Remove keycloak.token from useEffect deps to prevent infinite fetch loops
- Add dedicated deleteError state shown inside AlertDialog (was using shared page error)
- Add Zod validation to AppForm in applicaties with per-field errors
- Replace native radio inputs with shadcn RadioGroup in rotate dialog
- Add RadioGroup component using radix-ui primitive
- Replace hardcoded text-green-600 with text-primary in dmf save feedback
Remove shared settings-loading.tsx and inline skeletons directly into
each route's loading.tsx. Add error.tsx boundaries for all five settings
routes. Pages now import Loading from their sibling file instead of the
shared component.
hartman and others added 13 commits May 20, 2026 16:17
Add dmf-dashboard to realm-export
- Migrate data if possible
- Move disableChecksums and disableChunkedEncoding to extraProperties
- Free up the /admin route in favor of /settings
- Access keys etc are no longer obfuscated in the response
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add PatchBlobStorageRepositorySettingsRequest with all fields optional
- Add PATCH /{id} handler (partial update, mirrors old admin route behaviour)
- Remove require() guard from setDefaultProvider so it works even when the
  provider is not yet in the in-memory registry
- Fix Bruno integration test to check accessKey/secretKey directly

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- syncRegistrarForEntity: builds BlobStorageRepoConfig from entity and
  calls updateProvider or unregisterProvider
- respondWithUpdateResult: handles the null/conflict/success dispatch
  and writes the HTTP response

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 179 out of 184 changed files in this pull request and generated 26 comments.

Comment thread src/main/kotlin/api/settings/routes/DmfSettingsRoutes.kt Outdated
Comment thread src/main/kotlin/api/settings/routes/DmfSettingsRoutes.kt Outdated
Comment thread src/main/kotlin/api/settings/routes/ApplicationSettingsRoutes.kt
Comment thread src/main/kotlin/api/models/settings/ApplicationSettingModels.kt
Comment thread frontend/admin-portal/components/nav-user.tsx
Comment thread src/main/resources/db/migration/V18__Oidc_providers_settings.sql
Comment thread src/main/resources/db/migration/V19__Application_settings.sql
Comment thread src/main/resources/db/migration/V22__Zgw_api_settings.sql
@hartman
hartman merged commit 5c9a7aa into develop May 26, 2026
8 checks passed
github-actions Bot added a commit that referenced this pull request Jun 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants