restructure and add chooser when adding new
This commit is contained in:
parent
9e5104b668
commit
56a1b233d4
13 changed files with 1161 additions and 1118 deletions
|
@ -226,6 +226,12 @@ export const routes: RoutesFn = (t: TFunction) => [
|
||||||
breadcrumb: null,
|
breadcrumb: null,
|
||||||
access: "view-realm",
|
access: "view-realm",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: "/:realm/user-federation/ldap/new",
|
||||||
|
component: UserFederationLdapSettings,
|
||||||
|
breadcrumb: t("common:settings"),
|
||||||
|
access: "view-realm",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: "/:realm/user-federation/ldap/:id/:tab?",
|
path: "/:realm/user-federation/ldap/:id/:tab?",
|
||||||
component: UserFederationLdapSettings,
|
component: UserFederationLdapSettings,
|
||||||
|
@ -238,12 +244,6 @@ export const routes: RoutesFn = (t: TFunction) => [
|
||||||
breadcrumb: t("common:mappingDetails"),
|
breadcrumb: t("common:mappingDetails"),
|
||||||
access: "view-realm",
|
access: "view-realm",
|
||||||
},
|
},
|
||||||
{
|
|
||||||
path: "/:realm/user-federation/ldap/new",
|
|
||||||
component: UserFederationLdapSettings,
|
|
||||||
breadcrumb: t("common:settings"),
|
|
||||||
access: "view-realm",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
path: "/:realm/",
|
path: "/:realm/",
|
||||||
component: DashboardSection,
|
component: DashboardSection,
|
||||||
|
|
|
@ -2,9 +2,7 @@ import { FormGroup, Switch, TextInput } from "@patternfly/react-core";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { HelpItem } from "../../../components/help-enabler/HelpItem";
|
import { HelpItem } from "../../../components/help-enabler/HelpItem";
|
||||||
import { Controller, UseFormMethods } from "react-hook-form";
|
import { Controller, UseFormMethods } from "react-hook-form";
|
||||||
import { FormAccess } from "../../../components/form-access/FormAccess";
|
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { LdapMapperGeneral } from "./shared/LdapMapperGeneral";
|
|
||||||
|
|
||||||
export type LdapMapperFullNameAttributeProps = {
|
export type LdapMapperFullNameAttributeProps = {
|
||||||
form: UseFormMethods;
|
form: UseFormMethods;
|
||||||
|
@ -18,87 +16,83 @@ export const LdapMapperFullNameAttribute = ({
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<FormAccess role="manage-realm" isHorizontal>
|
<FormGroup
|
||||||
<LdapMapperGeneral form={form} />
|
label={t("ldapFullNameAttribute")}
|
||||||
|
labelIcon={
|
||||||
<FormGroup
|
<HelpItem
|
||||||
label={t("ldapFullNameAttribute")}
|
helpText={helpText("ldapFullNameAttributeHelp")}
|
||||||
labelIcon={
|
forLabel={t("ldapFullNameAttribute")}
|
||||||
<HelpItem
|
forID="kc-full-name-attribute"
|
||||||
helpText={helpText("ldapFullNameAttributeHelp")}
|
|
||||||
forLabel={t("ldapFullNameAttribute")}
|
|
||||||
forID="kc-full-name-attribute"
|
|
||||||
/>
|
|
||||||
}
|
|
||||||
fieldId="kc-full-name-attribute"
|
|
||||||
isRequired
|
|
||||||
>
|
|
||||||
<TextInput
|
|
||||||
isRequired
|
|
||||||
type="text"
|
|
||||||
id="kc-full-name-attribute"
|
|
||||||
data-testid="full-name-attribute"
|
|
||||||
name="config.ldap-full-name-attribute"
|
|
||||||
ref={form.register}
|
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
}
|
||||||
<FormGroup
|
fieldId="kc-full-name-attribute"
|
||||||
label={t("readOnly")}
|
isRequired
|
||||||
labelIcon={
|
>
|
||||||
<HelpItem
|
<TextInput
|
||||||
helpText={helpText("readOnlyHelp")}
|
isRequired
|
||||||
forLabel={t("readOnly")}
|
type="text"
|
||||||
forID="kc-read-only"
|
id="kc-full-name-attribute"
|
||||||
|
data-testid="full-name-attribute"
|
||||||
|
name="config.ldap-full-name-attribute"
|
||||||
|
ref={form.register}
|
||||||
|
/>
|
||||||
|
</FormGroup>
|
||||||
|
<FormGroup
|
||||||
|
label={t("readOnly")}
|
||||||
|
labelIcon={
|
||||||
|
<HelpItem
|
||||||
|
helpText={helpText("readOnlyHelp")}
|
||||||
|
forLabel={t("readOnly")}
|
||||||
|
forID="kc-read-only"
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
fieldId="kc-read-only"
|
||||||
|
hasNoPaddingTop
|
||||||
|
>
|
||||||
|
<Controller
|
||||||
|
name="config.read-only"
|
||||||
|
defaultValue={["false"]}
|
||||||
|
control={form.control}
|
||||||
|
render={({ onChange, value }) => (
|
||||||
|
<Switch
|
||||||
|
id={"kc-read-only"}
|
||||||
|
isDisabled={false}
|
||||||
|
onChange={(value) => onChange([`${value}`])}
|
||||||
|
isChecked={value[0] === "true"}
|
||||||
|
label={t("common:on")}
|
||||||
|
labelOff={t("common:off")}
|
||||||
/>
|
/>
|
||||||
}
|
)}
|
||||||
fieldId="kc-read-only"
|
></Controller>
|
||||||
hasNoPaddingTop
|
</FormGroup>
|
||||||
>
|
<FormGroup
|
||||||
<Controller
|
label={t("writeOnly")}
|
||||||
name="config.read-only"
|
labelIcon={
|
||||||
defaultValue={["false"]}
|
<HelpItem
|
||||||
control={form.control}
|
helpText={helpText("writeOnlyHelp")}
|
||||||
render={({ onChange, value }) => (
|
forLabel={t("writeOnly")}
|
||||||
<Switch
|
forID="kc-write-only"
|
||||||
id={"kc-read-only"}
|
/>
|
||||||
isDisabled={false}
|
}
|
||||||
onChange={(value) => onChange([`${value}`])}
|
fieldId="kc-read-only"
|
||||||
isChecked={value[0] === "true"}
|
hasNoPaddingTop
|
||||||
label={t("common:on")}
|
>
|
||||||
labelOff={t("common:off")}
|
<Controller
|
||||||
/>
|
name="config.write-only"
|
||||||
)}
|
defaultValue={["false"]}
|
||||||
></Controller>
|
control={form.control}
|
||||||
</FormGroup>
|
render={({ onChange, value }) => (
|
||||||
<FormGroup
|
<Switch
|
||||||
label={t("writeOnly")}
|
id={"kc-write-only"}
|
||||||
labelIcon={
|
isDisabled={false}
|
||||||
<HelpItem
|
onChange={(value) => onChange([`${value}`])}
|
||||||
helpText={helpText("writeOnlyHelp")}
|
isChecked={value[0] === "true"}
|
||||||
forLabel={t("writeOnly")}
|
label={t("common:on")}
|
||||||
forID="kc-write-only"
|
labelOff={t("common:off")}
|
||||||
/>
|
/>
|
||||||
}
|
)}
|
||||||
fieldId="kc-read-only"
|
></Controller>
|
||||||
hasNoPaddingTop
|
</FormGroup>
|
||||||
>
|
|
||||||
<Controller
|
|
||||||
name="config.write-only"
|
|
||||||
defaultValue={["false"]}
|
|
||||||
control={form.control}
|
|
||||||
render={({ onChange, value }) => (
|
|
||||||
<Switch
|
|
||||||
id={"kc-write-only"}
|
|
||||||
isDisabled={false}
|
|
||||||
onChange={(value) => onChange([`${value}`])}
|
|
||||||
isChecked={value[0] === "true"}
|
|
||||||
label={t("common:on")}
|
|
||||||
labelOff={t("common:off")}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
></Controller>
|
|
||||||
</FormGroup>
|
|
||||||
</FormAccess>
|
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -2,9 +2,7 @@ import { FormGroup, TextInput } from "@patternfly/react-core";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { HelpItem } from "../../../components/help-enabler/HelpItem";
|
import { HelpItem } from "../../../components/help-enabler/HelpItem";
|
||||||
import { UseFormMethods } from "react-hook-form";
|
import { UseFormMethods } from "react-hook-form";
|
||||||
import { FormAccess } from "../../../components/form-access/FormAccess";
|
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { LdapMapperGeneral } from "./shared/LdapMapperGeneral";
|
|
||||||
|
|
||||||
export type LdapMapperHardcodedAttributeProps = {
|
export type LdapMapperHardcodedAttributeProps = {
|
||||||
form: UseFormMethods;
|
form: UseFormMethods;
|
||||||
|
@ -18,51 +16,48 @@ export const LdapMapperHardcodedAttribute = ({
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<FormAccess role="manage-realm" isHorizontal>
|
<FormGroup
|
||||||
<LdapMapperGeneral form={form} />
|
label={t("userModelAttributeName")}
|
||||||
<FormGroup
|
labelIcon={
|
||||||
label={t("userModelAttributeName")}
|
<HelpItem
|
||||||
labelIcon={
|
helpText={helpText("userModelAttributeNameHelp")}
|
||||||
<HelpItem
|
forLabel={t("userModelAttributeName")}
|
||||||
helpText={helpText("userModelAttributeNameHelp")}
|
forID="kc-user-model-attribute"
|
||||||
forLabel={t("userModelAttributeName")}
|
|
||||||
forID="kc-user-model-attribute"
|
|
||||||
/>
|
|
||||||
}
|
|
||||||
fieldId="kc-user-model-attribute"
|
|
||||||
isRequired
|
|
||||||
>
|
|
||||||
<TextInput
|
|
||||||
isRequired
|
|
||||||
type="text"
|
|
||||||
id="kc-user-model-attribute"
|
|
||||||
data-testid="user-model-attribute"
|
|
||||||
name="config.user-model-attribute"
|
|
||||||
ref={form.register}
|
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
}
|
||||||
<FormGroup
|
fieldId="kc-user-model-attribute"
|
||||||
label={t("attributeValue")}
|
isRequired
|
||||||
labelIcon={
|
>
|
||||||
<HelpItem
|
<TextInput
|
||||||
helpText={helpText("attributeValueHelp")}
|
|
||||||
forLabel={t("attributeValue")}
|
|
||||||
forID="kc-attribute-value"
|
|
||||||
/>
|
|
||||||
}
|
|
||||||
fieldId="kc-attribute-value"
|
|
||||||
isRequired
|
isRequired
|
||||||
>
|
type="text"
|
||||||
<TextInput
|
id="kc-user-model-attribute"
|
||||||
isRequired
|
data-testid="user-model-attribute"
|
||||||
type="text"
|
name="config.user-model-attribute"
|
||||||
id="kc-attribute-value"
|
ref={form.register}
|
||||||
data-testid="attribute-value"
|
/>
|
||||||
name="config.attribute-value"
|
</FormGroup>
|
||||||
ref={form.register}
|
<FormGroup
|
||||||
|
label={t("attributeValue")}
|
||||||
|
labelIcon={
|
||||||
|
<HelpItem
|
||||||
|
helpText={helpText("attributeValueHelp")}
|
||||||
|
forLabel={t("attributeValue")}
|
||||||
|
forID="kc-attribute-value"
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
}
|
||||||
</FormAccess>
|
fieldId="kc-attribute-value"
|
||||||
|
isRequired
|
||||||
|
>
|
||||||
|
<TextInput
|
||||||
|
isRequired
|
||||||
|
type="text"
|
||||||
|
id="kc-attribute-value"
|
||||||
|
data-testid="attribute-value"
|
||||||
|
name="config.attribute-value"
|
||||||
|
ref={form.register}
|
||||||
|
/>
|
||||||
|
</FormGroup>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -2,9 +2,7 @@ import { FormGroup, TextInput } from "@patternfly/react-core";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { HelpItem } from "../../../components/help-enabler/HelpItem";
|
import { HelpItem } from "../../../components/help-enabler/HelpItem";
|
||||||
import { UseFormMethods } from "react-hook-form";
|
import { UseFormMethods } from "react-hook-form";
|
||||||
import { FormAccess } from "../../../components/form-access/FormAccess";
|
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { LdapMapperGeneral } from "./shared/LdapMapperGeneral";
|
|
||||||
|
|
||||||
export type LdapMapperHardcodedLdapAttributeProps = {
|
export type LdapMapperHardcodedLdapAttributeProps = {
|
||||||
form: UseFormMethods;
|
form: UseFormMethods;
|
||||||
|
@ -18,52 +16,48 @@ export const LdapMapperHardcodedLdapAttribute = ({
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<FormAccess role="manage-realm" isHorizontal>
|
<FormGroup
|
||||||
<LdapMapperGeneral form={form} />
|
label={t("ldapAttributeName")}
|
||||||
|
labelIcon={
|
||||||
<FormGroup
|
<HelpItem
|
||||||
label={t("ldapAttributeName")}
|
helpText={helpText("ldapAttributeNameHelp")}
|
||||||
labelIcon={
|
forLabel={t("ldapAttributeName")}
|
||||||
<HelpItem
|
forID="kc-ldap-attribute-name"
|
||||||
helpText={helpText("ldapAttributeNameHelp")}
|
|
||||||
forLabel={t("ldapAttributeName")}
|
|
||||||
forID="kc-ldap-attribute-name"
|
|
||||||
/>
|
|
||||||
}
|
|
||||||
fieldId="kc-ldap-attribute-name"
|
|
||||||
isRequired
|
|
||||||
>
|
|
||||||
<TextInput
|
|
||||||
isRequired
|
|
||||||
type="text"
|
|
||||||
id="kc-ldap-attribute-name"
|
|
||||||
data-testid="ldap-attribute-name"
|
|
||||||
name="config.ldap-attribute-name"
|
|
||||||
ref={form.register}
|
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
}
|
||||||
<FormGroup
|
fieldId="kc-ldap-attribute-name"
|
||||||
label={t("ldapAttributeValue")}
|
isRequired
|
||||||
labelIcon={
|
>
|
||||||
<HelpItem
|
<TextInput
|
||||||
helpText={helpText("ldapAttributeValueHelp")}
|
|
||||||
forLabel={t("ldapAttributeValue")}
|
|
||||||
forID="kc-ldap-attribute-value"
|
|
||||||
/>
|
|
||||||
}
|
|
||||||
fieldId="kc-ldap-attribute-value"
|
|
||||||
isRequired
|
isRequired
|
||||||
>
|
type="text"
|
||||||
<TextInput
|
id="kc-ldap-attribute-name"
|
||||||
isRequired
|
data-testid="ldap-attribute-name"
|
||||||
type="text"
|
name="config.ldap-attribute-name"
|
||||||
id="kc-ldap-attribute-value"
|
ref={form.register}
|
||||||
data-testid="ldap-attribute-value"
|
/>
|
||||||
name="config.ldap-attribute-value"
|
</FormGroup>
|
||||||
ref={form.register}
|
<FormGroup
|
||||||
|
label={t("ldapAttributeValue")}
|
||||||
|
labelIcon={
|
||||||
|
<HelpItem
|
||||||
|
helpText={helpText("ldapAttributeValueHelp")}
|
||||||
|
forLabel={t("ldapAttributeValue")}
|
||||||
|
forID="kc-ldap-attribute-value"
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
}
|
||||||
</FormAccess>
|
fieldId="kc-ldap-attribute-value"
|
||||||
|
isRequired
|
||||||
|
>
|
||||||
|
<TextInput
|
||||||
|
isRequired
|
||||||
|
type="text"
|
||||||
|
id="kc-ldap-attribute-value"
|
||||||
|
data-testid="ldap-attribute-value"
|
||||||
|
name="config.ldap-attribute-value"
|
||||||
|
ref={form.register}
|
||||||
|
/>
|
||||||
|
</FormGroup>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -2,9 +2,7 @@ import { FormGroup, TextInput } from "@patternfly/react-core";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { HelpItem } from "../../../components/help-enabler/HelpItem";
|
import { HelpItem } from "../../../components/help-enabler/HelpItem";
|
||||||
import { UseFormMethods } from "react-hook-form";
|
import { UseFormMethods } from "react-hook-form";
|
||||||
import { FormAccess } from "../../../components/form-access/FormAccess";
|
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { LdapMapperGeneral } from "./shared/LdapMapperGeneral";
|
|
||||||
|
|
||||||
export type LdapMapperHardcodedLdapGroupProps = {
|
export type LdapMapperHardcodedLdapGroupProps = {
|
||||||
form: UseFormMethods;
|
form: UseFormMethods;
|
||||||
|
@ -18,30 +16,27 @@ export const LdapMapperHardcodedLdapGroup = ({
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<FormAccess role="manage-realm" isHorizontal>
|
<FormGroup
|
||||||
<LdapMapperGeneral form={form} />
|
label={t("group")}
|
||||||
<FormGroup
|
labelIcon={
|
||||||
label={t("group")}
|
<HelpItem
|
||||||
labelIcon={
|
helpText={helpText("groupHelp")}
|
||||||
<HelpItem
|
forLabel={t("group")}
|
||||||
helpText={helpText("groupHelp")}
|
forID="kc-group"
|
||||||
forLabel={t("group")}
|
|
||||||
forID="kc-group"
|
|
||||||
/>
|
|
||||||
}
|
|
||||||
fieldId="kc-group"
|
|
||||||
isRequired
|
|
||||||
>
|
|
||||||
<TextInput
|
|
||||||
isRequired
|
|
||||||
type="text"
|
|
||||||
id="kc-group"
|
|
||||||
data-testid="group"
|
|
||||||
name="config.group"
|
|
||||||
ref={form.register}
|
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
}
|
||||||
</FormAccess>
|
fieldId="kc-group"
|
||||||
|
isRequired
|
||||||
|
>
|
||||||
|
<TextInput
|
||||||
|
isRequired
|
||||||
|
type="text"
|
||||||
|
id="kc-group"
|
||||||
|
data-testid="group"
|
||||||
|
name="config.group"
|
||||||
|
ref={form.register}
|
||||||
|
/>
|
||||||
|
</FormGroup>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -2,9 +2,7 @@ import { FormGroup, TextInput } from "@patternfly/react-core";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { HelpItem } from "../../../components/help-enabler/HelpItem";
|
import { HelpItem } from "../../../components/help-enabler/HelpItem";
|
||||||
import { UseFormMethods } from "react-hook-form";
|
import { UseFormMethods } from "react-hook-form";
|
||||||
import { FormAccess } from "../../../components/form-access/FormAccess";
|
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { LdapMapperGeneral } from "./shared/LdapMapperGeneral";
|
|
||||||
|
|
||||||
export type LdapMapperHardcodedLdapRoleProps = {
|
export type LdapMapperHardcodedLdapRoleProps = {
|
||||||
form: UseFormMethods;
|
form: UseFormMethods;
|
||||||
|
@ -18,30 +16,27 @@ export const LdapMapperHardcodedLdapRole = ({
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<FormAccess role="manage-realm" isHorizontal>
|
<FormGroup
|
||||||
<LdapMapperGeneral form={form} />
|
label={t("common:role")}
|
||||||
<FormGroup
|
labelIcon={
|
||||||
label={t("common:role")}
|
<HelpItem
|
||||||
labelIcon={
|
helpText={helpText("roleHelp")}
|
||||||
<HelpItem
|
forLabel={t("common:role")}
|
||||||
helpText={helpText("roleHelp")}
|
forID="kc-role"
|
||||||
forLabel={t("common:role")}
|
|
||||||
forID="kc-role"
|
|
||||||
/>
|
|
||||||
}
|
|
||||||
fieldId="kc-role"
|
|
||||||
isRequired
|
|
||||||
>
|
|
||||||
<TextInput
|
|
||||||
isRequired
|
|
||||||
type="text"
|
|
||||||
id="kc-role"
|
|
||||||
data-testid="role"
|
|
||||||
name="config.role"
|
|
||||||
ref={form.register}
|
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
}
|
||||||
</FormAccess>
|
fieldId="kc-role"
|
||||||
|
isRequired
|
||||||
|
>
|
||||||
|
<TextInput
|
||||||
|
isRequired
|
||||||
|
type="text"
|
||||||
|
id="kc-role"
|
||||||
|
data-testid="role"
|
||||||
|
name="config.role"
|
||||||
|
ref={form.register}
|
||||||
|
/>
|
||||||
|
</FormGroup>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -10,20 +10,17 @@ import {
|
||||||
useAdminClient,
|
useAdminClient,
|
||||||
asyncStateFetch,
|
asyncStateFetch,
|
||||||
} from "../../../context/auth/AdminClient";
|
} from "../../../context/auth/AdminClient";
|
||||||
import { Link, useParams, useRouteMatch } from "react-router-dom";
|
import { Link, useHistory, useParams, useRouteMatch } from "react-router-dom";
|
||||||
|
|
||||||
export const LdapMapperList = () => {
|
export const LdapMapperList = () => {
|
||||||
const [mappers, setMappers] = useState<ComponentRepresentation[]>();
|
const [mappers, setMappers] = useState<ComponentRepresentation[]>();
|
||||||
|
const history = useHistory();
|
||||||
const { t } = useTranslation("user-federation");
|
const { t } = useTranslation("user-federation");
|
||||||
const adminClient = useAdminClient();
|
const adminClient = useAdminClient();
|
||||||
const { addAlert } = useAlerts();
|
const { addAlert } = useAlerts();
|
||||||
|
|
||||||
const { url } = useRouteMatch();
|
const { url } = useRouteMatch();
|
||||||
|
|
||||||
const handleError = useErrorHandler();
|
const handleError = useErrorHandler();
|
||||||
const [key, setKey] = useState(0);
|
const [key, setKey] = useState(0);
|
||||||
|
|
||||||
const { id } = useParams<{ id: string }>();
|
const { id } = useParams<{ id: string }>();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
@ -95,13 +92,7 @@ export const LdapMapperList = () => {
|
||||||
<Button
|
<Button
|
||||||
data-testid="createMapperBtn"
|
data-testid="createMapperBtn"
|
||||||
variant="primary"
|
variant="primary"
|
||||||
// onClick={handleModalToggle}
|
onClick={() => history.push(`${url}/new`)}
|
||||||
onClick={() =>
|
|
||||||
addAlert(
|
|
||||||
t("Add functionality not implemented yet!"),
|
|
||||||
AlertVariant.success
|
|
||||||
)
|
|
||||||
}
|
|
||||||
>
|
>
|
||||||
{t("common:addMapper")}
|
{t("common:addMapper")}
|
||||||
</Button>
|
</Button>
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
import React from "react";
|
|
||||||
import { UseFormMethods } from "react-hook-form";
|
|
||||||
import { FormAccess } from "../../../components/form-access/FormAccess";
|
|
||||||
import { LdapMapperGeneral } from "./shared/LdapMapperGeneral";
|
|
||||||
|
|
||||||
export type LdapMapperMsadLdsUserAccountProps = {
|
|
||||||
form: UseFormMethods;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const LdapMapperMsadLdsUserAccount = ({
|
|
||||||
form,
|
|
||||||
}: LdapMapperMsadLdsUserAccountProps) => {
|
|
||||||
return (
|
|
||||||
<>
|
|
||||||
<FormAccess role="manage-realm" isHorizontal>
|
|
||||||
<LdapMapperGeneral form={form} />
|
|
||||||
</FormAccess>
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
};
|
|
|
@ -2,9 +2,7 @@ import { FormGroup, Switch } from "@patternfly/react-core";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { HelpItem } from "../../../components/help-enabler/HelpItem";
|
import { HelpItem } from "../../../components/help-enabler/HelpItem";
|
||||||
import { Controller, UseFormMethods } from "react-hook-form";
|
import { Controller, UseFormMethods } from "react-hook-form";
|
||||||
import { FormAccess } from "../../../components/form-access/FormAccess";
|
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { LdapMapperGeneral } from "./shared/LdapMapperGeneral";
|
|
||||||
|
|
||||||
export type LdapMapperMsadUserAccountProps = {
|
export type LdapMapperMsadUserAccountProps = {
|
||||||
form: UseFormMethods;
|
form: UseFormMethods;
|
||||||
|
@ -18,37 +16,34 @@ export const LdapMapperMsadUserAccount = ({
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<FormAccess role="manage-realm" isHorizontal>
|
<FormGroup
|
||||||
<LdapMapperGeneral form={form} />
|
label={t("passwordPolicyHintsEnabled")}
|
||||||
<FormGroup
|
labelIcon={
|
||||||
label={t("passwordPolicyHintsEnabled")}
|
<HelpItem
|
||||||
labelIcon={
|
helpText={helpText("passwordPolicyHintsEnabledHelp")}
|
||||||
<HelpItem
|
forLabel={t("passwordPolicyHintsEnabled")}
|
||||||
helpText={helpText("passwordPolicyHintsEnabledHelp")}
|
forID="kc-pw-policy-hints-enabled"
|
||||||
forLabel={t("passwordPolicyHintsEnabled")}
|
/>
|
||||||
forID="kc-pw-policy-hints-enabled"
|
}
|
||||||
|
fieldId="kc-der-formatted"
|
||||||
|
hasNoPaddingTop
|
||||||
|
>
|
||||||
|
<Controller
|
||||||
|
name="config.ldap-password-policy-hints-enabled"
|
||||||
|
defaultValue={["false"]}
|
||||||
|
control={form.control}
|
||||||
|
render={({ onChange, value }) => (
|
||||||
|
<Switch
|
||||||
|
id={"kc-pw-policy-hints-enabled"}
|
||||||
|
isDisabled={false}
|
||||||
|
onChange={(value) => onChange([`${value}`])}
|
||||||
|
isChecked={value[0] === "true"}
|
||||||
|
label={t("common:on")}
|
||||||
|
labelOff={t("common:off")}
|
||||||
/>
|
/>
|
||||||
}
|
)}
|
||||||
fieldId="kc-der-formatted"
|
></Controller>
|
||||||
hasNoPaddingTop
|
</FormGroup>
|
||||||
>
|
|
||||||
<Controller
|
|
||||||
name="config.ldap-password-policy-hints-enabled"
|
|
||||||
defaultValue={["false"]}
|
|
||||||
control={form.control}
|
|
||||||
render={({ onChange, value }) => (
|
|
||||||
<Switch
|
|
||||||
id={"kc-pw-policy-hints-enabled"}
|
|
||||||
isDisabled={false}
|
|
||||||
onChange={(value) => onChange([`${value}`])}
|
|
||||||
isChecked={value[0] === "true"}
|
|
||||||
label={t("common:on")}
|
|
||||||
labelOff={t("common:off")}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
></Controller>
|
|
||||||
</FormGroup>
|
|
||||||
</FormAccess>
|
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -2,9 +2,7 @@ import { FormGroup, Switch, TextInput } from "@patternfly/react-core";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { HelpItem } from "../../../components/help-enabler/HelpItem";
|
import { HelpItem } from "../../../components/help-enabler/HelpItem";
|
||||||
import { Controller, UseFormMethods } from "react-hook-form";
|
import { Controller, UseFormMethods } from "react-hook-form";
|
||||||
import { FormAccess } from "../../../components/form-access/FormAccess";
|
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { LdapMapperGeneral } from "./shared/LdapMapperGeneral";
|
|
||||||
|
|
||||||
export type LdapMapperUserAttributeProps = {
|
export type LdapMapperUserAttributeProps = {
|
||||||
form: UseFormMethods;
|
form: UseFormMethods;
|
||||||
|
@ -20,197 +18,194 @@ export const LdapMapperUserAttribute = ({
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<FormAccess role="manage-realm" isHorizontal>
|
<FormGroup
|
||||||
<LdapMapperGeneral form={form} />
|
label={t("userModelAttribute")}
|
||||||
<FormGroup
|
labelIcon={
|
||||||
label={t("userModelAttribute")}
|
<HelpItem
|
||||||
labelIcon={
|
helpText={helpText("userModelAttributeHelp")}
|
||||||
<HelpItem
|
forLabel={t("userModelAttribute")}
|
||||||
helpText={helpText("userModelAttributeHelp")}
|
forID="kc-user-model-attribute"
|
||||||
forLabel={t("userModelAttribute")}
|
|
||||||
forID="kc-user-model-attribute"
|
|
||||||
/>
|
|
||||||
}
|
|
||||||
fieldId="kc-user-model-attribute"
|
|
||||||
isRequired
|
|
||||||
>
|
|
||||||
<TextInput
|
|
||||||
isRequired
|
|
||||||
type="text"
|
|
||||||
id="kc-user-model-attribute"
|
|
||||||
data-testid="user-model-attribute"
|
|
||||||
name="config.user-model-attribute"
|
|
||||||
ref={form.register}
|
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
}
|
||||||
<FormGroup
|
fieldId="kc-user-model-attribute"
|
||||||
label={t("ldapAttribute")}
|
isRequired
|
||||||
labelIcon={
|
>
|
||||||
<HelpItem
|
<TextInput
|
||||||
helpText={helpText("ldapAttributeHelp")}
|
|
||||||
forLabel={t("ldapAttribute")}
|
|
||||||
forID="kc-ldap-attribute"
|
|
||||||
/>
|
|
||||||
}
|
|
||||||
fieldId="kc-ldap-attribute"
|
|
||||||
isRequired
|
isRequired
|
||||||
>
|
type="text"
|
||||||
<TextInput
|
id="kc-user-model-attribute"
|
||||||
isRequired
|
data-testid="user-model-attribute"
|
||||||
type="text"
|
name="config.user-model-attribute"
|
||||||
id="kc-ldap-attribute"
|
ref={form.register}
|
||||||
data-testid="ldap-attribute"
|
/>
|
||||||
name="config.ldap-attribute"
|
</FormGroup>
|
||||||
ref={form.register}
|
<FormGroup
|
||||||
|
label={t("ldapAttribute")}
|
||||||
|
labelIcon={
|
||||||
|
<HelpItem
|
||||||
|
helpText={helpText("ldapAttributeHelp")}
|
||||||
|
forLabel={t("ldapAttribute")}
|
||||||
|
forID="kc-ldap-attribute"
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
}
|
||||||
<FormGroup
|
fieldId="kc-ldap-attribute"
|
||||||
label={t("readOnly")}
|
isRequired
|
||||||
labelIcon={
|
>
|
||||||
<HelpItem
|
<TextInput
|
||||||
helpText={helpText("readOnlyHelp")}
|
isRequired
|
||||||
forLabel={t("readOnly")}
|
type="text"
|
||||||
forID="kc-read-only"
|
id="kc-ldap-attribute"
|
||||||
|
data-testid="ldap-attribute"
|
||||||
|
name="config.ldap-attribute"
|
||||||
|
ref={form.register}
|
||||||
|
/>
|
||||||
|
</FormGroup>
|
||||||
|
<FormGroup
|
||||||
|
label={t("readOnly")}
|
||||||
|
labelIcon={
|
||||||
|
<HelpItem
|
||||||
|
helpText={helpText("readOnlyHelp")}
|
||||||
|
forLabel={t("readOnly")}
|
||||||
|
forID="kc-read-only"
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
fieldId="kc-read-only"
|
||||||
|
hasNoPaddingTop
|
||||||
|
>
|
||||||
|
<Controller
|
||||||
|
name="config.read-only"
|
||||||
|
defaultValue={["false"]}
|
||||||
|
control={form.control}
|
||||||
|
render={({ onChange, value }) => (
|
||||||
|
<Switch
|
||||||
|
id={"kc-read-only"}
|
||||||
|
isDisabled={false}
|
||||||
|
onChange={(value) => onChange([`${value}`])}
|
||||||
|
isChecked={value[0] === "true"}
|
||||||
|
label={t("common:on")}
|
||||||
|
labelOff={t("common:off")}
|
||||||
/>
|
/>
|
||||||
}
|
)}
|
||||||
fieldId="kc-read-only"
|
></Controller>
|
||||||
hasNoPaddingTop
|
</FormGroup>
|
||||||
>
|
<FormGroup
|
||||||
<Controller
|
label={t("alwaysReadValueFromLdap")}
|
||||||
name="config.read-only"
|
labelIcon={
|
||||||
defaultValue={["false"]}
|
<HelpItem
|
||||||
control={form.control}
|
helpText={helpText("alwaysReadValueFromLdapHelp")}
|
||||||
render={({ onChange, value }) => (
|
forLabel={t("alwaysReadValueFromLdap")}
|
||||||
<Switch
|
forID="kc-always-read-value"
|
||||||
id={"kc-read-only"}
|
/>
|
||||||
isDisabled={false}
|
}
|
||||||
onChange={(value) => onChange([`${value}`])}
|
fieldId="kc-always-read-value"
|
||||||
isChecked={value[0] === "true"}
|
hasNoPaddingTop
|
||||||
label={t("common:on")}
|
>
|
||||||
labelOff={t("common:off")}
|
<Controller
|
||||||
/>
|
name="config.always-read-value-from-ldap"
|
||||||
)}
|
defaultValue={["false"]}
|
||||||
></Controller>
|
control={form.control}
|
||||||
</FormGroup>
|
render={({ onChange, value }) => (
|
||||||
<FormGroup
|
<Switch
|
||||||
label={t("alwaysReadValueFromLdap")}
|
id={"kc-always-read-value"}
|
||||||
labelIcon={
|
isDisabled={false}
|
||||||
<HelpItem
|
onChange={(value) => onChange([`${value}`])}
|
||||||
helpText={helpText("alwaysReadValueFromLdapHelp")}
|
isChecked={value[0] === "true"}
|
||||||
forLabel={t("alwaysReadValueFromLdap")}
|
label={t("common:on")}
|
||||||
forID="kc-always-read-value"
|
labelOff={t("common:off")}
|
||||||
/>
|
/>
|
||||||
}
|
)}
|
||||||
fieldId="kc-always-read-value"
|
></Controller>
|
||||||
hasNoPaddingTop
|
</FormGroup>
|
||||||
>
|
<FormGroup
|
||||||
<Controller
|
label={t("isMandatoryInLdap")}
|
||||||
name="config.always-read-value-from-ldap"
|
labelIcon={
|
||||||
defaultValue={["false"]}
|
<HelpItem
|
||||||
control={form.control}
|
helpText={helpText("isMandatoryInLdapHelp")}
|
||||||
render={({ onChange, value }) => (
|
forLabel={t("isMandatoryInLdap")}
|
||||||
<Switch
|
forID="kc-is-mandatory"
|
||||||
id={"kc-always-read-value"}
|
/>
|
||||||
isDisabled={false}
|
}
|
||||||
onChange={(value) => onChange([`${value}`])}
|
fieldId="kc-is-mandatory"
|
||||||
isChecked={value[0] === "true"}
|
hasNoPaddingTop
|
||||||
label={t("common:on")}
|
>
|
||||||
labelOff={t("common:off")}
|
<Controller
|
||||||
/>
|
name="config.is-mandatory-in-ldap"
|
||||||
)}
|
defaultValue={["false"]}
|
||||||
></Controller>
|
control={form.control}
|
||||||
</FormGroup>
|
render={({ onChange, value }) => (
|
||||||
<FormGroup
|
<Switch
|
||||||
label={t("isMandatoryInLdap")}
|
id={"kc-is-mandatory"}
|
||||||
labelIcon={
|
isDisabled={false}
|
||||||
<HelpItem
|
onChange={(value) => onChange([`${value}`])}
|
||||||
helpText={helpText("isMandatoryInLdapHelp")}
|
isChecked={value[0] === "true"}
|
||||||
forLabel={t("isMandatoryInLdap")}
|
label={t("common:on")}
|
||||||
forID="kc-is-mandatory"
|
labelOff={t("common:off")}
|
||||||
/>
|
/>
|
||||||
}
|
)}
|
||||||
fieldId="kc-is-mandatory"
|
></Controller>
|
||||||
hasNoPaddingTop
|
</FormGroup>
|
||||||
>
|
<FormGroup
|
||||||
<Controller
|
label={t("isBinaryAttribute")}
|
||||||
name="config.is-mandatory-in-ldap"
|
labelIcon={
|
||||||
defaultValue={["false"]}
|
<HelpItem
|
||||||
control={form.control}
|
helpText={helpText("isBinaryAttributeHelp")}
|
||||||
render={({ onChange, value }) => (
|
forLabel={t("isBinaryAttribute")}
|
||||||
<Switch
|
forID="kc-is-binary"
|
||||||
id={"kc-is-mandatory"}
|
/>
|
||||||
isDisabled={false}
|
}
|
||||||
onChange={(value) => onChange([`${value}`])}
|
fieldId="kc-is-binary"
|
||||||
isChecked={value[0] === "true"}
|
hasNoPaddingTop
|
||||||
label={t("common:on")}
|
>
|
||||||
labelOff={t("common:off")}
|
<Controller
|
||||||
/>
|
name="config.is-binary-attribute"
|
||||||
)}
|
defaultValue={["false"]}
|
||||||
></Controller>
|
control={form.control}
|
||||||
</FormGroup>
|
render={({ onChange, value }) => (
|
||||||
<FormGroup
|
<Switch
|
||||||
label={t("isBinaryAttribute")}
|
id={"kc-is-binary"}
|
||||||
labelIcon={
|
isDisabled={false}
|
||||||
<HelpItem
|
onChange={(value) => onChange([`${value}`])}
|
||||||
helpText={helpText("isBinaryAttributeHelp")}
|
isChecked={value[0] === "true"}
|
||||||
forLabel={t("isBinaryAttribute")}
|
label={t("common:on")}
|
||||||
forID="kc-is-binary"
|
labelOff={t("common:off")}
|
||||||
/>
|
/>
|
||||||
}
|
)}
|
||||||
fieldId="kc-is-binary"
|
></Controller>
|
||||||
hasNoPaddingTop
|
</FormGroup>
|
||||||
>
|
{mapperType === "certificate-ldap-mapper" ? (
|
||||||
<Controller
|
<>
|
||||||
name="config.is-binary-attribute"
|
<FormGroup
|
||||||
defaultValue={["false"]}
|
label={t("derFormatted")}
|
||||||
control={form.control}
|
labelIcon={
|
||||||
render={({ onChange, value }) => (
|
<HelpItem
|
||||||
<Switch
|
helpText={helpText("derFormattedHelp")}
|
||||||
id={"kc-is-binary"}
|
forLabel={t("derFormatted")}
|
||||||
isDisabled={false}
|
forID="kc-der-formatted"
|
||||||
onChange={(value) => onChange([`${value}`])}
|
|
||||||
isChecked={value[0] === "true"}
|
|
||||||
label={t("common:on")}
|
|
||||||
labelOff={t("common:off")}
|
|
||||||
/>
|
/>
|
||||||
)}
|
}
|
||||||
></Controller>
|
fieldId="kc-der-formatted"
|
||||||
</FormGroup>
|
hasNoPaddingTop
|
||||||
{mapperType === "certificate-ldap-mapper" ? (
|
>
|
||||||
<>
|
<Controller
|
||||||
<FormGroup
|
name="config.is-der-formatted"
|
||||||
label={t("derFormatted")}
|
defaultValue={["false"]}
|
||||||
labelIcon={
|
control={form.control}
|
||||||
<HelpItem
|
render={({ onChange, value }) => (
|
||||||
helpText={helpText("derFormattedHelp")}
|
<Switch
|
||||||
forLabel={t("derFormatted")}
|
id={"kc-der-formatted"}
|
||||||
forID="kc-der-formatted"
|
isDisabled={false}
|
||||||
|
onChange={(value) => onChange([`${value}`])}
|
||||||
|
isChecked={value[0] === "true"}
|
||||||
|
label={t("common:on")}
|
||||||
|
labelOff={t("common:off")}
|
||||||
/>
|
/>
|
||||||
}
|
)}
|
||||||
fieldId="kc-der-formatted"
|
></Controller>
|
||||||
hasNoPaddingTop
|
</FormGroup>
|
||||||
>
|
</>
|
||||||
<Controller
|
) : (
|
||||||
name="config.is-der-formatted"
|
<></>
|
||||||
defaultValue={["false"]}
|
)}
|
||||||
control={form.control}
|
|
||||||
render={({ onChange, value }) => (
|
|
||||||
<Switch
|
|
||||||
id={"kc-der-formatted"}
|
|
||||||
isDisabled={false}
|
|
||||||
onChange={(value) => onChange([`${value}`])}
|
|
||||||
isChecked={value[0] === "true"}
|
|
||||||
label={t("common:on")}
|
|
||||||
labelOff={t("common:off")}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
></Controller>
|
|
||||||
</FormGroup>
|
|
||||||
</>
|
|
||||||
) : (
|
|
||||||
<></>
|
|
||||||
)}
|
|
||||||
</FormAccess>
|
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -4,20 +4,26 @@ import {
|
||||||
AlertVariant,
|
AlertVariant,
|
||||||
Button,
|
Button,
|
||||||
Form,
|
Form,
|
||||||
|
FormGroup,
|
||||||
PageSection,
|
PageSection,
|
||||||
|
Select,
|
||||||
|
SelectOption,
|
||||||
|
SelectVariant,
|
||||||
|
TextInput,
|
||||||
} from "@patternfly/react-core";
|
} from "@patternfly/react-core";
|
||||||
import { convertToFormValues } from "../../../util";
|
import { convertToFormValues } from "../../../util";
|
||||||
import ComponentRepresentation from "keycloak-admin/lib/defs/componentRepresentation";
|
import ComponentRepresentation from "keycloak-admin/lib/defs/componentRepresentation";
|
||||||
import { useAdminClient } from "../../../context/auth/AdminClient";
|
import { useAdminClient } from "../../../context/auth/AdminClient";
|
||||||
import { ViewHeader } from "../../../components/view-header/ViewHeader";
|
import { ViewHeader } from "../../../components/view-header/ViewHeader";
|
||||||
import { useHistory, useParams } from "react-router-dom";
|
import { useHistory, useParams } from "react-router-dom";
|
||||||
import { useForm } from "react-hook-form";
|
import { Controller, useForm, useWatch } from "react-hook-form";
|
||||||
import { useAlerts } from "../../../components/alert/Alerts";
|
import { useAlerts } from "../../../components/alert/Alerts";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
|
import { HelpItem } from "../../../components/help-enabler/HelpItem";
|
||||||
|
import { FormAccess } from "../../../components/form-access/FormAccess";
|
||||||
|
|
||||||
import { LdapMapperUserAttribute } from "./LdapMapperUserAttribute";
|
import { LdapMapperUserAttribute } from "./LdapMapperUserAttribute";
|
||||||
import { LdapMapperMsadUserAccount } from "./LdapMapperMsadUserAccount";
|
import { LdapMapperMsadUserAccount } from "./LdapMapperMsadUserAccount";
|
||||||
import { LdapMapperMsadLdsUserAccount } from "./LdapMapperMsadLdsUserAccount";
|
|
||||||
import { LdapMapperFullNameAttribute } from "./LdapMapperFullNameAttribute";
|
import { LdapMapperFullNameAttribute } from "./LdapMapperFullNameAttribute";
|
||||||
|
|
||||||
import { LdapMapperHardcodedLdapRole } from "./LdapMapperHardcodedLdapRole";
|
import { LdapMapperHardcodedLdapRole } from "./LdapMapperHardcodedLdapRole";
|
||||||
|
@ -26,7 +32,6 @@ import { LdapMapperHardcodedLdapAttribute } from "./LdapMapperHardcodedLdapAttri
|
||||||
import { LdapMapperHardcodedAttribute } from "./LdapMapperHardcodedAttribute";
|
import { LdapMapperHardcodedAttribute } from "./LdapMapperHardcodedAttribute";
|
||||||
|
|
||||||
import { LdapMapperRoleGroup } from "./LdapMapperRoleGroup";
|
import { LdapMapperRoleGroup } from "./LdapMapperRoleGroup";
|
||||||
|
|
||||||
import { useRealm } from "../../../context/realm-context/RealmContext";
|
import { useRealm } from "../../../context/realm-context/RealmContext";
|
||||||
|
|
||||||
export const LdapMappingDetails = () => {
|
export const LdapMappingDetails = () => {
|
||||||
|
@ -40,20 +45,25 @@ export const LdapMappingDetails = () => {
|
||||||
const { realm } = useRealm();
|
const { realm } = useRealm();
|
||||||
const id = mapperId;
|
const id = mapperId;
|
||||||
const { t } = useTranslation("user-federation");
|
const { t } = useTranslation("user-federation");
|
||||||
|
const helpText = useTranslation("user-federation-help").t;
|
||||||
const { addAlert } = useAlerts();
|
const { addAlert } = useAlerts();
|
||||||
|
|
||||||
|
const [isMapperDropdownOpen, setIsMapperDropdownOpen] = useState(false);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
(async () => {
|
(async () => {
|
||||||
if (mapperId) {
|
if (mapperId !== "new") {
|
||||||
const fetchedMapper = await adminClient.components.findOne({ id });
|
if (mapperId) {
|
||||||
if (fetchedMapper) {
|
const fetchedMapper = await adminClient.components.findOne({ id });
|
||||||
// TODO: remove after adding all mapper types
|
if (fetchedMapper) {
|
||||||
console.log("LdapMappingDetails: id used in findOne(id) call::");
|
// TODO: remove after adding all mapper types
|
||||||
console.log(id);
|
console.log("LdapMappingDetails: id used in findOne(id) call::");
|
||||||
console.log("LdapMappingDetails: data returned from findOne(id):");
|
console.log(id);
|
||||||
console.log(fetchedMapper);
|
console.log("LdapMappingDetails: data returned from findOne(id):");
|
||||||
setMapper(fetchedMapper);
|
console.log(fetchedMapper);
|
||||||
setupForm(fetchedMapper);
|
setMapper(fetchedMapper);
|
||||||
|
setupForm(fetchedMapper);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
|
@ -78,63 +88,240 @@ export const LdapMappingDetails = () => {
|
||||||
),
|
),
|
||||||
AlertVariant.success
|
AlertVariant.success
|
||||||
);
|
);
|
||||||
history.push(`/${realm}/user-federation`);
|
history.push(`/${realm}/user-federation/ldap/${mapper!.parentId}/mappers`);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const mapperType = useWatch({
|
||||||
|
control: form.control,
|
||||||
|
name: "choose-mapper-type",
|
||||||
|
});
|
||||||
|
|
||||||
|
const isNew = mapperId === "new";
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<ViewHeader titleKey={mapper ? mapper.name! : ""} subKey="" />
|
<ViewHeader
|
||||||
|
titleKey={mapper ? mapper.name! : "Create new mapper"}
|
||||||
|
subKey=""
|
||||||
|
/>
|
||||||
<PageSection variant="light" isFilled>
|
<PageSection variant="light" isFilled>
|
||||||
{mapper
|
<FormAccess role="manage-realm" isHorizontal>
|
||||||
? (mapper.providerId! === "certificate-ldap-mapper" ||
|
{!isNew && (
|
||||||
mapper.providerId! === "user-attribute-ldap-mapper") && (
|
<FormGroup label={t("common:id")} fieldId="kc-ldap-mapper-id">
|
||||||
<LdapMapperUserAttribute
|
<TextInput
|
||||||
form={form}
|
isDisabled
|
||||||
mapperType={mapper?.providerId}
|
type="text"
|
||||||
|
id="kc-ldap-mapper-id"
|
||||||
|
data-testid="ldap-mapper-id"
|
||||||
|
name="id"
|
||||||
|
ref={form.register}
|
||||||
/>
|
/>
|
||||||
)
|
</FormGroup>
|
||||||
: ""}
|
)}
|
||||||
{mapper
|
<FormGroup
|
||||||
? mapper.providerId! === "msad-user-account-control-mapper" && (
|
label={t("common:name")}
|
||||||
<LdapMapperMsadUserAccount form={form} />
|
labelIcon={
|
||||||
)
|
<HelpItem
|
||||||
: ""}
|
helpText={helpText("nameHelp")}
|
||||||
{mapper
|
forLabel={t("common:name")}
|
||||||
? mapper.providerId! === "msad-lds-user-account-control-mapper" && (
|
forID="kc-ldap-mapper-name"
|
||||||
<LdapMapperMsadLdsUserAccount form={form} />
|
/>
|
||||||
)
|
}
|
||||||
: ""}
|
fieldId="kc-ldap-mapper-name"
|
||||||
{mapper
|
isRequired
|
||||||
? mapper.providerId! === "full-name-ldap-mapper" && (
|
>
|
||||||
<LdapMapperFullNameAttribute form={form} />
|
<TextInput
|
||||||
)
|
isDisabled={!isNew}
|
||||||
: ""}
|
isRequired
|
||||||
{mapper
|
type="text"
|
||||||
? mapper.providerId! === "hardcoded-ldap-role-mapper" && (
|
id="kc-ldap-mapper-name"
|
||||||
<LdapMapperHardcodedLdapRole form={form} />
|
data-testid="ldap-mapper-name"
|
||||||
)
|
name="name"
|
||||||
: ""}
|
ref={form.register}
|
||||||
{mapper
|
/>
|
||||||
? mapper.providerId! === "hardcoded-ldap-group-mapper" && (
|
</FormGroup>
|
||||||
<LdapMapperHardcodedLdapGroup form={form} />
|
{!isNew ? (
|
||||||
)
|
<FormGroup
|
||||||
: ""}
|
label={t("common:mapperType")}
|
||||||
{mapper
|
labelIcon={
|
||||||
? mapper.providerId! === "hardcoded-ldap-attribute-mapper" && (
|
<HelpItem
|
||||||
<LdapMapperHardcodedLdapAttribute form={form} />
|
helpText={helpText("mapperTypeHelp")}
|
||||||
)
|
forLabel={t("common:mapperType")}
|
||||||
: ""}
|
forID="kc-ldap-mapper-type"
|
||||||
{mapper
|
/>
|
||||||
? mapper.providerId! === "hardcoded-attribute-mapper" && (
|
}
|
||||||
<LdapMapperHardcodedAttribute form={form} />
|
fieldId="kc-ldap-mapper-type"
|
||||||
)
|
isRequired
|
||||||
: ""}
|
>
|
||||||
{mapper
|
<TextInput
|
||||||
? (mapper.providerId! === "role-ldap-mapper" ||
|
isDisabled={!isNew}
|
||||||
mapper.providerId! === "group-ldap-mapper") && (
|
isRequired
|
||||||
<LdapMapperRoleGroup form={form} type={mapper.providerId} />
|
type="text"
|
||||||
)
|
id="kc-ldap-mapper-type"
|
||||||
: ""}
|
data-testid="ldap-mapper-type"
|
||||||
|
name="providerId"
|
||||||
|
ref={form.register}
|
||||||
|
/>
|
||||||
|
</FormGroup>
|
||||||
|
) : (
|
||||||
|
<FormGroup
|
||||||
|
label={t("common:mapperType")}
|
||||||
|
labelIcon={
|
||||||
|
<HelpItem
|
||||||
|
helpText={helpText("mapperTypeHelp")}
|
||||||
|
forLabel={t("common:mapperType")}
|
||||||
|
forID="kc-choose-mapper-type"
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
fieldId="kc-choose-mapper-type"
|
||||||
|
isRequired
|
||||||
|
>
|
||||||
|
<Controller
|
||||||
|
name="choose-mapper-type"
|
||||||
|
defaultValue=" "
|
||||||
|
control={form.control}
|
||||||
|
render={({ onChange, value }) => (
|
||||||
|
<Select
|
||||||
|
toggleId="kc-choose-mapper-type"
|
||||||
|
required
|
||||||
|
onToggle={() =>
|
||||||
|
setIsMapperDropdownOpen(!isMapperDropdownOpen)
|
||||||
|
}
|
||||||
|
isOpen={isMapperDropdownOpen}
|
||||||
|
onSelect={(_, value) => {
|
||||||
|
onChange(value as string);
|
||||||
|
setIsMapperDropdownOpen(false);
|
||||||
|
}}
|
||||||
|
selections={value}
|
||||||
|
variant={SelectVariant.single}
|
||||||
|
// data-testid="choose-mapper-type"
|
||||||
|
>
|
||||||
|
<SelectOption
|
||||||
|
key={0}
|
||||||
|
value="msad-user-account-control-mapper"
|
||||||
|
/>
|
||||||
|
<SelectOption
|
||||||
|
key={1}
|
||||||
|
value="msda-lds-user-account-control-mapper"
|
||||||
|
/>
|
||||||
|
<SelectOption key={2} value="group-ldap-mapper" />
|
||||||
|
<SelectOption key={3} value="user-attribute-ldap-mapper" />
|
||||||
|
<SelectOption key={4} value="role-ldap-mapper" />
|
||||||
|
<SelectOption key={5} value="hardcoded-attribute-mapper" />
|
||||||
|
<SelectOption key={6} value="hardcoded-ldap-role-mapper" />
|
||||||
|
<SelectOption key={7} value="certificate-ldap-mapper" />
|
||||||
|
<SelectOption key={8} value="full-name-ldap-mapper" />
|
||||||
|
<SelectOption key={9} value="hardcoded-ldap-group-mapper" />
|
||||||
|
<SelectOption
|
||||||
|
key={10}
|
||||||
|
value="hardcoded-ldap-attribute-mapper"
|
||||||
|
/>
|
||||||
|
</Select>
|
||||||
|
)}
|
||||||
|
></Controller>
|
||||||
|
</FormGroup>
|
||||||
|
)}
|
||||||
|
{/* When loading existing mappers, load forms based on providerId aka mapper type */}
|
||||||
|
{mapper
|
||||||
|
? (mapper.providerId! === "certificate-ldap-mapper" ||
|
||||||
|
mapper.providerId! === "user-attribute-ldap-mapper") && (
|
||||||
|
<LdapMapperUserAttribute
|
||||||
|
form={form}
|
||||||
|
mapperType={mapper?.providerId}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
: ""}
|
||||||
|
{mapper
|
||||||
|
? mapper.providerId! === "msad-user-account-control-mapper" && (
|
||||||
|
<LdapMapperMsadUserAccount form={form} />
|
||||||
|
)
|
||||||
|
: ""}
|
||||||
|
{/* msad-lds-user-account-control-mapper does not need a component
|
||||||
|
because it is just id, name, and mapper type*/}
|
||||||
|
{mapper
|
||||||
|
? mapper.providerId! === "full-name-ldap-mapper" && (
|
||||||
|
<LdapMapperFullNameAttribute form={form} />
|
||||||
|
)
|
||||||
|
: ""}
|
||||||
|
{mapper
|
||||||
|
? mapper.providerId! === "hardcoded-ldap-role-mapper" && (
|
||||||
|
<LdapMapperHardcodedLdapRole form={form} />
|
||||||
|
)
|
||||||
|
: ""}
|
||||||
|
{mapper
|
||||||
|
? mapper.providerId! === "hardcoded-ldap-group-mapper" && (
|
||||||
|
<LdapMapperHardcodedLdapGroup form={form} />
|
||||||
|
)
|
||||||
|
: ""}
|
||||||
|
{mapper
|
||||||
|
? mapper.providerId! === "hardcoded-ldap-attribute-mapper" && (
|
||||||
|
<LdapMapperHardcodedLdapAttribute form={form} />
|
||||||
|
)
|
||||||
|
: ""}
|
||||||
|
{mapper
|
||||||
|
? mapper.providerId! === "hardcoded-attribute-mapper" && (
|
||||||
|
<LdapMapperHardcodedAttribute form={form} />
|
||||||
|
)
|
||||||
|
: ""}
|
||||||
|
{mapper
|
||||||
|
? (mapper.providerId! === "role-ldap-mapper" ||
|
||||||
|
mapper.providerId! === "group-ldap-mapper") && (
|
||||||
|
<LdapMapperRoleGroup form={form} type={mapper.providerId} />
|
||||||
|
)
|
||||||
|
: ""}
|
||||||
|
{/* When creating new mappers, load forms based on dropdown selection */}
|
||||||
|
{mapperType
|
||||||
|
? mapperType === "certificate-ldap-mapper" && (
|
||||||
|
<LdapMapperUserAttribute form={form} mapperType={mapperType} />
|
||||||
|
)
|
||||||
|
: ""}
|
||||||
|
{mapperType
|
||||||
|
? mapperType === "user-attribute-ldap-mapper" && (
|
||||||
|
<LdapMapperUserAttribute form={form} mapperType={mapperType} />
|
||||||
|
)
|
||||||
|
: ""}
|
||||||
|
{mapperType
|
||||||
|
? mapperType === "msad-user-account-control-mapper" && (
|
||||||
|
<LdapMapperMsadUserAccount form={form} />
|
||||||
|
)
|
||||||
|
: ""}
|
||||||
|
{mapperType
|
||||||
|
? mapperType === "full-name-ldap-mapper" && (
|
||||||
|
<LdapMapperFullNameAttribute form={form} />
|
||||||
|
)
|
||||||
|
: ""}
|
||||||
|
{mapperType
|
||||||
|
? mapperType === "hardcoded-ldap-role-mapper" && (
|
||||||
|
<LdapMapperHardcodedLdapRole form={form} />
|
||||||
|
)
|
||||||
|
: ""}
|
||||||
|
{mapperType
|
||||||
|
? mapperType === "hardcoded-ldap-group-mapper" && (
|
||||||
|
<LdapMapperHardcodedLdapGroup form={form} />
|
||||||
|
)
|
||||||
|
: ""}
|
||||||
|
{mapperType
|
||||||
|
? mapperType === "hardcoded-ldap-attribute-mapper" && (
|
||||||
|
<LdapMapperHardcodedLdapAttribute form={form} />
|
||||||
|
)
|
||||||
|
: ""}
|
||||||
|
{mapperType
|
||||||
|
? mapperType === "hardcoded-attribute-mapper" && (
|
||||||
|
<LdapMapperHardcodedAttribute form={form} />
|
||||||
|
)
|
||||||
|
: ""}
|
||||||
|
{mapperType
|
||||||
|
? mapperType === "role-ldap-mapper" && (
|
||||||
|
<LdapMapperRoleGroup form={form} type={mapperType} />
|
||||||
|
)
|
||||||
|
: ""}
|
||||||
|
{mapperType
|
||||||
|
? mapperType === "group-ldap-mapper" && (
|
||||||
|
<LdapMapperRoleGroup form={form} type={mapperType} />
|
||||||
|
)
|
||||||
|
: ""}
|
||||||
|
</FormAccess>
|
||||||
|
|
||||||
<Form onSubmit={form.handleSubmit(save)}>
|
<Form onSubmit={form.handleSubmit(save)}>
|
||||||
<ActionGroup>
|
<ActionGroup>
|
||||||
<Button
|
<Button
|
||||||
|
|
|
@ -1,71 +0,0 @@
|
||||||
import { FormGroup, TextInput } from "@patternfly/react-core";
|
|
||||||
import React from "react";
|
|
||||||
import { HelpItem } from "../../../../components/help-enabler/HelpItem";
|
|
||||||
import { UseFormMethods } from "react-hook-form";
|
|
||||||
import { useTranslation } from "react-i18next";
|
|
||||||
|
|
||||||
export type LdapMapperGeneralProps = {
|
|
||||||
form: UseFormMethods;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const LdapMapperGeneral = ({ form }: LdapMapperGeneralProps) => {
|
|
||||||
const { t } = useTranslation("user-federation");
|
|
||||||
const helpText = useTranslation("user-federation-help").t;
|
|
||||||
|
|
||||||
return (
|
|
||||||
<>
|
|
||||||
<FormGroup label={t("common:id")} fieldId="kc-ldap-mapper-id">
|
|
||||||
<TextInput
|
|
||||||
isRequired
|
|
||||||
type="text"
|
|
||||||
id="kc-ldap-mapper-id"
|
|
||||||
data-testid="ldap-mapper-id"
|
|
||||||
name="id"
|
|
||||||
ref={form.register}
|
|
||||||
/>
|
|
||||||
</FormGroup>
|
|
||||||
<FormGroup
|
|
||||||
label={t("common:name")}
|
|
||||||
labelIcon={
|
|
||||||
<HelpItem
|
|
||||||
helpText={helpText("nameHelp")}
|
|
||||||
forLabel={t("common:name")}
|
|
||||||
forID="kc-ldap-mapper-name"
|
|
||||||
/>
|
|
||||||
}
|
|
||||||
fieldId="kc-ldap-mapper-name"
|
|
||||||
isRequired
|
|
||||||
>
|
|
||||||
<TextInput
|
|
||||||
isRequired
|
|
||||||
type="text"
|
|
||||||
id="kc-ldap-mapper-name"
|
|
||||||
data-testid="ldap-mapper-name"
|
|
||||||
name="name"
|
|
||||||
ref={form.register}
|
|
||||||
/>
|
|
||||||
</FormGroup>
|
|
||||||
<FormGroup
|
|
||||||
label={t("common:mapperType")}
|
|
||||||
labelIcon={
|
|
||||||
<HelpItem
|
|
||||||
helpText={helpText("mapperTypeHelp")}
|
|
||||||
forLabel={t("common:mapperType")}
|
|
||||||
forID="kc-ldap-mapper-type"
|
|
||||||
/>
|
|
||||||
}
|
|
||||||
fieldId="kc-ldap-mapper-type"
|
|
||||||
isRequired
|
|
||||||
>
|
|
||||||
<TextInput
|
|
||||||
isRequired
|
|
||||||
type="text"
|
|
||||||
id="kc-ldap-mapper-type"
|
|
||||||
data-testid="ldap-mapper-type"
|
|
||||||
name="providerId"
|
|
||||||
ref={form.register}
|
|
||||||
/>
|
|
||||||
</FormGroup>
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
};
|
|
Loading…
Reference in a new issue