2020-09-17 13:51:40 +00:00
|
|
|
import React from "react";
|
2020-09-22 12:43:51 +00:00
|
|
|
import { useTranslation } from "react-i18next";
|
2020-08-31 18:26:25 +00:00
|
|
|
import {
|
|
|
|
FormGroup,
|
|
|
|
Switch,
|
|
|
|
Checkbox,
|
|
|
|
Grid,
|
|
|
|
GridItem,
|
|
|
|
} from "@patternfly/react-core";
|
2021-02-28 20:02:31 +00:00
|
|
|
import { Controller, useFormContext } from "react-hook-form";
|
2020-10-28 18:17:15 +00:00
|
|
|
import { FormAccess } from "../../components/form-access/FormAccess";
|
2021-02-28 20:02:31 +00:00
|
|
|
import { ClientForm } from "../ClientDetails";
|
2021-03-09 13:59:41 +00:00
|
|
|
import { HelpItem } from "../../components/help-enabler/HelpItem";
|
|
|
|
|
|
|
|
type CapabilityConfigProps = {
|
|
|
|
unWrap?: boolean;
|
|
|
|
protocol?: string;
|
|
|
|
};
|
2020-10-28 18:17:15 +00:00
|
|
|
|
2021-03-09 13:59:41 +00:00
|
|
|
export const CapabilityConfig = ({
|
|
|
|
unWrap,
|
|
|
|
protocol: type,
|
|
|
|
}: CapabilityConfigProps) => {
|
2020-09-17 13:51:40 +00:00
|
|
|
const { t } = useTranslation("clients");
|
2021-03-09 13:59:41 +00:00
|
|
|
const { control, watch } = useFormContext<ClientForm>();
|
|
|
|
const protocol = type || watch("protocol");
|
|
|
|
|
2020-09-17 13:51:40 +00:00
|
|
|
return (
|
2021-03-09 13:59:41 +00:00
|
|
|
<FormAccess isHorizontal role="manage-clients" unWrap={unWrap}>
|
|
|
|
<>
|
|
|
|
{protocol === "openid-connect" && (
|
|
|
|
<>
|
|
|
|
<FormGroup
|
|
|
|
hasNoPaddingTop
|
|
|
|
label={t("clientAuthentication")}
|
|
|
|
fieldId="kc-authentication"
|
|
|
|
>
|
|
|
|
<Controller
|
|
|
|
name="publicClient"
|
|
|
|
defaultValue={false}
|
|
|
|
control={control}
|
|
|
|
render={({ onChange, value }) => (
|
|
|
|
<Switch
|
|
|
|
id="kc-authentication"
|
|
|
|
name="publicClient"
|
|
|
|
label={t("common:on")}
|
|
|
|
labelOff={t("common:off")}
|
|
|
|
isChecked={value}
|
|
|
|
onChange={onChange}
|
|
|
|
/>
|
|
|
|
)}
|
|
|
|
/>
|
|
|
|
</FormGroup>
|
|
|
|
<FormGroup
|
|
|
|
hasNoPaddingTop
|
|
|
|
label={t("clientAuthorization")}
|
|
|
|
fieldId="kc-authorization"
|
|
|
|
>
|
|
|
|
<Controller
|
|
|
|
name="authorizationServicesEnabled"
|
|
|
|
defaultValue={false}
|
|
|
|
control={control}
|
|
|
|
render={({ onChange, value }) => (
|
|
|
|
<Switch
|
|
|
|
id="kc-authorization"
|
|
|
|
name="authorizationServicesEnabled"
|
|
|
|
label={t("common:on")}
|
|
|
|
labelOff={t("common:off")}
|
|
|
|
isChecked={value}
|
|
|
|
onChange={onChange}
|
|
|
|
/>
|
|
|
|
)}
|
|
|
|
/>
|
|
|
|
</FormGroup>
|
|
|
|
<FormGroup
|
|
|
|
hasNoPaddingTop
|
|
|
|
label={t("authenticationFlow")}
|
|
|
|
fieldId="kc-flow"
|
|
|
|
>
|
|
|
|
<Grid>
|
|
|
|
<GridItem lg={4} sm={6}>
|
|
|
|
<Controller
|
|
|
|
name="standardFlowEnabled"
|
|
|
|
defaultValue={false}
|
|
|
|
control={control}
|
|
|
|
render={({ onChange, value }) => (
|
|
|
|
<Checkbox
|
|
|
|
label={t("standardFlow")}
|
|
|
|
id="kc-flow-standard"
|
|
|
|
name="standardFlowEnabled"
|
|
|
|
isChecked={value}
|
|
|
|
onChange={onChange}
|
|
|
|
/>
|
|
|
|
)}
|
|
|
|
/>
|
|
|
|
</GridItem>
|
|
|
|
<GridItem lg={8} sm={6}>
|
|
|
|
<Controller
|
|
|
|
name="directAccessGrantsEnabled"
|
|
|
|
defaultValue={false}
|
|
|
|
control={control}
|
|
|
|
render={({ onChange, value }) => (
|
|
|
|
<Checkbox
|
|
|
|
label={t("directAccess")}
|
|
|
|
id="kc-flow-direct"
|
|
|
|
name="directAccessGrantsEnabled"
|
|
|
|
isChecked={value}
|
|
|
|
onChange={onChange}
|
|
|
|
/>
|
|
|
|
)}
|
|
|
|
/>
|
|
|
|
</GridItem>
|
|
|
|
<GridItem lg={4} sm={6}>
|
|
|
|
<Controller
|
|
|
|
name="implicitFlowEnabled"
|
|
|
|
defaultValue={false}
|
|
|
|
control={control}
|
|
|
|
render={({ onChange, value }) => (
|
|
|
|
<Checkbox
|
|
|
|
label={t("implicitFlow")}
|
|
|
|
id="kc-flow-implicit"
|
|
|
|
name="implicitFlowEnabled"
|
|
|
|
isChecked={value}
|
|
|
|
onChange={onChange}
|
|
|
|
/>
|
|
|
|
)}
|
|
|
|
/>
|
|
|
|
</GridItem>
|
|
|
|
<GridItem lg={8} sm={6}>
|
|
|
|
<Controller
|
|
|
|
name="serviceAccountsEnabled"
|
|
|
|
defaultValue={false}
|
|
|
|
control={control}
|
|
|
|
render={({ onChange, value }) => (
|
|
|
|
<Checkbox
|
|
|
|
label={t("serviceAccount")}
|
|
|
|
id="kc-flow-service-account"
|
|
|
|
name="serviceAccountsEnabled"
|
|
|
|
isChecked={value}
|
|
|
|
onChange={onChange}
|
|
|
|
/>
|
|
|
|
)}
|
|
|
|
/>
|
|
|
|
</GridItem>
|
|
|
|
</Grid>
|
|
|
|
</FormGroup>
|
|
|
|
</>
|
|
|
|
)}
|
|
|
|
</>
|
|
|
|
<>
|
|
|
|
{protocol === "saml" && (
|
|
|
|
<>
|
|
|
|
<FormGroup
|
|
|
|
labelIcon={
|
|
|
|
<HelpItem
|
|
|
|
helpText="clients-help:encryptAssertions"
|
|
|
|
forLabel={t("encryptAssertions")}
|
|
|
|
forID="kc-encrypt"
|
2020-09-17 13:51:40 +00:00
|
|
|
/>
|
2021-03-09 13:59:41 +00:00
|
|
|
}
|
|
|
|
label={t("encryptAssertions")}
|
|
|
|
fieldId="kc-encrypt"
|
|
|
|
>
|
|
|
|
<Controller
|
|
|
|
name="attributes.saml_encrypt"
|
|
|
|
control={control}
|
|
|
|
defaultValue="false"
|
|
|
|
render={({ onChange, value }) => (
|
|
|
|
<Switch
|
|
|
|
id="kc-encrypt"
|
|
|
|
label={t("common:on")}
|
|
|
|
labelOff={t("common:off")}
|
|
|
|
isChecked={value === "true"}
|
|
|
|
onChange={(value) => onChange("" + value)}
|
|
|
|
/>
|
|
|
|
)}
|
|
|
|
/>
|
|
|
|
</FormGroup>
|
|
|
|
<FormGroup
|
|
|
|
labelIcon={
|
|
|
|
<HelpItem
|
|
|
|
helpText="clients-help:clientSignature"
|
|
|
|
forLabel={t("clientSignature")}
|
|
|
|
forID="kc-client-signature"
|
2020-09-17 13:51:40 +00:00
|
|
|
/>
|
2021-03-09 13:59:41 +00:00
|
|
|
}
|
|
|
|
label={t("clientSignature")}
|
|
|
|
fieldId="kc-client-signature"
|
|
|
|
>
|
|
|
|
<Controller
|
|
|
|
name="attributes.saml_client_signature"
|
|
|
|
control={control}
|
|
|
|
defaultValue="false"
|
|
|
|
render={({ onChange, value }) => (
|
|
|
|
<Switch
|
|
|
|
id="kc-client-signature"
|
|
|
|
label={t("common:on")}
|
|
|
|
labelOff={t("common:off")}
|
|
|
|
isChecked={value === "true"}
|
|
|
|
onChange={(value) => onChange("" + value)}
|
|
|
|
/>
|
|
|
|
)}
|
|
|
|
/>
|
|
|
|
</FormGroup>
|
|
|
|
</>
|
|
|
|
)}
|
|
|
|
</>
|
2020-10-28 18:17:15 +00:00
|
|
|
</FormAccess>
|
2020-09-17 13:51:40 +00:00
|
|
|
);
|
|
|
|
};
|