Skip to content

refactor: Use Formik and Yup for the profile create form - #196

Merged
gianlucam76 merged 2 commits into
projectsveltos:mainfrom
gianlucam76:fix-bug-191
Oct 16, 2026
Merged

gianlucam76 merged 2 commits into
projectsveltos:mainfrom
gianlucam76:fix-bug-191

Conversation

@gianlucam76

Copy link
Copy Markdown
Member

Replace the 21 useState calls in ProfileForm with a single Formik state object and move validation into a Yup schema with per content type rules. The schema and the request builder live in profileFormSchema.ts and are covered by vitest unit tests.

Validation mirrors ui-backend and the addon-controller CRD: required fields per content type, tier as an int32 of at least 1, chartName and chartVersion for remote Helm repositories, a non-blank YAML body, the remoteURL scheme, a Go duration interval and a complete secretRef.

Replace the 21 useState calls in ProfileForm with a single Formik state
object and move validation into a Yup schema with per content type rules.
The schema and the request builder live in profileFormSchema.ts and are
covered by vitest unit tests.

Validation mirrors ui-backend and the addon-controller CRD: required
fields per content type, tier as an int32 of at least 1, chartName and
chartVersion for remote Helm repositories, a non-blank YAML body, the
remoteURL scheme, a Go duration interval and a complete secretRef.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@gianlucam76
gianlucam76 requested a review from Safouene1 October 7, 2026 07:19
Starting the sign-in fetches the provider's discovery document. When that
fails, because the provider cannot be reached from the browser or its TLS
certificate is not trusted, signinRedirect rejects and the button did
nothing: the rejection was never caught, so the page showed no sign that
anything had gone wrong.

The button now catches it and shows which provider it tried and the
browser's error, with a hint to check that the provider is reachable and
its certificate trusted. The error is also logged to the console.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
gianlucam76 added a commit that referenced this pull request Oct 8, 2026
With auth.oidc.tokenType set to id_token, the dashboard stores the ID token
of every silent renewal. When the provider returns no ID token on a refresh,
oidc-client-ts keeps the previous one. Once that one has expired, storing it
makes every request fail with a 401 until the user signs in again by hand.

When a renewed ID token has already expired, clear the stored token, remove
the OIDC user (which stops further renewals) and go to the login page, which
now shows "Your session has expired, please login again".

The default access_token mode is not affected. A token whose expiry cannot be
read (not a JWT, no exp claim) is stored as before.

The unit tests of the expiry check use vitest, which main gets with the
profile form change (#196).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@gianlucam76
gianlucam76 merged commit 4327eba into projectsveltos:main Oct 16, 2026
1 check passed
@gianlucam76
gianlucam76 deleted the fix-bug-191 branch October 16, 2026 06:19
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.

1 participant