From 3b7b175b70a40958808264621d6777835bd56c16 Mon Sep 17 00:00:00 2001 From: Ankit Ranjan Date: Mon, 8 Jun 2026 22:52:21 +0530 Subject: [PATCH] feat: add required field support to InputField and update UI components to respect optionality --- src/authsome/auth/input_provider.py | 1 + src/authsome/auth/utils.py | 10 +++++++++- ui/src/components/authsome-dashboard.tsx | 2 +- ui/src/lib/authsome-api.ts | 1 + 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/authsome/auth/input_provider.py b/src/authsome/auth/input_provider.py index 2a1013b4..9967b312 100644 --- a/src/authsome/auth/input_provider.py +++ b/src/authsome/auth/input_provider.py @@ -10,6 +10,7 @@ class InputField(BaseModel): label: str secret: bool = True default: str | None = None + required: bool = True #: Optional regex (``re.fullmatch``) that the submitted value must satisfy. pattern: str | None = None #: Optional human-readable message shown when the value does not match ``pattern``. diff --git a/src/authsome/auth/utils.py b/src/authsome/auth/utils.py index 0cf51a75..7c0164a2 100644 --- a/src/authsome/auth/utils.py +++ b/src/authsome/auth/utils.py @@ -145,7 +145,15 @@ def required_inputs( # noqa: PLR0913 needs_scopes = flow_type in (FlowType.PKCE, FlowType.DEVICE_CODE, FlowType.DCR_PKCE) if needs_scopes and scopes is None and persisted_scopes is None: default_scopes = ",".join(provider.oauth.scopes) if provider.oauth and provider.oauth.scopes else "" - fields.append(InputField(name="scopes", label="Scopes (comma-separated)", secret=False, default=default_scopes)) + fields.append( + InputField( + name="scopes", + label="Scopes (comma-separated)", + secret=False, + default=default_scopes, + required=False, + ) + ) if flow_type == FlowType.API_KEY: api_key_field = InputField(name="api_key", label="API Key", secret=True) diff --git a/ui/src/components/authsome-dashboard.tsx b/ui/src/components/authsome-dashboard.tsx index 3c1bd764..b432ebde 100644 --- a/ui/src/components/authsome-dashboard.tsx +++ b/ui/src/components/authsome-dashboard.tsx @@ -399,7 +399,7 @@ function SessionInputFieldControl({ field }: { field: SessionInputField }) { defaultValue={field.default || ""} name={field.name} pattern={field.pattern || undefined} - required + required={field.required !== false} type={field.secret ? "password" : "text"} /> {field.pattern_hint ? ( diff --git a/ui/src/lib/authsome-api.ts b/ui/src/lib/authsome-api.ts index 798c6b82..a99fac14 100644 --- a/ui/src/lib/authsome-api.ts +++ b/ui/src/lib/authsome-api.ts @@ -137,6 +137,7 @@ export type SessionInputField = { label: string; secret: boolean; default?: string | null; + required?: boolean; pattern?: string | null; pattern_hint?: string | null; };