User Federation: populate Kerberos required and cache settings data (#243)
* pull in kerberos data * fix build fails and cleanup msgs * fix 2x build errs * fix broken test * fix route, bcrumb, and card click * lint fixes * final changes from PR review * add old breadcrumb functionality back * fix breadcrumb test * lint fix
This commit is contained in:
parent
41062f88f4
commit
ff43970e9a
9 changed files with 122 additions and 38 deletions
|
@ -103,7 +103,7 @@ export const ClientScopeForm = () => {
|
||||||
>
|
>
|
||||||
<Tab
|
<Tab
|
||||||
eventKey={0}
|
eventKey={0}
|
||||||
title={<TabTitleText>{t("settings")}</TabTitleText>}
|
title={<TabTitleText>{t("common:settings")}</TabTitleText>}
|
||||||
>
|
>
|
||||||
<Form
|
<Form
|
||||||
isHorizontal
|
isHorizontal
|
||||||
|
|
|
@ -19,8 +19,6 @@
|
||||||
"deleteMappingConfirm": "Are you sure you want to delete this mapping?",
|
"deleteMappingConfirm": "Are you sure you want to delete this mapping?",
|
||||||
"mappingUpdatedSuccess": "Mapping successfully updated",
|
"mappingUpdatedSuccess": "Mapping successfully updated",
|
||||||
"mappingUpdatedError": "Could not update mapping: '{{error}}'",
|
"mappingUpdatedError": "Could not update mapping: '{{error}}'",
|
||||||
"mappingCreatedSuccess": "Mapping successfully created",
|
|
||||||
"mappingCreatedError": "Could not create mapping: '{{error}}'",
|
|
||||||
"realmRolePrefix": "Realm role prefix",
|
"realmRolePrefix": "Realm role prefix",
|
||||||
"multiValued": "Multivalued",
|
"multiValued": "Multivalued",
|
||||||
"tokenClaimName": "Token claim name",
|
"tokenClaimName": "Token claim name",
|
||||||
|
@ -33,7 +31,6 @@
|
||||||
"createError": "Could not create client scope: '{{error}}'",
|
"createError": "Could not create client scope: '{{error}}'",
|
||||||
"updateSuccess": "Client scope updated",
|
"updateSuccess": "Client scope updated",
|
||||||
"updateError": "Could not update client scope: '{{error}}'",
|
"updateError": "Could not update client scope: '{{error}}'",
|
||||||
"settings": "Settings",
|
|
||||||
"mappers": "Mappers",
|
"mappers": "Mappers",
|
||||||
"mappersSearchFor": "Search for mapper",
|
"mappersSearchFor": "Search for mapper",
|
||||||
"addMapper": "Add mapper",
|
"addMapper": "Add mapper",
|
||||||
|
|
|
@ -210,7 +210,7 @@ export const ClientDetails = () => {
|
||||||
>
|
>
|
||||||
<Tab
|
<Tab
|
||||||
eventKey={0}
|
eventKey={0}
|
||||||
title={<TabTitleText>{t("settings")}</TabTitleText>}
|
title={<TabTitleText>{t("common:settings")}</TabTitleText>}
|
||||||
>
|
>
|
||||||
<ClientSettings form={form} save={save} />
|
<ClientSettings form={form} save={save} />
|
||||||
</Tab>
|
</Tab>
|
||||||
|
|
|
@ -11,7 +11,6 @@
|
||||||
"name": "Name",
|
"name": "Name",
|
||||||
"formatOption": "Format option",
|
"formatOption": "Format option",
|
||||||
"downloadAdaptorTitle": "Download adaptor configs",
|
"downloadAdaptorTitle": "Download adaptor configs",
|
||||||
"settings": "Settings",
|
|
||||||
"credentials": "Credentials",
|
"credentials": "Credentials",
|
||||||
"clientScopes": "Client scopes",
|
"clientScopes": "Client scopes",
|
||||||
"addClientScope": "Add client scope",
|
"addClientScope": "Add client scope",
|
||||||
|
|
|
@ -52,6 +52,8 @@
|
||||||
"identityProviders": "Identity providers",
|
"identityProviders": "Identity providers",
|
||||||
"userFederation": "User federation",
|
"userFederation": "User federation",
|
||||||
|
|
||||||
|
"settings": "Settings",
|
||||||
|
|
||||||
"required": "Required field",
|
"required": "Required field",
|
||||||
"maxLength": "Max length {{length}}",
|
"maxLength": "Max length {{length}}",
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,7 @@ import {
|
||||||
FlexItem,
|
FlexItem,
|
||||||
} from "@patternfly/react-core";
|
} from "@patternfly/react-core";
|
||||||
import "./keycloak-card.css";
|
import "./keycloak-card.css";
|
||||||
|
import { useHistory } from "react-router-dom";
|
||||||
|
|
||||||
export type KeycloakCardProps = {
|
export type KeycloakCardProps = {
|
||||||
id: string;
|
id: string;
|
||||||
|
@ -26,6 +27,7 @@ export type KeycloakCardProps = {
|
||||||
};
|
};
|
||||||
|
|
||||||
export const KeycloakCard = ({
|
export const KeycloakCard = ({
|
||||||
|
id,
|
||||||
dropdownItems,
|
dropdownItems,
|
||||||
title,
|
title,
|
||||||
labelText,
|
labelText,
|
||||||
|
@ -33,12 +35,23 @@ export const KeycloakCard = ({
|
||||||
footerText,
|
footerText,
|
||||||
}: KeycloakCardProps) => {
|
}: KeycloakCardProps) => {
|
||||||
const [isDropdownOpen, setIsDropdownOpen] = useState(false);
|
const [isDropdownOpen, setIsDropdownOpen] = useState(false);
|
||||||
|
|
||||||
|
const history = useHistory();
|
||||||
|
|
||||||
const onDropdownToggle = () => {
|
const onDropdownToggle = () => {
|
||||||
setIsDropdownOpen(!isDropdownOpen);
|
setIsDropdownOpen(!isDropdownOpen);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const handleCardMenuClick = (e: any) => {
|
||||||
|
e.stopPropagation();
|
||||||
|
};
|
||||||
|
|
||||||
|
const openSettings = () => {
|
||||||
|
history.push(`/user-federation/${id}`);
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Card>
|
<Card isSelectable onClick={openSettings}>
|
||||||
<CardHeader>
|
<CardHeader>
|
||||||
<CardActions>
|
<CardActions>
|
||||||
{dropdownItems && (
|
{dropdownItems && (
|
||||||
|
@ -46,6 +59,7 @@ export const KeycloakCard = ({
|
||||||
isPlain
|
isPlain
|
||||||
position={"right"}
|
position={"right"}
|
||||||
toggle={<KebabToggle onToggle={onDropdownToggle} />}
|
toggle={<KebabToggle onToggle={onDropdownToggle} />}
|
||||||
|
onClick={(e) => handleCardMenuClick(e)}
|
||||||
isOpen={isDropdownOpen}
|
isOpen={isDropdownOpen}
|
||||||
dropdownItems={dropdownItems}
|
dropdownItems={dropdownItems}
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -20,6 +20,7 @@ import { UserFederationSection } from "./user-federation/UserFederationSection";
|
||||||
import { UsersSection } from "./user/UsersSection";
|
import { UsersSection } from "./user/UsersSection";
|
||||||
import { MappingDetails } from "./client-scopes/details/MappingDetails";
|
import { MappingDetails } from "./client-scopes/details/MappingDetails";
|
||||||
import { ClientDetails } from "./clients/ClientDetails";
|
import { ClientDetails } from "./clients/ClientDetails";
|
||||||
|
import { UserFederationKerberosSettings } from "./user-federation/UserFederationKerberosSettings";
|
||||||
import { RoleMappingForm } from "./client-scopes/add/RoleMappingForm";
|
import { RoleMappingForm } from "./client-scopes/add/RoleMappingForm";
|
||||||
|
|
||||||
export type RouteDef = {
|
export type RouteDef = {
|
||||||
|
@ -164,6 +165,12 @@ export const routes: RoutesFn = (t: TFunction) => [
|
||||||
breadcrumb: t("userFederation"),
|
breadcrumb: t("userFederation"),
|
||||||
access: "view-realm",
|
access: "view-realm",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: "/user-federation/:id",
|
||||||
|
component: UserFederationKerberosSettings,
|
||||||
|
breadcrumb: t("common:settings"),
|
||||||
|
access: "view-realm",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: "/",
|
path: "/",
|
||||||
component: ClientsSection,
|
component: ClientsSection,
|
||||||
|
|
|
@ -7,15 +7,63 @@ import {
|
||||||
} from "@patternfly/react-core";
|
} from "@patternfly/react-core";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { HelpItem } from "../components/help-enabler/HelpItem";
|
import { HelpItem } from "../components/help-enabler/HelpItem";
|
||||||
import React, { useState } from "react";
|
import React, { useEffect, useState } from "react";
|
||||||
import { useForm, Controller } from "react-hook-form";
|
import { useForm, Controller } from "react-hook-form";
|
||||||
|
import { convertToFormValues } from "../util";
|
||||||
import ComponentRepresentation from "keycloak-admin/lib/defs/componentRepresentation";
|
import ComponentRepresentation from "keycloak-admin/lib/defs/componentRepresentation";
|
||||||
import { FormAccess } from "../components/form-access/FormAccess";
|
import { FormAccess } from "../components/form-access/FormAccess";
|
||||||
|
import { useAdminClient } from "../context/auth/AdminClient";
|
||||||
|
import { useParams } from "react-router-dom";
|
||||||
|
|
||||||
export const KerberosSettingsCache = () => {
|
export const KerberosSettingsCache = () => {
|
||||||
const { t } = useTranslation("user-federation");
|
const { t } = useTranslation("user-federation");
|
||||||
const helpText = useTranslation("user-federation-help").t;
|
const helpText = useTranslation("user-federation-help").t;
|
||||||
|
|
||||||
|
const adminClient = useAdminClient();
|
||||||
|
const { register, control, setValue } = useForm<ComponentRepresentation>();
|
||||||
|
const { id } = useParams<{ id: string }>();
|
||||||
|
|
||||||
|
const convertToDays = (num: string) => {
|
||||||
|
switch (num) {
|
||||||
|
case "1":
|
||||||
|
return t("common:Sunday");
|
||||||
|
case "2":
|
||||||
|
return t("common:Monday");
|
||||||
|
case "3":
|
||||||
|
return t("common:Tuesday");
|
||||||
|
case "4":
|
||||||
|
return t("common:Wednesday");
|
||||||
|
case "5":
|
||||||
|
return t("common:Thursday");
|
||||||
|
case "6":
|
||||||
|
return t("common:Friday");
|
||||||
|
case "7":
|
||||||
|
return t("common:Saturday");
|
||||||
|
default:
|
||||||
|
return t("common:selectOne");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const setupForm = (component: ComponentRepresentation) => {
|
||||||
|
Object.entries(component).map((entry) => {
|
||||||
|
if (entry[0] === "config") {
|
||||||
|
convertToFormValues(entry[1], "config", setValue);
|
||||||
|
setValue("config.evictionDay", convertToDays(entry[1].evictionDay[0]));
|
||||||
|
} else {
|
||||||
|
setValue(entry[0], entry[1]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
(async () => {
|
||||||
|
const fetchedComponent = await adminClient.components.findOne({ id });
|
||||||
|
if (fetchedComponent) {
|
||||||
|
setupForm(fetchedComponent);
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
}, []);
|
||||||
|
|
||||||
const [isCachePolicyDropdownOpen, setIsCachePolicyDropdownOpen] = useState(
|
const [isCachePolicyDropdownOpen, setIsCachePolicyDropdownOpen] = useState(
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
@ -30,8 +78,6 @@ export const KerberosSettingsCache = () => {
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
const { control, register } = useForm<ComponentRepresentation>();
|
|
||||||
|
|
||||||
const hourOptions = [
|
const hourOptions = [
|
||||||
<SelectOption key={0} value={t("common:selectOne")} isPlaceholder />,
|
<SelectOption key={0} value={t("common:selectOne")} isPlaceholder />,
|
||||||
];
|
];
|
||||||
|
@ -62,7 +108,7 @@ export const KerberosSettingsCache = () => {
|
||||||
fieldId="kc-cache-policy"
|
fieldId="kc-cache-policy"
|
||||||
>
|
>
|
||||||
<Controller
|
<Controller
|
||||||
name="cachePolicy"
|
name="config.cachePolicy"
|
||||||
defaultValue=""
|
defaultValue=""
|
||||||
control={control}
|
control={control}
|
||||||
render={({ onChange, value }) => (
|
render={({ onChange, value }) => (
|
||||||
|
@ -85,14 +131,15 @@ export const KerberosSettingsCache = () => {
|
||||||
value={t("common:selectOne")}
|
value={t("common:selectOne")}
|
||||||
isPlaceholder
|
isPlaceholder
|
||||||
/>
|
/>
|
||||||
<SelectOption key={1} value="Default" />
|
<SelectOption key={1} value="DEFAULT" />
|
||||||
<SelectOption key={2} value="Something" />
|
<SelectOption key={2} value="EVICT_DAILY" />
|
||||||
|
<SelectOption key={3} value="EVICT_WEEKLY" />
|
||||||
|
<SelectOption key={4} value="MAX_LIFESPAN" />
|
||||||
|
<SelectOption key={5} value="NO_CACHE" />
|
||||||
</Select>
|
</Select>
|
||||||
)}
|
)}
|
||||||
></Controller>
|
></Controller>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
|
|
||||||
{/* TODO: Field shows only if cache policy is EVICT_WEEKLY */}
|
|
||||||
<FormGroup
|
<FormGroup
|
||||||
label={t("evictionDay")}
|
label={t("evictionDay")}
|
||||||
labelIcon={
|
labelIcon={
|
||||||
|
@ -105,7 +152,7 @@ export const KerberosSettingsCache = () => {
|
||||||
fieldId="kc-eviction-day"
|
fieldId="kc-eviction-day"
|
||||||
>
|
>
|
||||||
<Controller
|
<Controller
|
||||||
name="evictionDay"
|
name="config.evictionDay"
|
||||||
defaultValue=""
|
defaultValue=""
|
||||||
control={control}
|
control={control}
|
||||||
render={({ onChange, value }) => (
|
render={({ onChange, value }) => (
|
||||||
|
@ -139,8 +186,6 @@ export const KerberosSettingsCache = () => {
|
||||||
)}
|
)}
|
||||||
></Controller>
|
></Controller>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
|
|
||||||
{/* TODO: Field shows only if cache policy is EVICT_WEEKLY or EVICT_DAILY */}
|
|
||||||
{/* TODO: Investigate whether this should be a number field instead of a dropdown/text field */}
|
{/* TODO: Investigate whether this should be a number field instead of a dropdown/text field */}
|
||||||
<FormGroup
|
<FormGroup
|
||||||
label={t("evictionHour")}
|
label={t("evictionHour")}
|
||||||
|
@ -154,7 +199,7 @@ export const KerberosSettingsCache = () => {
|
||||||
fieldId="kc-eviction-hour"
|
fieldId="kc-eviction-hour"
|
||||||
>
|
>
|
||||||
<Controller
|
<Controller
|
||||||
name="evictionHour"
|
name="config.evictionHour"
|
||||||
defaultValue=""
|
defaultValue=""
|
||||||
control={control}
|
control={control}
|
||||||
render={({ onChange, value }) => (
|
render={({ onChange, value }) => (
|
||||||
|
@ -176,8 +221,6 @@ export const KerberosSettingsCache = () => {
|
||||||
)}
|
)}
|
||||||
></Controller>
|
></Controller>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
|
|
||||||
{/* TODO: Field shows only if cache policy is EVICT_WEEKLY or EVICT_DAILY */}
|
|
||||||
{/* TODO: Investigate whether this should be a number field instead of a dropdown/text field */}
|
{/* TODO: Investigate whether this should be a number field instead of a dropdown/text field */}
|
||||||
<FormGroup
|
<FormGroup
|
||||||
label={t("evictionMinute")}
|
label={t("evictionMinute")}
|
||||||
|
@ -191,7 +234,7 @@ export const KerberosSettingsCache = () => {
|
||||||
fieldId="kc-eviction-minute"
|
fieldId="kc-eviction-minute"
|
||||||
>
|
>
|
||||||
<Controller
|
<Controller
|
||||||
name="evictionMinute"
|
name="config.evictionMinute"
|
||||||
defaultValue=""
|
defaultValue=""
|
||||||
control={control}
|
control={control}
|
||||||
render={({ onChange, value }) => (
|
render={({ onChange, value }) => (
|
||||||
|
@ -213,8 +256,6 @@ export const KerberosSettingsCache = () => {
|
||||||
)}
|
)}
|
||||||
></Controller>
|
></Controller>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
|
|
||||||
{/* TODO: Field shows only if cache policy is MAX_LIFESPAN */}
|
|
||||||
<FormGroup
|
<FormGroup
|
||||||
label={t("maxLifespan")}
|
label={t("maxLifespan")}
|
||||||
labelIcon={
|
labelIcon={
|
||||||
|
@ -230,7 +271,7 @@ export const KerberosSettingsCache = () => {
|
||||||
isRequired
|
isRequired
|
||||||
type="text"
|
type="text"
|
||||||
id="kc-max-lifespan"
|
id="kc-max-lifespan"
|
||||||
name="maxLifespan"
|
name="config.maxLifespan"
|
||||||
ref={register}
|
ref={register}
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import React, { useEffect, useState } from "react";
|
||||||
import {
|
import {
|
||||||
FormGroup,
|
FormGroup,
|
||||||
Select,
|
Select,
|
||||||
|
@ -8,17 +9,39 @@ import {
|
||||||
} from "@patternfly/react-core";
|
} from "@patternfly/react-core";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { HelpItem } from "../components/help-enabler/HelpItem";
|
import { HelpItem } from "../components/help-enabler/HelpItem";
|
||||||
import React, { useState } from "react";
|
|
||||||
import { useForm, Controller } from "react-hook-form";
|
import { useForm, Controller } from "react-hook-form";
|
||||||
import ComponentRepresentation from "keycloak-admin/lib/defs/componentRepresentation";
|
import ComponentRepresentation from "keycloak-admin/lib/defs/componentRepresentation";
|
||||||
import { FormAccess } from "../components/form-access/FormAccess";
|
import { FormAccess } from "../components/form-access/FormAccess";
|
||||||
|
import { useAdminClient } from "../context/auth/AdminClient";
|
||||||
|
import { useParams } from "react-router-dom";
|
||||||
|
import { convertToFormValues } from "../util";
|
||||||
|
|
||||||
export const KerberosSettingsRequired = () => {
|
export const KerberosSettingsRequired = () => {
|
||||||
const { t } = useTranslation("user-federation");
|
const { t } = useTranslation("user-federation");
|
||||||
const helpText = useTranslation("user-federation-help").t;
|
const helpText = useTranslation("user-federation-help").t;
|
||||||
|
const adminClient = useAdminClient();
|
||||||
const [isEditModeDropdownOpen, setIsEditModeDropdownOpen] = useState(false);
|
const [isEditModeDropdownOpen, setIsEditModeDropdownOpen] = useState(false);
|
||||||
const { register, control } = useForm<ComponentRepresentation>();
|
const { register, control, setValue } = useForm<ComponentRepresentation>();
|
||||||
|
const { id } = useParams<{ id: string }>();
|
||||||
|
|
||||||
|
const setupForm = (component: ComponentRepresentation) => {
|
||||||
|
Object.entries(component).map((entry) => {
|
||||||
|
if (entry[0] === "config") {
|
||||||
|
convertToFormValues(entry[1], "config", setValue);
|
||||||
|
} else {
|
||||||
|
setValue(entry[0], entry[1]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
(async () => {
|
||||||
|
const fetchedComponent = await adminClient.components.findOne({ id });
|
||||||
|
if (fetchedComponent) {
|
||||||
|
setupForm(fetchedComponent);
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
}, []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
@ -40,7 +63,7 @@ export const KerberosSettingsRequired = () => {
|
||||||
isRequired
|
isRequired
|
||||||
type="text"
|
type="text"
|
||||||
id="kc-console-display-name"
|
id="kc-console-display-name"
|
||||||
name="consoleDisplayName"
|
name="name"
|
||||||
ref={register}
|
ref={register}
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
|
@ -61,7 +84,7 @@ export const KerberosSettingsRequired = () => {
|
||||||
isRequired
|
isRequired
|
||||||
type="text"
|
type="text"
|
||||||
id="kc-kerberos-realm"
|
id="kc-kerberos-realm"
|
||||||
name="kerberosRealm"
|
name="config.kerberosRealm"
|
||||||
ref={register}
|
ref={register}
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
|
@ -82,7 +105,7 @@ export const KerberosSettingsRequired = () => {
|
||||||
isRequired
|
isRequired
|
||||||
type="text"
|
type="text"
|
||||||
id="kc-server-principal"
|
id="kc-server-principal"
|
||||||
name="serverPrincipal"
|
name="config.serverPrincipal"
|
||||||
ref={register}
|
ref={register}
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
|
@ -103,7 +126,7 @@ export const KerberosSettingsRequired = () => {
|
||||||
isRequired
|
isRequired
|
||||||
type="text"
|
type="text"
|
||||||
id="kc-key-tab"
|
id="kc-key-tab"
|
||||||
name="keyTab"
|
name="config.keyTab"
|
||||||
ref={register}
|
ref={register}
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
|
@ -122,7 +145,7 @@ export const KerberosSettingsRequired = () => {
|
||||||
>
|
>
|
||||||
{" "}
|
{" "}
|
||||||
<Controller
|
<Controller
|
||||||
name="debug"
|
name="config.debug"
|
||||||
defaultValue={false}
|
defaultValue={false}
|
||||||
control={control}
|
control={control}
|
||||||
render={({ onChange, value }) => (
|
render={({ onChange, value }) => (
|
||||||
|
@ -151,7 +174,7 @@ export const KerberosSettingsRequired = () => {
|
||||||
hasNoPaddingTop
|
hasNoPaddingTop
|
||||||
>
|
>
|
||||||
<Controller
|
<Controller
|
||||||
name="allowPasswordAuthentication"
|
name="config.allowPasswordAuthentication"
|
||||||
defaultValue={false}
|
defaultValue={false}
|
||||||
control={control}
|
control={control}
|
||||||
render={({ onChange, value }) => (
|
render={({ onChange, value }) => (
|
||||||
|
@ -181,8 +204,8 @@ export const KerberosSettingsRequired = () => {
|
||||||
>
|
>
|
||||||
{" "}
|
{" "}
|
||||||
<Controller
|
<Controller
|
||||||
name="editMode"
|
name="config.editMode"
|
||||||
defaultValue=""
|
defaultValue={t("common:selectOne")}
|
||||||
control={control}
|
control={control}
|
||||||
render={({ onChange, value }) => (
|
render={({ onChange, value }) => (
|
||||||
<Select
|
<Select
|
||||||
|
@ -204,7 +227,8 @@ export const KerberosSettingsRequired = () => {
|
||||||
value={t("common:selectOne")}
|
value={t("common:selectOne")}
|
||||||
isPlaceholder
|
isPlaceholder
|
||||||
/>
|
/>
|
||||||
<SelectOption key={1} value="UNSYNCED" />
|
<SelectOption key={1} value="READ_ONLY" />
|
||||||
|
<SelectOption key={2} value="UNSYNCED" />
|
||||||
</Select>
|
</Select>
|
||||||
)}
|
)}
|
||||||
></Controller>
|
></Controller>
|
||||||
|
@ -223,7 +247,7 @@ export const KerberosSettingsRequired = () => {
|
||||||
hasNoPaddingTop
|
hasNoPaddingTop
|
||||||
>
|
>
|
||||||
<Controller
|
<Controller
|
||||||
name="updateFirstLogin"
|
name="config.updateProfileFirstLogin"
|
||||||
defaultValue={false}
|
defaultValue={false}
|
||||||
control={control}
|
control={control}
|
||||||
render={({ onChange, value }) => (
|
render={({ onChange, value }) => (
|
||||||
|
|
Loading…
Reference in a new issue