Removed namespaces from messages (#23205)
This commit is contained in:
parent
658c0ef19f
commit
f4c8ded5f6
243 changed files with 982 additions and 1028 deletions
|
@ -1,7 +1,7 @@
|
||||||
import ModalUtils from "../../../../util/ModalUtils";
|
import ModalUtils from "../../../../util/ModalUtils";
|
||||||
|
|
||||||
export default class MoveGroupModal extends ModalUtils {
|
export default class MoveGroupModal extends ModalUtils {
|
||||||
private moveButton = "groups:moveHere-button";
|
private moveButton = "moveHere-button";
|
||||||
private title = ".pf-c-modal-box__title";
|
private title = ".pf-c-modal-box__title";
|
||||||
|
|
||||||
clickRow(groupName: string) {
|
clickRow(groupName: string) {
|
||||||
|
|
|
@ -43,7 +43,7 @@ export default class UserRegistration {
|
||||||
}
|
}
|
||||||
|
|
||||||
export class GroupPickerDialog {
|
export class GroupPickerDialog {
|
||||||
private addButton = "common:add-button";
|
private addButton = "add-button";
|
||||||
private title = ".pf-c-modal-box__title";
|
private title = ".pf-c-modal-box__title";
|
||||||
|
|
||||||
clickRow(groupName: string) {
|
clickRow(groupName: string) {
|
||||||
|
|
|
@ -63,7 +63,7 @@
|
||||||
"testConnection": "Test connection",
|
"testConnection": "Test connection",
|
||||||
"name": "Name",
|
"name": "Name",
|
||||||
"role": "Role",
|
"role": "Role",
|
||||||
"description": "description",
|
"description": "Description",
|
||||||
"type": "Type",
|
"type": "Type",
|
||||||
"category": "Category",
|
"category": "Category",
|
||||||
"priority": "Priority",
|
"priority": "Priority",
|
||||||
|
@ -3273,6 +3273,12 @@
|
||||||
"clientScopesRolesScope": "If there is no role scope mapping defined, each user is permitted to use this client scope. If there are role scope mappings defined, the user must be a member of at least one of the roles.",
|
"clientScopesRolesScope": "If there is no role scope mapping defined, each user is permitted to use this client scope. If there are role scope mappings defined, the user must be a member of at least one of the roles.",
|
||||||
"scopeNameHelp": "Name of the client scope. Must be unique in the realm. Name should not contain space characters as it is used as value of scope parameter",
|
"scopeNameHelp": "Name of the client scope. Must be unique in the realm. Name should not contain space characters as it is used as value of scope parameter",
|
||||||
"scopeDescriptionHelp": "Description of the client scope",
|
"scopeDescriptionHelp": "Description of the client scope",
|
||||||
|
"clientScopeTypes": {
|
||||||
|
"default": "Default",
|
||||||
|
"optional": "Optional",
|
||||||
|
"none": "None"
|
||||||
|
},
|
||||||
|
"realmNameTitle": "{{name}} realm",
|
||||||
"scopeTypeHelp": "Client scopes, which will be added as default scopes to each created client",
|
"scopeTypeHelp": "Client scopes, which will be added as default scopes to each created client",
|
||||||
"clientDescriptionHelp": "Specifies description of the client. For example 'My Client for TimeSheets'. Supports keys for localized values as well. For example: ${my_client_description}",
|
"clientDescriptionHelp": "Specifies description of the client. For example 'My Client for TimeSheets'. Supports keys for localized values as well. For example: ${my_client_description}",
|
||||||
"clientsClientTypeHelp": "'OpenID Connect' allows Clients to verify the identity of the End-User based on the authentication performed by an Authorization Server.'SAML' enables web-based authentication and authorization scenarios including cross-domain single sign-on (SSO) and uses security tokens containing assertions to pass information.",
|
"clientsClientTypeHelp": "'OpenID Connect' allows Clients to verify the identity of the End-User based on the authentication performed by an Authorization Server.'SAML' enables web-based authentication and authorization scenarios including cross-domain single sign-on (SSO) and uses security tokens containing assertions to pass information.",
|
||||||
|
|
|
@ -924,6 +924,7 @@
|
||||||
"titleUsers": "ユーザー",
|
"titleUsers": "ユーザー",
|
||||||
"titleSessions": "セッション",
|
"titleSessions": "セッション",
|
||||||
"authenticationAliasHelp": "この設定の名前を設定します。",
|
"authenticationAliasHelp": "この設定の名前を設定します。",
|
||||||
|
"clientScopeTypes": { "default": "DEFAULT" },
|
||||||
"authenticationFlowTypeHelp": "どの種類のフォームかを設定します。",
|
"authenticationFlowTypeHelp": "どの種類のフォームかを設定します。",
|
||||||
"scopeNameHelp": "クライアント・スコープの名前。レルム内でユニークでなければなりません。スコープ・パラメーターの値として使用されるため、名前には空白文字を含めないでください",
|
"scopeNameHelp": "クライアント・スコープの名前。レルム内でユニークでなければなりません。スコープ・パラメーターの値として使用されるため、名前には空白文字を含めないでください",
|
||||||
"scopeDescriptionHelp": "クライアント・スコープの説明",
|
"scopeDescriptionHelp": "クライアント・スコープの説明",
|
||||||
|
|
|
@ -3246,6 +3246,8 @@
|
||||||
"orderChangeErrorUserFed": "由于{{error}},无法更改用户联盟供应商的优先顺序。",
|
"orderChangeErrorUserFed": "由于{{error}},无法更改用户联盟供应商的优先顺序。",
|
||||||
"authenticationAliasHelp": "配置名称",
|
"authenticationAliasHelp": "配置名称",
|
||||||
"authenticationFlowTypeHelp": "它是一种什么样的形式?",
|
"authenticationFlowTypeHelp": "它是一种什么样的形式?",
|
||||||
|
"clientScopeTypes": { "default": "默认", "optional": "非必需", "none": "无" },
|
||||||
|
"realmNameTitle": "{{name}} 领域",
|
||||||
"authenticationCreateFlowHelp": "创建流程",
|
"authenticationCreateFlowHelp": "创建流程",
|
||||||
"scopeNameHelp": "客户端作用域的名称。在领域中必须是唯一的。名称不应包含空格字符,因为它用作作用域参数的值。",
|
"scopeNameHelp": "客户端作用域的名称。在领域中必须是唯一的。名称不应包含空格字符,因为它用作作用域参数的值。",
|
||||||
"scopeDescriptionHelp": "客户作用域说明",
|
"scopeDescriptionHelp": "客户作用域说明",
|
||||||
|
|
|
@ -137,7 +137,7 @@ export default function AuthenticationSection() {
|
||||||
<strong>{{ flow: selectedFlow ? selectedFlow.alias : "" }}</strong>.
|
<strong>{{ flow: selectedFlow ? selectedFlow.alias : "" }}</strong>.
|
||||||
</Trans>
|
</Trans>
|
||||||
),
|
),
|
||||||
continueButtonLabel: "common:delete",
|
continueButtonLabel: "delete",
|
||||||
continueButtonVariant: ButtonVariant.danger,
|
continueButtonVariant: ButtonVariant.danger,
|
||||||
onConfirm: async () => {
|
onConfirm: async () => {
|
||||||
try {
|
try {
|
||||||
|
@ -234,7 +234,7 @@ export default function AuthenticationSection() {
|
||||||
...(!data.builtIn && !data.usedBy
|
...(!data.builtIn && !data.usedBy
|
||||||
? [
|
? [
|
||||||
{
|
{
|
||||||
title: t("common:delete"),
|
title: t("delete"),
|
||||||
onClick: () => {
|
onClick: () => {
|
||||||
setSelectedFlow(data);
|
setSelectedFlow(data);
|
||||||
toggleDeleteDialog();
|
toggleDeleteDialog();
|
||||||
|
@ -258,7 +258,7 @@ export default function AuthenticationSection() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "description",
|
name: "description",
|
||||||
displayKey: "common:description",
|
displayKey: "description",
|
||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
emptyState={
|
emptyState={
|
||||||
|
|
|
@ -58,7 +58,7 @@ export const BindFlowDialog = ({ flowAlias, onClose }: BindFlowDialogProps) => {
|
||||||
onClose={onClose}
|
onClose={onClose}
|
||||||
actions={[
|
actions={[
|
||||||
<Button key="confirm" data-testid="save" type="submit" form="bind-form">
|
<Button key="confirm" data-testid="save" type="submit" form="bind-form">
|
||||||
{t("common:save")}
|
{t("save")}
|
||||||
</Button>,
|
</Button>,
|
||||||
<Button
|
<Button
|
||||||
data-testid="cancel"
|
data-testid="cancel"
|
||||||
|
@ -66,7 +66,7 @@ export const BindFlowDialog = ({ flowAlias, onClose }: BindFlowDialogProps) => {
|
||||||
variant={ButtonVariant.link}
|
variant={ButtonVariant.link}
|
||||||
onClick={onClose}
|
onClick={onClose}
|
||||||
>
|
>
|
||||||
{t("common:cancel")}
|
{t("cancel")}
|
||||||
</Button>,
|
</Button>,
|
||||||
]}
|
]}
|
||||||
isOpen
|
isOpen
|
||||||
|
|
|
@ -96,7 +96,7 @@ export const DuplicateFlowModal = ({
|
||||||
variant={ButtonVariant.link}
|
variant={ButtonVariant.link}
|
||||||
onClick={toggleDialog}
|
onClick={toggleDialog}
|
||||||
>
|
>
|
||||||
{t("common:cancel")}
|
{t("cancel")}
|
||||||
</Button>,
|
</Button>,
|
||||||
]}
|
]}
|
||||||
isOpen
|
isOpen
|
||||||
|
|
|
@ -61,7 +61,7 @@ export const EditFlowModal = ({ flow, toggleDialog }: EditFlowModalProps) => {
|
||||||
variant={ButtonVariant.link}
|
variant={ButtonVariant.link}
|
||||||
onClick={() => toggleDialog()}
|
onClick={() => toggleDialog()}
|
||||||
>
|
>
|
||||||
{t("common:cancel")}
|
{t("cancel")}
|
||||||
</Button>,
|
</Button>,
|
||||||
]}
|
]}
|
||||||
isOpen
|
isOpen
|
||||||
|
|
|
@ -81,7 +81,7 @@ export default function FlowDetails() {
|
||||||
const flows = await adminClient.authenticationManagement.getFlows();
|
const flows = await adminClient.authenticationManagement.getFlows();
|
||||||
const flow = flows.find((f) => f.id === id);
|
const flow = flows.find((f) => f.id === id);
|
||||||
if (!flow) {
|
if (!flow) {
|
||||||
throw new Error(t("common:notFound"));
|
throw new Error(t("notFound"));
|
||||||
}
|
}
|
||||||
|
|
||||||
const executions =
|
const executions =
|
||||||
|
@ -206,7 +206,7 @@ export default function FlowDetails() {
|
||||||
<strong>{{ name: selectedExecution?.displayName }}</strong>.
|
<strong>{{ name: selectedExecution?.displayName }}</strong>.
|
||||||
</Trans>
|
</Trans>
|
||||||
),
|
),
|
||||||
continueButtonLabel: "common:delete",
|
continueButtonLabel: "delete",
|
||||||
continueButtonVariant: ButtonVariant.danger,
|
continueButtonVariant: ButtonVariant.danger,
|
||||||
onConfirm: async () => {
|
onConfirm: async () => {
|
||||||
try {
|
try {
|
||||||
|
@ -229,7 +229,7 @@ export default function FlowDetails() {
|
||||||
<strong>{{ flow: flow?.alias || "" }}</strong>.
|
<strong>{{ flow: flow?.alias || "" }}</strong>.
|
||||||
</Trans>
|
</Trans>
|
||||||
),
|
),
|
||||||
continueButtonLabel: "common:delete",
|
continueButtonLabel: "delete",
|
||||||
continueButtonVariant: ButtonVariant.danger,
|
continueButtonVariant: ButtonVariant.danger,
|
||||||
onConfirm: async () => {
|
onConfirm: async () => {
|
||||||
try {
|
try {
|
||||||
|
@ -275,7 +275,7 @@ export default function FlowDetails() {
|
||||||
key="delete"
|
key="delete"
|
||||||
onClick={() => toggleDeleteFlow()}
|
onClick={() => toggleDeleteFlow()}
|
||||||
>
|
>
|
||||||
{t("common:delete")}
|
{t("delete")}
|
||||||
</DropdownItem>,
|
</DropdownItem>,
|
||||||
]
|
]
|
||||||
: []),
|
: []),
|
||||||
|
@ -377,7 +377,7 @@ export default function FlowDetails() {
|
||||||
onDragFinish={(order) => {
|
onDragFinish={(order) => {
|
||||||
const withoutHeaderId = order.slice(1);
|
const withoutHeaderId = order.slice(1);
|
||||||
setLiveText(
|
setLiveText(
|
||||||
t("common:onDragFinish", { list: dragged?.displayName }),
|
t("onDragFinish", { list: dragged?.displayName }),
|
||||||
);
|
);
|
||||||
const change = executionList.getChange(
|
const change = executionList.getChange(
|
||||||
dragged!,
|
dragged!,
|
||||||
|
@ -387,9 +387,7 @@ export default function FlowDetails() {
|
||||||
}}
|
}}
|
||||||
onDragStart={(id) => {
|
onDragStart={(id) => {
|
||||||
const item = executionList.findExecution(id)!;
|
const item = executionList.findExecution(id)!;
|
||||||
setLiveText(
|
setLiveText(t("onDragStart", { item: item.displayName }));
|
||||||
t("common:onDragStart", { item: item.displayName }),
|
|
||||||
);
|
|
||||||
setDragged(item);
|
setDragged(item);
|
||||||
if (!item.isCollapsed) {
|
if (!item.isCollapsed) {
|
||||||
item.isCollapsed = true;
|
item.isCollapsed = true;
|
||||||
|
@ -397,11 +395,9 @@ export default function FlowDetails() {
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
onDragMove={() =>
|
onDragMove={() =>
|
||||||
setLiveText(
|
setLiveText(t("onDragMove", { item: dragged?.displayName }))
|
||||||
t("common:onDragMove", { item: dragged?.displayName }),
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
onDragCancel={() => setLiveText(t("common:onDragCancel"))}
|
onDragCancel={() => setLiveText(t("onDragCancel"))}
|
||||||
itemOrder={[
|
itemOrder={[
|
||||||
"header",
|
"header",
|
||||||
...executionList.order().map((ex) => ex.id!),
|
...executionList.order().map((ex) => ex.id!),
|
||||||
|
|
|
@ -135,12 +135,12 @@ export const RequiredActions = () => {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "enabled",
|
name: "enabled",
|
||||||
displayKey: "common:enabled",
|
displayKey: "enabled",
|
||||||
cellRenderer: (row) => (
|
cellRenderer: (row) => (
|
||||||
<Switch
|
<Switch
|
||||||
id={`enable-${toKey(row.name)}`}
|
id={`enable-${toKey(row.name)}`}
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={row.enabled}
|
isChecked={row.enabled}
|
||||||
onChange={() => {
|
onChange={() => {
|
||||||
updateAction(row.data, "enabled");
|
updateAction(row.data, "enabled");
|
||||||
|
@ -156,9 +156,9 @@ export const RequiredActions = () => {
|
||||||
cellRenderer: (row) => (
|
cellRenderer: (row) => (
|
||||||
<Switch
|
<Switch
|
||||||
id={`default-${toKey(row.name)}`}
|
id={`default-${toKey(row.name)}`}
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
isDisabled={!row.enabled}
|
isDisabled={!row.enabled}
|
||||||
labelOff={!row.enabled ? t("disabledOff") : t("common:off")}
|
labelOff={!row.enabled ? t("disabledOff") : t("off")}
|
||||||
isChecked={row.defaultAction}
|
isChecked={row.defaultAction}
|
||||||
onChange={() => {
|
onChange={() => {
|
||||||
updateAction(row.data, "defaultAction");
|
updateAction(row.data, "defaultAction");
|
||||||
|
|
|
@ -45,7 +45,7 @@ export const AddFlowDropdown = ({
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Tooltip content={t("common:add")}>
|
<Tooltip content={t("add")}>
|
||||||
<>
|
<>
|
||||||
<Dropdown
|
<Dropdown
|
||||||
isPlain
|
isPlain
|
||||||
|
@ -53,7 +53,7 @@ export const AddFlowDropdown = ({
|
||||||
data-testid={`${execution.displayName}-edit-dropdown`}
|
data-testid={`${execution.displayName}-edit-dropdown`}
|
||||||
isOpen={open}
|
isOpen={open}
|
||||||
toggle={
|
toggle={
|
||||||
<DropdownToggle onToggle={setOpen} aria-label={t("common:add")}>
|
<DropdownToggle onToggle={setOpen} aria-label={t("add")}>
|
||||||
<PlusIcon />
|
<PlusIcon />
|
||||||
</DropdownToggle>
|
</DropdownToggle>
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,11 +45,11 @@ export const EditFlow = ({ execution, onRowChange }: EditFlowProps) => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Tooltip content={t("common:edit")}>
|
<Tooltip content={t("edit")}>
|
||||||
<Button
|
<Button
|
||||||
variant="plain"
|
variant="plain"
|
||||||
data-testid={`${execution.id}-edit`}
|
data-testid={`${execution.id}-edit`}
|
||||||
aria-label={t("common:edit")}
|
aria-label={t("edit")}
|
||||||
onClick={toggle}
|
onClick={toggle}
|
||||||
>
|
>
|
||||||
<PencilAltIcon />
|
<PencilAltIcon />
|
||||||
|
@ -76,7 +76,7 @@ export const EditFlow = ({ execution, onRowChange }: EditFlowProps) => {
|
||||||
variant={ButtonVariant.link}
|
variant={ButtonVariant.link}
|
||||||
onClick={toggle}
|
onClick={toggle}
|
||||||
>
|
>
|
||||||
{t("common:cancel")}
|
{t("cancel")}
|
||||||
</Button>,
|
</Button>,
|
||||||
]}
|
]}
|
||||||
isOpen
|
isOpen
|
||||||
|
@ -87,9 +87,9 @@ export const EditFlow = ({ execution, onRowChange }: EditFlowProps) => {
|
||||||
isHorizontal
|
isHorizontal
|
||||||
>
|
>
|
||||||
<FormGroup
|
<FormGroup
|
||||||
label={t("common:name")}
|
label={t("name")}
|
||||||
fieldId="name"
|
fieldId="name"
|
||||||
helperTextInvalid={t("common:required")}
|
helperTextInvalid={t("required")}
|
||||||
validated={
|
validated={
|
||||||
errors.displayName
|
errors.displayName
|
||||||
? ValidatedOptions.error
|
? ValidatedOptions.error
|
||||||
|
@ -113,7 +113,7 @@ export const EditFlow = ({ execution, onRowChange }: EditFlowProps) => {
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
<FormGroup
|
<FormGroup
|
||||||
label={t("common:description")}
|
label={t("description")}
|
||||||
fieldId="kc-description"
|
fieldId="kc-description"
|
||||||
labelIcon={
|
labelIcon={
|
||||||
<HelpItem
|
<HelpItem
|
||||||
|
@ -139,7 +139,7 @@ export const EditFlow = ({ execution, onRowChange }: EditFlowProps) => {
|
||||||
{...register("description", {
|
{...register("description", {
|
||||||
maxLength: {
|
maxLength: {
|
||||||
value: 255,
|
value: 255,
|
||||||
message: t("common:maxLength", { length: 255 }),
|
message: t("maxLength", { length: 255 }),
|
||||||
},
|
},
|
||||||
})}
|
})}
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -113,10 +113,10 @@ export const ExecutionConfigModal = ({
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Tooltip content={t("common:settings")}>
|
<Tooltip content={t("settings")}>
|
||||||
<Button
|
<Button
|
||||||
variant="plain"
|
variant="plain"
|
||||||
aria-label={t("common:settings")}
|
aria-label={t("settings")}
|
||||||
onClick={() => setShow(true)}
|
onClick={() => setShow(true)}
|
||||||
>
|
>
|
||||||
<CogIcon />
|
<CogIcon />
|
||||||
|
@ -133,7 +133,7 @@ export const ExecutionConfigModal = ({
|
||||||
<FormGroup
|
<FormGroup
|
||||||
label={t("alias")}
|
label={t("alias")}
|
||||||
fieldId="alias"
|
fieldId="alias"
|
||||||
helperTextInvalid={t("common:required")}
|
helperTextInvalid={t("required")}
|
||||||
validated={
|
validated={
|
||||||
errors.alias ? ValidatedOptions.error : ValidatedOptions.default
|
errors.alias ? ValidatedOptions.error : ValidatedOptions.default
|
||||||
}
|
}
|
||||||
|
@ -165,7 +165,7 @@ export const ExecutionConfigModal = ({
|
||||||
</FormProvider>
|
</FormProvider>
|
||||||
<ActionGroup>
|
<ActionGroup>
|
||||||
<Button data-testid="save" variant="primary" type="submit">
|
<Button data-testid="save" variant="primary" type="submit">
|
||||||
{t("common:save")}
|
{t("save")}
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
data-testid="cancel"
|
data-testid="cancel"
|
||||||
|
@ -174,7 +174,7 @@ export const ExecutionConfigModal = ({
|
||||||
setShow(false);
|
setShow(false);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{t("common:cancel")}
|
{t("cancel")}
|
||||||
</Button>
|
</Button>
|
||||||
{config && (
|
{config && (
|
||||||
<Button
|
<Button
|
||||||
|
@ -189,7 +189,7 @@ export const ExecutionConfigModal = ({
|
||||||
setShow(false);
|
setShow(false);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{t("common:clear")} <TrashIcon />
|
{t("clear")} <TrashIcon />
|
||||||
</Button>
|
</Button>
|
||||||
)}
|
)}
|
||||||
</ActionGroup>
|
</ActionGroup>
|
||||||
|
|
|
@ -16,7 +16,7 @@ export const FlowHeader = () => {
|
||||||
<DataListItemRow>
|
<DataListItemRow>
|
||||||
<DataListDragButton
|
<DataListDragButton
|
||||||
className="keycloak__authentication__header-drag-button"
|
className="keycloak__authentication__header-drag-button"
|
||||||
aria-label={t("common:disabled")}
|
aria-label={t("disabled")}
|
||||||
/>
|
/>
|
||||||
<DataListItemCells
|
<DataListItemCells
|
||||||
className="keycloak__authentication__header"
|
className="keycloak__authentication__header"
|
||||||
|
|
|
@ -65,7 +65,7 @@ export const FlowRow = ({
|
||||||
aria-labelledby={execution.id}
|
aria-labelledby={execution.id}
|
||||||
>
|
>
|
||||||
<DataListControl>
|
<DataListControl>
|
||||||
<DataListDragButton aria-label={t("common-help:dragHelp")} />
|
<DataListDragButton aria-label={t("dragHelp")} />
|
||||||
</DataListControl>
|
</DataListControl>
|
||||||
{hasSubList && (
|
{hasSubList && (
|
||||||
<DataListToggle
|
<DataListToggle
|
||||||
|
@ -116,11 +116,11 @@ export const FlowRow = ({
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
{!builtIn && (
|
{!builtIn && (
|
||||||
<Tooltip content={t("common:delete")}>
|
<Tooltip content={t("delete")}>
|
||||||
<Button
|
<Button
|
||||||
variant="plain"
|
variant="plain"
|
||||||
data-testid={`${execution.displayName}-delete`}
|
data-testid={`${execution.displayName}-delete`}
|
||||||
aria-label={t("common:delete")}
|
aria-label={t("delete")}
|
||||||
onClick={() => onDelete(execution)}
|
onClick={() => onDelete(execution)}
|
||||||
>
|
>
|
||||||
<TrashIcon />
|
<TrashIcon />
|
||||||
|
|
|
@ -75,7 +75,7 @@ const UsedByModal = ({ id, isSpecificClient, onClose }: UsedByModalProps) => {
|
||||||
key="cancel"
|
key="cancel"
|
||||||
onClick={onClose}
|
onClick={onClose}
|
||||||
>
|
>
|
||||||
{t("common:close")}
|
{t("close")}
|
||||||
</Button>,
|
</Button>,
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
|
@ -83,7 +83,7 @@ const UsedByModal = ({ id, isSpecificClient, onClose }: UsedByModalProps) => {
|
||||||
loader={loader}
|
loader={loader}
|
||||||
isPaginated
|
isPaginated
|
||||||
ariaLabelKey="usedBy"
|
ariaLabelKey="usedBy"
|
||||||
searchPlaceholderKey="common:search"
|
searchPlaceholderKey="search"
|
||||||
columns={[
|
columns={[
|
||||||
{
|
{
|
||||||
name: "name",
|
name: "name",
|
||||||
|
|
|
@ -114,7 +114,7 @@ export const AddStepModal = ({ name, type, onSelect }: AddStepModalProps) => {
|
||||||
key="add"
|
key="add"
|
||||||
onClick={() => onSelect(value)}
|
onClick={() => onSelect(value)}
|
||||||
>
|
>
|
||||||
{t("common:add")}
|
{t("add")}
|
||||||
</Button>,
|
</Button>,
|
||||||
<Button
|
<Button
|
||||||
data-testid="cancel"
|
data-testid="cancel"
|
||||||
|
@ -125,7 +125,7 @@ export const AddStepModal = ({ name, type, onSelect }: AddStepModalProps) => {
|
||||||
onSelect();
|
onSelect();
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{t("common:cancel")}
|
{t("cancel")}
|
||||||
</Button>,
|
</Button>,
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
|
@ -141,7 +141,7 @@ export const AddStepModal = ({ name, type, onSelect }: AddStepModalProps) => {
|
||||||
setMax(max);
|
setMax(max);
|
||||||
}}
|
}}
|
||||||
inputGroupName="search"
|
inputGroupName="search"
|
||||||
inputGroupPlaceholder={t("common:search")}
|
inputGroupPlaceholder={t("search")}
|
||||||
inputGroupOnEnter={setSearch}
|
inputGroupOnEnter={setSearch}
|
||||||
>
|
>
|
||||||
<AuthenticationProviderList
|
<AuthenticationProviderList
|
||||||
|
|
|
@ -77,7 +77,7 @@ export const AddSubFlowModal = ({
|
||||||
type="submit"
|
type="submit"
|
||||||
form="sub-flow-form"
|
form="sub-flow-form"
|
||||||
>
|
>
|
||||||
{t("common:add")}
|
{t("add")}
|
||||||
</Button>,
|
</Button>,
|
||||||
<Button
|
<Button
|
||||||
key="cancel"
|
key="cancel"
|
||||||
|
@ -85,16 +85,16 @@ export const AddSubFlowModal = ({
|
||||||
variant={ButtonVariant.link}
|
variant={ButtonVariant.link}
|
||||||
onClick={onCancel}
|
onClick={onCancel}
|
||||||
>
|
>
|
||||||
{t("common:cancel")}
|
{t("cancel")}
|
||||||
</Button>,
|
</Button>,
|
||||||
]}
|
]}
|
||||||
isOpen
|
isOpen
|
||||||
>
|
>
|
||||||
<Form id="sub-flow-form" onSubmit={handleSubmit(onConfirm)} isHorizontal>
|
<Form id="sub-flow-form" onSubmit={handleSubmit(onConfirm)} isHorizontal>
|
||||||
<FormGroup
|
<FormGroup
|
||||||
label={t("common:name")}
|
label={t("name")}
|
||||||
fieldId="name"
|
fieldId="name"
|
||||||
helperTextInvalid={t("common:required")}
|
helperTextInvalid={t("required")}
|
||||||
validated={
|
validated={
|
||||||
errors.name ? ValidatedOptions.error : ValidatedOptions.default
|
errors.name ? ValidatedOptions.error : ValidatedOptions.default
|
||||||
}
|
}
|
||||||
|
@ -113,7 +113,7 @@ export const AddSubFlowModal = ({
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
<FormGroup
|
<FormGroup
|
||||||
label={t("common:description")}
|
label={t("description")}
|
||||||
fieldId="description"
|
fieldId="description"
|
||||||
labelIcon={
|
labelIcon={
|
||||||
<HelpItem
|
<HelpItem
|
||||||
|
|
|
@ -65,7 +65,7 @@ export default function CreateFlow() {
|
||||||
<FlowType />
|
<FlowType />
|
||||||
<ActionGroup>
|
<ActionGroup>
|
||||||
<Button data-testid="create" type="submit">
|
<Button data-testid="create" type="submit">
|
||||||
{t("common:create")}
|
{t("create")}
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
data-testid="cancel"
|
data-testid="cancel"
|
||||||
|
@ -74,7 +74,7 @@ export default function CreateFlow() {
|
||||||
<Link {...props} to={toAuthentication({ realm })}></Link>
|
<Link {...props} to={toAuthentication({ realm })}></Link>
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
{t("common:cancel")}
|
{t("cancel")}
|
||||||
</Button>
|
</Button>
|
||||||
</ActionGroup>
|
</ActionGroup>
|
||||||
</FormAccess>
|
</FormAccess>
|
||||||
|
|
|
@ -17,9 +17,9 @@ export const NameDescription = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<FormGroup
|
<FormGroup
|
||||||
label={t("common:name")}
|
label={t("name")}
|
||||||
fieldId="kc-name"
|
fieldId="kc-name"
|
||||||
helperTextInvalid={t("common:required")}
|
helperTextInvalid={t("required")}
|
||||||
validated={
|
validated={
|
||||||
errors.alias ? ValidatedOptions.error : ValidatedOptions.default
|
errors.alias ? ValidatedOptions.error : ValidatedOptions.default
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,7 @@ export const NameDescription = () => {
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
<FormGroup
|
<FormGroup
|
||||||
label={t("common:description")}
|
label={t("description")}
|
||||||
fieldId="kc-description"
|
fieldId="kc-description"
|
||||||
labelIcon={
|
labelIcon={
|
||||||
<HelpItem
|
<HelpItem
|
||||||
|
@ -62,7 +62,7 @@ export const NameDescription = () => {
|
||||||
{...register("description", {
|
{...register("description", {
|
||||||
maxLength: {
|
maxLength: {
|
||||||
value: 255,
|
value: 255,
|
||||||
message: t("common:maxLength", { length: 255 }),
|
message: t("maxLength", { length: 255 }),
|
||||||
},
|
},
|
||||||
})}
|
})}
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -154,23 +154,23 @@ export const CibaPolicy = ({ realm, realmUpdated }: CibaPolicyProps) => {
|
||||||
{...register("attributes.cibaExpiresIn", {
|
{...register("attributes.cibaExpiresIn", {
|
||||||
min: {
|
min: {
|
||||||
value: CIBA_EXPIRES_IN_MIN,
|
value: CIBA_EXPIRES_IN_MIN,
|
||||||
message: t("common:greaterThan", {
|
message: t("greaterThan", {
|
||||||
value: CIBA_EXPIRES_IN_MIN,
|
value: CIBA_EXPIRES_IN_MIN,
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
max: {
|
max: {
|
||||||
value: CIBA_EXPIRES_IN_MAX,
|
value: CIBA_EXPIRES_IN_MAX,
|
||||||
message: t("common:lessThan", { value: CIBA_EXPIRES_IN_MAX }),
|
message: t("lessThan", { value: CIBA_EXPIRES_IN_MAX }),
|
||||||
},
|
},
|
||||||
required: {
|
required: {
|
||||||
value: true,
|
value: true,
|
||||||
message: t("common:required"),
|
message: t("required"),
|
||||||
},
|
},
|
||||||
})}
|
})}
|
||||||
validated={errors.attributes?.cibaExpiresIn ? "error" : "default"}
|
validated={errors.attributes?.cibaExpiresIn ? "error" : "default"}
|
||||||
/>
|
/>
|
||||||
<InputGroupText variant="plain">
|
<InputGroupText variant="plain">
|
||||||
{t("common:times:seconds")}
|
{t("times:seconds")}
|
||||||
</InputGroupText>
|
</InputGroupText>
|
||||||
</InputGroup>
|
</InputGroup>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
|
@ -196,23 +196,23 @@ export const CibaPolicy = ({ realm, realmUpdated }: CibaPolicyProps) => {
|
||||||
{...register("attributes.cibaInterval", {
|
{...register("attributes.cibaInterval", {
|
||||||
min: {
|
min: {
|
||||||
value: CIBA_INTERVAL_MIN,
|
value: CIBA_INTERVAL_MIN,
|
||||||
message: t("common:greaterThan", {
|
message: t("greaterThan", {
|
||||||
value: CIBA_INTERVAL_MIN,
|
value: CIBA_INTERVAL_MIN,
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
max: {
|
max: {
|
||||||
value: CIBA_INTERVAL_MAX,
|
value: CIBA_INTERVAL_MAX,
|
||||||
message: t("common:lessThan", { value: CIBA_INTERVAL_MAX }),
|
message: t("lessThan", { value: CIBA_INTERVAL_MAX }),
|
||||||
},
|
},
|
||||||
required: {
|
required: {
|
||||||
value: true,
|
value: true,
|
||||||
message: t("common:required"),
|
message: t("required"),
|
||||||
},
|
},
|
||||||
})}
|
})}
|
||||||
validated={errors.attributes?.cibaInterval ? "error" : "default"}
|
validated={errors.attributes?.cibaInterval ? "error" : "default"}
|
||||||
/>
|
/>
|
||||||
<InputGroupText variant="plain">
|
<InputGroupText variant="plain">
|
||||||
{t("common:times:seconds")}
|
{t("times:seconds")}
|
||||||
</InputGroupText>
|
</InputGroupText>
|
||||||
</InputGroup>
|
</InputGroup>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
|
@ -247,14 +247,14 @@ export const CibaPolicy = ({ realm, realmUpdated }: CibaPolicyProps) => {
|
||||||
type="submit"
|
type="submit"
|
||||||
isDisabled={!isValid || !isDirty}
|
isDisabled={!isValid || !isDirty}
|
||||||
>
|
>
|
||||||
{t("common:save")}
|
{t("save")}
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
data-testid="reload"
|
data-testid="reload"
|
||||||
variant={ButtonVariant.link}
|
variant={ButtonVariant.link}
|
||||||
onClick={() => setupForm({ ...realm })}
|
onClick={() => setupForm({ ...realm })}
|
||||||
>
|
>
|
||||||
{t("common:reload")}
|
{t("reload")}
|
||||||
</Button>
|
</Button>
|
||||||
</ActionGroup>
|
</ActionGroup>
|
||||||
</FormAccess>
|
</FormAccess>
|
||||||
|
|
|
@ -360,8 +360,8 @@ export const OtpPolicy = ({ realm, realmUpdated }: OtpPolicyProps) => {
|
||||||
render={({ field }) => (
|
render={({ field }) => (
|
||||||
<Switch
|
<Switch
|
||||||
id="otpPolicyCodeReusable"
|
id="otpPolicyCodeReusable"
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={field.value}
|
isChecked={field.value}
|
||||||
onChange={field.onChange}
|
onChange={field.onChange}
|
||||||
/>
|
/>
|
||||||
|
@ -377,14 +377,14 @@ export const OtpPolicy = ({ realm, realmUpdated }: OtpPolicyProps) => {
|
||||||
type="submit"
|
type="submit"
|
||||||
isDisabled={!isValid || !isDirty}
|
isDisabled={!isValid || !isDirty}
|
||||||
>
|
>
|
||||||
{t("common:save")}
|
{t("save")}
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
data-testid="reload"
|
data-testid="reload"
|
||||||
variant={ButtonVariant.link}
|
variant={ButtonVariant.link}
|
||||||
onClick={() => reset({ ...realm })}
|
onClick={() => reset({ ...realm })}
|
||||||
>
|
>
|
||||||
{t("common:reload")}
|
{t("reload")}
|
||||||
</Button>
|
</Button>
|
||||||
</ActionGroup>
|
</ActionGroup>
|
||||||
</FormAccess>
|
</FormAccess>
|
||||||
|
|
|
@ -164,14 +164,14 @@ export const PasswordPolicy = ({
|
||||||
type="submit"
|
type="submit"
|
||||||
isDisabled={!isDirty}
|
isDisabled={!isDirty}
|
||||||
>
|
>
|
||||||
{t("common:save")}
|
{t("save")}
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
data-testid="reload"
|
data-testid="reload"
|
||||||
variant={ButtonVariant.link}
|
variant={ButtonVariant.link}
|
||||||
onClick={() => setupForm(realm)}
|
onClick={() => setupForm(realm)}
|
||||||
>
|
>
|
||||||
{t("common:reload")}
|
{t("reload")}
|
||||||
</Button>
|
</Button>
|
||||||
</ActionGroup>
|
</ActionGroup>
|
||||||
</FormAccess>
|
</FormAccess>
|
||||||
|
|
|
@ -22,7 +22,7 @@ export const Policies = () => {
|
||||||
async () => {
|
async () => {
|
||||||
const realm = await adminClient.realms.findOne({ realm: realmName });
|
const realm = await adminClient.realms.findOne({ realm: realmName });
|
||||||
if (!realm) {
|
if (!realm) {
|
||||||
throw new Error(t("common:notFound"));
|
throw new Error(t("notFound"));
|
||||||
}
|
}
|
||||||
return realm;
|
return realm;
|
||||||
},
|
},
|
||||||
|
|
|
@ -38,7 +38,7 @@ export const PolicyRow = ({
|
||||||
label={displayName}
|
label={displayName}
|
||||||
fieldId={id!}
|
fieldId={id!}
|
||||||
isRequired
|
isRequired
|
||||||
helperTextInvalid={t("common:required")}
|
helperTextInvalid={t("required")}
|
||||||
validated={
|
validated={
|
||||||
errors[id!] ? ValidatedOptions.error : ValidatedOptions.default
|
errors[id!] ? ValidatedOptions.error : ValidatedOptions.default
|
||||||
}
|
}
|
||||||
|
@ -93,8 +93,8 @@ export const PolicyRow = ({
|
||||||
{!configType && (
|
{!configType && (
|
||||||
<Switch
|
<Switch
|
||||||
id={id!}
|
id={id!}
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked
|
isChecked
|
||||||
isDisabled
|
isDisabled
|
||||||
aria-label={displayName}
|
aria-label={displayName}
|
||||||
|
@ -107,7 +107,7 @@ export const PolicyRow = ({
|
||||||
variant="link"
|
variant="link"
|
||||||
className="keycloak__policies_authentication__minus-icon"
|
className="keycloak__policies_authentication__minus-icon"
|
||||||
onClick={() => onRemove(id)}
|
onClick={() => onRemove(id)}
|
||||||
aria-label={t("common:remove")}
|
aria-label={t("remove")}
|
||||||
>
|
>
|
||||||
<MinusCircleIcon />
|
<MinusCircleIcon />
|
||||||
</Button>
|
</Button>
|
||||||
|
|
|
@ -212,7 +212,7 @@ export const WebauthnPolicy = ({
|
||||||
<FormGroup
|
<FormGroup
|
||||||
label={t("webAuthnPolicyRpEntityName")}
|
label={t("webAuthnPolicyRpEntityName")}
|
||||||
fieldId="webAuthnPolicyRpEntityName"
|
fieldId="webAuthnPolicyRpEntityName"
|
||||||
helperTextInvalid={t("common:required")}
|
helperTextInvalid={t("required")}
|
||||||
validated={errors.webAuthnPolicyRpEntityName ? "error" : "default"}
|
validated={errors.webAuthnPolicyRpEntityName ? "error" : "default"}
|
||||||
isRequired
|
isRequired
|
||||||
labelIcon={
|
labelIcon={
|
||||||
|
@ -324,8 +324,8 @@ export const WebauthnPolicy = ({
|
||||||
render={({ field }) => (
|
render={({ field }) => (
|
||||||
<Switch
|
<Switch
|
||||||
id="webAuthnPolicyAvoidSameAuthenticatorRegister"
|
id="webAuthnPolicyAvoidSameAuthenticatorRegister"
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={field.value}
|
isChecked={field.value}
|
||||||
onChange={field.onChange}
|
onChange={field.onChange}
|
||||||
aria-label={t("webAuthnPolicyAvoidSameAuthenticatorRegister")}
|
aria-label={t("webAuthnPolicyAvoidSameAuthenticatorRegister")}
|
||||||
|
@ -358,14 +358,14 @@ export const WebauthnPolicy = ({
|
||||||
type="submit"
|
type="submit"
|
||||||
isDisabled={!isDirty}
|
isDisabled={!isDirty}
|
||||||
>
|
>
|
||||||
{t("common:save")}
|
{t("save")}
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
data-testid="reload"
|
data-testid="reload"
|
||||||
variant={ButtonVariant.link}
|
variant={ButtonVariant.link}
|
||||||
onClick={() => setupForm(realm)}
|
onClick={() => setupForm(realm)}
|
||||||
>
|
>
|
||||||
{t("common:reload")}
|
{t("reload")}
|
||||||
</Button>
|
</Button>
|
||||||
</ActionGroup>
|
</ActionGroup>
|
||||||
</FormAccess>
|
</FormAccess>
|
||||||
|
|
|
@ -154,7 +154,7 @@ export default function ClientScopesSection() {
|
||||||
name: selectedScopes[0]?.name,
|
name: selectedScopes[0]?.name,
|
||||||
}),
|
}),
|
||||||
messageKey: "deleteConfirmClientScopes",
|
messageKey: "deleteConfirmClientScopes",
|
||||||
continueButtonLabel: "common:delete",
|
continueButtonLabel: "delete",
|
||||||
continueButtonVariant: ButtonVariant.danger,
|
continueButtonVariant: ButtonVariant.danger,
|
||||||
onConfirm: async () => {
|
onConfirm: async () => {
|
||||||
try {
|
try {
|
||||||
|
@ -258,7 +258,7 @@ export default function ClientScopesSection() {
|
||||||
setKebabOpen(false);
|
setKebabOpen(false);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{t("common:delete")}
|
{t("delete")}
|
||||||
</DropdownItem>,
|
</DropdownItem>,
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
|
@ -267,7 +267,7 @@ export default function ClientScopesSection() {
|
||||||
}
|
}
|
||||||
actions={[
|
actions={[
|
||||||
{
|
{
|
||||||
title: t("common:delete"),
|
title: t("delete"),
|
||||||
onRowClick: (clientScope) => {
|
onRowClick: (clientScope) => {
|
||||||
setSelectedScopes([clientScope]);
|
setSelectedScopes([clientScope]);
|
||||||
toggleDeleteDialog();
|
toggleDeleteDialog();
|
||||||
|
|
|
@ -34,7 +34,7 @@ export default function CreateClientScope() {
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!scope) {
|
if (!scope) {
|
||||||
throw new Error(t("common:notFound"));
|
throw new Error(t("notFound"));
|
||||||
}
|
}
|
||||||
|
|
||||||
await changeScope({ ...clientScope, id: scope.id }, clientScope.type);
|
await changeScope({ ...clientScope, id: scope.id }, clientScope.type);
|
||||||
|
|
|
@ -63,7 +63,7 @@ export default function EditClientScope() {
|
||||||
const clientScope = await adminClient.clientScopes.findOne({ id });
|
const clientScope = await adminClient.clientScopes.findOne({ id });
|
||||||
|
|
||||||
if (!clientScope) {
|
if (!clientScope) {
|
||||||
throw new Error(t("common:notFound"));
|
throw new Error(t("notFound"));
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
@ -132,7 +132,7 @@ export default function EditClientScope() {
|
||||||
name: clientScope?.name,
|
name: clientScope?.name,
|
||||||
}),
|
}),
|
||||||
messageKey: "deleteConfirmClientScopes",
|
messageKey: "deleteConfirmClientScopes",
|
||||||
continueButtonLabel: "common:delete",
|
continueButtonLabel: "delete",
|
||||||
continueButtonVariant: ButtonVariant.danger,
|
continueButtonVariant: ButtonVariant.danger,
|
||||||
onConfirm: async () => {
|
onConfirm: async () => {
|
||||||
try {
|
try {
|
||||||
|
@ -195,9 +195,9 @@ export default function EditClientScope() {
|
||||||
mappers as ProtocolMapperRepresentation[],
|
mappers as ProtocolMapperRepresentation[],
|
||||||
);
|
);
|
||||||
refresh();
|
refresh();
|
||||||
addAlert(t("common:mappingCreatedSuccess"), AlertVariant.success);
|
addAlert(t("mappingCreatedSuccess"), AlertVariant.success);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
addError("common:mappingCreatedError", error);
|
addError("mappingCreatedError", error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -208,10 +208,10 @@ export default function EditClientScope() {
|
||||||
id: clientScope!.id!,
|
id: clientScope!.id!,
|
||||||
mapperId: mapper.id!,
|
mapperId: mapper.id!,
|
||||||
});
|
});
|
||||||
addAlert(t("common:mappingDeletedSuccess"), AlertVariant.success);
|
addAlert(t("mappingDeletedSuccess"), AlertVariant.success);
|
||||||
refresh();
|
refresh();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
addError("common:mappingDeletedError", error);
|
addError("mappingDeletedError", error);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
@ -227,7 +227,7 @@ export default function EditClientScope() {
|
||||||
titleKey={clientScope.name!}
|
titleKey={clientScope.name!}
|
||||||
dropdownItems={[
|
dropdownItems={[
|
||||||
<DropdownItem key="delete" onClick={toggleDeleteDialog}>
|
<DropdownItem key="delete" onClick={toggleDeleteDialog}>
|
||||||
{t("common:delete")}
|
{t("delete")}
|
||||||
</DropdownItem>,
|
</DropdownItem>,
|
||||||
]}
|
]}
|
||||||
badges={[{ text: clientScope.protocol }]}
|
badges={[{ text: clientScope.protocol }]}
|
||||||
|
@ -239,7 +239,7 @@ export default function EditClientScope() {
|
||||||
<Tab
|
<Tab
|
||||||
id="settings"
|
id="settings"
|
||||||
data-testid="settings"
|
data-testid="settings"
|
||||||
title={<TabTitleText>{t("common:settings")}</TabTitleText>}
|
title={<TabTitleText>{t("settings")}</TabTitleText>}
|
||||||
{...settingsTab}
|
{...settingsTab}
|
||||||
>
|
>
|
||||||
<PageSection variant="light">
|
<PageSection variant="light">
|
||||||
|
@ -249,7 +249,7 @@ export default function EditClientScope() {
|
||||||
<Tab
|
<Tab
|
||||||
id="mappers"
|
id="mappers"
|
||||||
data-testid="mappers"
|
data-testid="mappers"
|
||||||
title={<TabTitleText>{t("common:mappers")}</TabTitleText>}
|
title={<TabTitleText>{t("mappers")}</TabTitleText>}
|
||||||
{...mappersTab}
|
{...mappersTab}
|
||||||
>
|
>
|
||||||
<MapperList
|
<MapperList
|
||||||
|
|
|
@ -82,7 +82,7 @@ export const AddMapperDialog = (props: AddMapperDialogProps) => {
|
||||||
|
|
||||||
const isBuiltIn = !!props.filter;
|
const isBuiltIn = !!props.filter;
|
||||||
|
|
||||||
const header = [t("common:name"), t("common:description")];
|
const header = [t("name"), t("description")];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Modal
|
<Modal
|
||||||
|
@ -122,7 +122,7 @@ export const AddMapperDialog = (props: AddMapperDialogProps) => {
|
||||||
props.toggleDialog();
|
props.toggleDialog();
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{t("common:add")}
|
{t("add")}
|
||||||
</Button>,
|
</Button>,
|
||||||
<Button
|
<Button
|
||||||
id="modal-cancel"
|
id="modal-cancel"
|
||||||
|
@ -133,7 +133,7 @@ export const AddMapperDialog = (props: AddMapperDialogProps) => {
|
||||||
props.toggleDialog();
|
props.toggleDialog();
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{t("common:cancel")}
|
{t("cancel")}
|
||||||
</Button>,
|
</Button>,
|
||||||
]
|
]
|
||||||
: []
|
: []
|
||||||
|
@ -188,20 +188,20 @@ export const AddMapperDialog = (props: AddMapperDialogProps) => {
|
||||||
onSelect={setSelectedRows}
|
onSelect={setSelectedRows}
|
||||||
canSelectAll
|
canSelectAll
|
||||||
ariaLabelKey="addPredefinedMappers"
|
ariaLabelKey="addPredefinedMappers"
|
||||||
searchPlaceholderKey="common:searchForMapper"
|
searchPlaceholderKey="searchForMapper"
|
||||||
columns={[
|
columns={[
|
||||||
{
|
{
|
||||||
name: "id",
|
name: "id",
|
||||||
displayKey: "common:name",
|
displayKey: "name",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "description",
|
name: "description",
|
||||||
displayKey: "common:description",
|
displayKey: "description",
|
||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
emptyState={
|
emptyState={
|
||||||
<ListEmptyState
|
<ListEmptyState
|
||||||
message={t("common:emptyMappers")}
|
message={t("emptyMappers")}
|
||||||
instructions={t("emptyBuiltInMappersInstructions")}
|
instructions={t("emptyBuiltInMappersInstructions")}
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
|
|
|
@ -106,7 +106,7 @@ export const MapperList = ({
|
||||||
key={key}
|
key={key}
|
||||||
loader={loader}
|
loader={loader}
|
||||||
ariaLabelKey="clientScopeList"
|
ariaLabelKey="clientScopeList"
|
||||||
searchPlaceholderKey="common:searchForMapper"
|
searchPlaceholderKey="searchForMapper"
|
||||||
toolbarItem={
|
toolbarItem={
|
||||||
<Dropdown
|
<Dropdown
|
||||||
onSelect={() => setMapperAction(false)}
|
onSelect={() => setMapperAction(false)}
|
||||||
|
@ -117,7 +117,7 @@ export const MapperList = ({
|
||||||
onToggle={() => setMapperAction(!mapperAction)}
|
onToggle={() => setMapperAction(!mapperAction)}
|
||||||
toggleIndicator={CaretDownIcon}
|
toggleIndicator={CaretDownIcon}
|
||||||
>
|
>
|
||||||
{t("common:addMapper")}
|
{t("addMapper")}
|
||||||
</DropdownToggle>
|
</DropdownToggle>
|
||||||
}
|
}
|
||||||
isOpen={mapperAction}
|
isOpen={mapperAction}
|
||||||
|
@ -139,7 +139,7 @@ export const MapperList = ({
|
||||||
}
|
}
|
||||||
actions={[
|
actions={[
|
||||||
{
|
{
|
||||||
title: t("common:delete"),
|
title: t("delete"),
|
||||||
onRowClick: onDelete,
|
onRowClick: onDelete,
|
||||||
} as Action<Row>,
|
} as Action<Row>,
|
||||||
]}
|
]}
|
||||||
|
@ -160,11 +160,11 @@ export const MapperList = ({
|
||||||
]}
|
]}
|
||||||
emptyState={
|
emptyState={
|
||||||
<ListEmptyState
|
<ListEmptyState
|
||||||
message={t("common:emptyMappers")}
|
message={t("emptyMappers")}
|
||||||
instructions={t("common:emptyMappersInstructions")}
|
instructions={t("emptyMappersInstructions")}
|
||||||
secondaryActions={[
|
secondaryActions={[
|
||||||
{
|
{
|
||||||
text: t("common:emptyPrimaryAction"),
|
text: t("emptyPrimaryAction"),
|
||||||
onClick: () => toggleAddMapperDialog(true),
|
onClick: () => toggleAddMapperDialog(true),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -78,7 +78,7 @@ export default function MappingDetails() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (!data) {
|
if (!data) {
|
||||||
throw new Error(t("common:notFound"));
|
throw new Error(t("notFound"));
|
||||||
}
|
}
|
||||||
|
|
||||||
const mapperTypes = serverInfo.protocolMapperTypes![data!.protocol!];
|
const mapperTypes = serverInfo.protocolMapperTypes![data!.protocol!];
|
||||||
|
@ -99,7 +99,7 @@ export default function MappingDetails() {
|
||||||
? await adminClient.clientScopes.findOne({ id })
|
? await adminClient.clientScopes.findOne({ id })
|
||||||
: await adminClient.clients.findOne({ id });
|
: await adminClient.clients.findOne({ id });
|
||||||
if (!model) {
|
if (!model) {
|
||||||
throw new Error(t("common:notFound"));
|
throw new Error(t("notFound"));
|
||||||
}
|
}
|
||||||
const protocolMappers =
|
const protocolMappers =
|
||||||
serverInfo.protocolMapperTypes![model.protocol!];
|
serverInfo.protocolMapperTypes![model.protocol!];
|
||||||
|
@ -107,7 +107,7 @@ export default function MappingDetails() {
|
||||||
(mapper) => mapper.id === mapperId,
|
(mapper) => mapper.id === mapperId,
|
||||||
);
|
);
|
||||||
if (!mapping) {
|
if (!mapping) {
|
||||||
throw new Error(t("common:notFound"));
|
throw new Error(t("notFound"));
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
mapping,
|
mapping,
|
||||||
|
@ -129,9 +129,9 @@ export default function MappingDetails() {
|
||||||
);
|
);
|
||||||
|
|
||||||
const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({
|
const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({
|
||||||
titleKey: "common:deleteMappingTitle",
|
titleKey: "deleteMappingTitle",
|
||||||
messageKey: "common:deleteMappingConfirm",
|
messageKey: "deleteMappingConfirm",
|
||||||
continueButtonLabel: "common:delete",
|
continueButtonLabel: "delete",
|
||||||
continueButtonVariant: ButtonVariant.danger,
|
continueButtonVariant: ButtonVariant.danger,
|
||||||
onConfirm: async () => {
|
onConfirm: async () => {
|
||||||
try {
|
try {
|
||||||
|
@ -146,10 +146,10 @@ export default function MappingDetails() {
|
||||||
mapperId,
|
mapperId,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
addAlert(t("common:mappingDeletedSuccess"), AlertVariant.success);
|
addAlert(t("mappingDeletedSuccess"), AlertVariant.success);
|
||||||
navigate(toDetails());
|
navigate(toDetails());
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
addError("common:mappingDeletedError", error);
|
addError("mappingDeletedError", error);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -173,9 +173,9 @@ export default function MappingDetails() {
|
||||||
? await adminClient.clientScopes.addProtocolMapper({ id }, mapping)
|
? await adminClient.clientScopes.addProtocolMapper({ id }, mapping)
|
||||||
: await adminClient.clients.addProtocolMapper({ id }, mapping);
|
: await adminClient.clients.addProtocolMapper({ id }, mapping);
|
||||||
}
|
}
|
||||||
addAlert(t(`common:mapping${key}Success`), AlertVariant.success);
|
addAlert(t(`mapping${key}Success`), AlertVariant.success);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
addError(`common:mapping${key}Error`, error);
|
addError(`mapping${key}Error`, error);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -183,7 +183,7 @@ export default function MappingDetails() {
|
||||||
<>
|
<>
|
||||||
<DeleteConfirm />
|
<DeleteConfirm />
|
||||||
<ViewHeader
|
<ViewHeader
|
||||||
titleKey={isUpdating ? mapping?.name! : t("common:addMapper")}
|
titleKey={isUpdating ? mapping?.name! : t("addMapper")}
|
||||||
subKey={isUpdating ? mapperId : "addMapperExplain"}
|
subKey={isUpdating ? mapperId : "addMapperExplain"}
|
||||||
dropdownItems={
|
dropdownItems={
|
||||||
isUpdating
|
isUpdating
|
||||||
|
@ -193,7 +193,7 @@ export default function MappingDetails() {
|
||||||
value="delete"
|
value="delete"
|
||||||
onClick={toggleDeleteDialog}
|
onClick={toggleDeleteDialog}
|
||||||
>
|
>
|
||||||
{t("common:delete")}
|
{t("delete")}
|
||||||
</DropdownItem>,
|
</DropdownItem>,
|
||||||
]
|
]
|
||||||
: undefined
|
: undefined
|
||||||
|
@ -205,7 +205,7 @@ export default function MappingDetails() {
|
||||||
onSubmit={handleSubmit(save)}
|
onSubmit={handleSubmit(save)}
|
||||||
role="manage-clients"
|
role="manage-clients"
|
||||||
>
|
>
|
||||||
<FormGroup label={t("common:mapperType")} fieldId="mapperType">
|
<FormGroup label={t("mapperType")} fieldId="mapperType">
|
||||||
<KeycloakTextInput
|
<KeycloakTextInput
|
||||||
type="text"
|
type="text"
|
||||||
id="mapperType"
|
id="mapperType"
|
||||||
|
@ -215,7 +215,7 @@ export default function MappingDetails() {
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
<FormGroup
|
<FormGroup
|
||||||
label={t("common:name")}
|
label={t("name")}
|
||||||
labelIcon={
|
labelIcon={
|
||||||
<HelpItem helpText={t("mapperName")} fieldLabelId="name" />
|
<HelpItem helpText={t("mapperName")} fieldLabelId="name" />
|
||||||
}
|
}
|
||||||
|
@ -224,7 +224,7 @@ export default function MappingDetails() {
|
||||||
validated={
|
validated={
|
||||||
errors.name ? ValidatedOptions.error : ValidatedOptions.default
|
errors.name ? ValidatedOptions.error : ValidatedOptions.default
|
||||||
}
|
}
|
||||||
helperTextInvalid={t("common:required")}
|
helperTextInvalid={t("required")}
|
||||||
>
|
>
|
||||||
<KeycloakTextInput
|
<KeycloakTextInput
|
||||||
id="name"
|
id="name"
|
||||||
|
@ -243,13 +243,13 @@ export default function MappingDetails() {
|
||||||
</FormProvider>
|
</FormProvider>
|
||||||
<ActionGroup>
|
<ActionGroup>
|
||||||
<Button variant="primary" type="submit">
|
<Button variant="primary" type="submit">
|
||||||
{t("common:save")}
|
{t("save")}
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
variant="link"
|
variant="link"
|
||||||
component={(props) => <Link {...props} to={toDetails()} />}
|
component={(props) => <Link {...props} to={toDetails()} />}
|
||||||
>
|
>
|
||||||
{t("common:cancel")}
|
{t("cancel")}
|
||||||
</Button>
|
</Button>
|
||||||
</ActionGroup>
|
</ActionGroup>
|
||||||
</FormAccess>
|
</FormAccess>
|
||||||
|
|
|
@ -88,7 +88,7 @@ export const ScopeForm = ({ clientScope, save }: ScopeFormProps) => {
|
||||||
isHorizontal
|
isHorizontal
|
||||||
>
|
>
|
||||||
<FormGroup
|
<FormGroup
|
||||||
label={t("common:name")}
|
label={t("name")}
|
||||||
labelIcon={
|
labelIcon={
|
||||||
<HelpItem helpText={t("scopeNameHelp")} fieldLabelId="name" />
|
<HelpItem helpText={t("scopeNameHelp")} fieldLabelId="name" />
|
||||||
}
|
}
|
||||||
|
@ -96,7 +96,7 @@ export const ScopeForm = ({ clientScope, save }: ScopeFormProps) => {
|
||||||
validated={
|
validated={
|
||||||
errors.name ? ValidatedOptions.error : ValidatedOptions.default
|
errors.name ? ValidatedOptions.error : ValidatedOptions.default
|
||||||
}
|
}
|
||||||
helperTextInvalid={t("common:required")}
|
helperTextInvalid={t("required")}
|
||||||
isRequired
|
isRequired
|
||||||
>
|
>
|
||||||
<KeycloakTextInput
|
<KeycloakTextInput
|
||||||
|
@ -141,7 +141,7 @@ export const ScopeForm = ({ clientScope, save }: ScopeFormProps) => {
|
||||||
</FormProvider>
|
</FormProvider>
|
||||||
)}
|
)}
|
||||||
<FormGroup
|
<FormGroup
|
||||||
label={t("common:description")}
|
label={t("description")}
|
||||||
labelIcon={
|
labelIcon={
|
||||||
<HelpItem
|
<HelpItem
|
||||||
helpText={t("scopeDescriptionHelp")}
|
helpText={t("scopeDescriptionHelp")}
|
||||||
|
@ -152,7 +152,7 @@ export const ScopeForm = ({ clientScope, save }: ScopeFormProps) => {
|
||||||
validated={
|
validated={
|
||||||
errors.description ? ValidatedOptions.error : ValidatedOptions.default
|
errors.description ? ValidatedOptions.error : ValidatedOptions.default
|
||||||
}
|
}
|
||||||
helperTextInvalid={t("common:maxLength", { length: 255 })}
|
helperTextInvalid={t("maxLength", { length: 255 })}
|
||||||
>
|
>
|
||||||
<KeycloakTextInput
|
<KeycloakTextInput
|
||||||
id="kc-description"
|
id="kc-description"
|
||||||
|
@ -253,8 +253,8 @@ export const ScopeForm = ({ clientScope, save }: ScopeFormProps) => {
|
||||||
render={({ field }) => (
|
render={({ field }) => (
|
||||||
<Switch
|
<Switch
|
||||||
id="kc-display-on-consent-screen"
|
id="kc-display-on-consent-screen"
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={field.value === "true"}
|
isChecked={field.value === "true"}
|
||||||
onChange={(value) => field.onChange(value.toString())}
|
onChange={(value) => field.onChange(value.toString())}
|
||||||
/>
|
/>
|
||||||
|
@ -302,8 +302,8 @@ export const ScopeForm = ({ clientScope, save }: ScopeFormProps) => {
|
||||||
render={({ field }) => (
|
render={({ field }) => (
|
||||||
<Switch
|
<Switch
|
||||||
id="kc-include-in-token-scope"
|
id="kc-include-in-token-scope"
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={field.value === "true"}
|
isChecked={field.value === "true"}
|
||||||
onChange={(value) => field.onChange(value.toString())}
|
onChange={(value) => field.onChange(value.toString())}
|
||||||
/>
|
/>
|
||||||
|
@ -340,7 +340,7 @@ export const ScopeForm = ({ clientScope, save }: ScopeFormProps) => {
|
||||||
type="submit"
|
type="submit"
|
||||||
isDisabled={!isDirty || !isValid}
|
isDisabled={!isDirty || !isValid}
|
||||||
>
|
>
|
||||||
{t("common:save")}
|
{t("save")}
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
variant="link"
|
variant="link"
|
||||||
|
@ -348,7 +348,7 @@ export const ScopeForm = ({ clientScope, save }: ScopeFormProps) => {
|
||||||
<Link {...props} to={toClientScopes({ realm })}></Link>
|
<Link {...props} to={toClientScopes({ realm })}></Link>
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
{t("common:cancel")}
|
{t("cancel")}
|
||||||
</Button>
|
</Button>
|
||||||
</ActionGroup>
|
</ActionGroup>
|
||||||
</FormAccess>
|
</FormAccess>
|
||||||
|
|
|
@ -111,8 +111,8 @@ export const SearchToolbar = ({
|
||||||
isOpen={open}
|
isOpen={open}
|
||||||
selections={[
|
selections={[
|
||||||
type === AllClientScopes.none
|
type === AllClientScopes.none
|
||||||
? t("common:allTypes")
|
? t("allTypes")
|
||||||
: t(`common:clientScope.${type}`),
|
: t(`clientScopeTypes.${type}`),
|
||||||
]}
|
]}
|
||||||
onSelect={(_, value) => {
|
onSelect={(_, value) => {
|
||||||
onType(value as AllClientScopes);
|
onType(value as AllClientScopes);
|
||||||
|
@ -120,7 +120,7 @@ export const SearchToolbar = ({
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<SelectOption value={AllClientScopes.none}>
|
<SelectOption value={AllClientScopes.none}>
|
||||||
{t("common:allTypes")}
|
{t("allTypes")}
|
||||||
</SelectOption>
|
</SelectOption>
|
||||||
<>{clientScopeTypesSelectOptions(t)}</>
|
<>{clientScopeTypesSelectOptions(t)}</>
|
||||||
</Select>
|
</Select>
|
||||||
|
|
|
@ -14,7 +14,7 @@ const MappingDetails = lazy(() => import("../details/MappingDetails"));
|
||||||
export const MapperRoute: AppRouteObject = {
|
export const MapperRoute: AppRouteObject = {
|
||||||
path: "/:realm/client-scopes/:id/mappers/:mapperId",
|
path: "/:realm/client-scopes/:id/mappers/:mapperId",
|
||||||
element: <MappingDetails />,
|
element: <MappingDetails />,
|
||||||
breadcrumb: (t) => t("common:mappingDetails"),
|
breadcrumb: (t) => t("mappingDetails"),
|
||||||
handle: {
|
handle: {
|
||||||
access: "view-clients",
|
access: "view-clients",
|
||||||
},
|
},
|
||||||
|
|
|
@ -17,23 +17,23 @@ export const ClientDescription = ({
|
||||||
<FormAccess role="manage-clients" fineGrainedAccess={configure} unWrap>
|
<FormAccess role="manage-clients" fineGrainedAccess={configure} unWrap>
|
||||||
<TextControl
|
<TextControl
|
||||||
name="clientId"
|
name="clientId"
|
||||||
label={t("common:clientId")}
|
label={t("clientId")}
|
||||||
labelIcon={t("clientIdHelp")}
|
labelIcon={t("clientIdHelp")}
|
||||||
rules={{ required: { value: true, message: t("common:required") } }}
|
rules={{ required: { value: true, message: t("required") } }}
|
||||||
/>
|
/>
|
||||||
<TextControl
|
<TextControl
|
||||||
name="name"
|
name="name"
|
||||||
label={t("common:name")}
|
label={t("name")}
|
||||||
labelIcon={t("clientNameHelp")}
|
labelIcon={t("clientNameHelp")}
|
||||||
/>
|
/>
|
||||||
<TextAreaControl
|
<TextAreaControl
|
||||||
name="description"
|
name="description"
|
||||||
label={t("common:description")}
|
label={t("description")}
|
||||||
labelIcon={t("clientDescriptionHelp")}
|
labelIcon={t("clientDescriptionHelp")}
|
||||||
rules={{
|
rules={{
|
||||||
maxLength: {
|
maxLength: {
|
||||||
value: 255,
|
value: 255,
|
||||||
message: t("common:maxLength", { length: 255 }),
|
message: t("maxLength", { length: 255 }),
|
||||||
},
|
},
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -96,7 +96,7 @@ const ClientDetailHeader = ({
|
||||||
const [toggleDisableDialog, DisableConfirm] = useConfirmDialog({
|
const [toggleDisableDialog, DisableConfirm] = useConfirmDialog({
|
||||||
titleKey: "disableConfirmTitle",
|
titleKey: "disableConfirmTitle",
|
||||||
messageKey: "disableConfirm",
|
messageKey: "disableConfirm",
|
||||||
continueButtonLabel: "common:disable",
|
continueButtonLabel: "disable",
|
||||||
onConfirm: () => {
|
onConfirm: () => {
|
||||||
onChange(!value);
|
onChange(!value);
|
||||||
save();
|
save();
|
||||||
|
@ -136,7 +136,7 @@ const ClientDetailHeader = ({
|
||||||
{t("downloadAdapterConfig")}
|
{t("downloadAdapterConfig")}
|
||||||
</DropdownItem>,
|
</DropdownItem>,
|
||||||
<DropdownItem key="export" onClick={() => exportClient(client)}>
|
<DropdownItem key="export" onClick={() => exportClient(client)}>
|
||||||
{t("common:export")}
|
{t("export")}
|
||||||
</DropdownItem>,
|
</DropdownItem>,
|
||||||
...(!isRealmClient(client) && isManager
|
...(!isRealmClient(client) && isManager
|
||||||
? [
|
? [
|
||||||
|
@ -146,7 +146,7 @@ const ClientDetailHeader = ({
|
||||||
key="delete"
|
key="delete"
|
||||||
onClick={toggleDeleteDialog}
|
onClick={toggleDeleteDialog}
|
||||||
>
|
>
|
||||||
{t("common:delete")}
|
{t("delete")}
|
||||||
</DropdownItem>,
|
</DropdownItem>,
|
||||||
]
|
]
|
||||||
: []),
|
: []),
|
||||||
|
@ -275,7 +275,7 @@ export default function ClientDetails() {
|
||||||
const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({
|
const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({
|
||||||
titleKey: "clientDeleteConfirmTitle",
|
titleKey: "clientDeleteConfirmTitle",
|
||||||
messageKey: "clientDeleteConfirm",
|
messageKey: "clientDeleteConfirm",
|
||||||
continueButtonLabel: "common:delete",
|
continueButtonLabel: "delete",
|
||||||
continueButtonVariant: ButtonVariant.danger,
|
continueButtonVariant: ButtonVariant.danger,
|
||||||
onConfirm: async () => {
|
onConfirm: async () => {
|
||||||
try {
|
try {
|
||||||
|
@ -306,7 +306,7 @@ export default function ClientDetails() {
|
||||||
() => adminClient.clients.findOne({ id: clientId }),
|
() => adminClient.clients.findOne({ id: clientId }),
|
||||||
(fetchedClient) => {
|
(fetchedClient) => {
|
||||||
if (!fetchedClient) {
|
if (!fetchedClient) {
|
||||||
throw new Error(t("common:notFound"));
|
throw new Error(t("notFound"));
|
||||||
}
|
}
|
||||||
setClient(cloneDeep(fetchedClient));
|
setClient(cloneDeep(fetchedClient));
|
||||||
setupForm(fetchedClient);
|
setupForm(fetchedClient);
|
||||||
|
@ -372,8 +372,8 @@ export default function ClientDetails() {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<ConfirmDialogModal
|
<ConfirmDialogModal
|
||||||
continueButtonLabel="common:yes"
|
continueButtonLabel="yes"
|
||||||
cancelButtonLabel="common:no"
|
cancelButtonLabel="no"
|
||||||
titleKey={t("changeAuthenticatorConfirmTitle", {
|
titleKey={t("changeAuthenticatorConfirmTitle", {
|
||||||
clientAuthenticatorType: clientAuthenticatorType,
|
clientAuthenticatorType: clientAuthenticatorType,
|
||||||
})}
|
})}
|
||||||
|
@ -422,7 +422,7 @@ export default function ClientDetails() {
|
||||||
<Tab
|
<Tab
|
||||||
id="settings"
|
id="settings"
|
||||||
data-testid="clientSettingsTab"
|
data-testid="clientSettingsTab"
|
||||||
title={<TabTitleText>{t("common:settings")}</TabTitleText>}
|
title={<TabTitleText>{t("settings")}</TabTitleText>}
|
||||||
{...settingsTab}
|
{...settingsTab}
|
||||||
>
|
>
|
||||||
<ClientSettings
|
<ClientSettings
|
||||||
|
@ -581,9 +581,7 @@ export default function ClientDetails() {
|
||||||
<Tab
|
<Tab
|
||||||
id="permissions"
|
id="permissions"
|
||||||
data-testid="authorizationPermissions"
|
data-testid="authorizationPermissions"
|
||||||
title={
|
title={<TabTitleText>{t("permissions")}</TabTitleText>}
|
||||||
<TabTitleText>{t("common:permissions")}</TabTitleText>
|
|
||||||
}
|
|
||||||
{...authorizationPermissionsTab}
|
{...authorizationPermissionsTab}
|
||||||
>
|
>
|
||||||
<AuthorizationPermissions clientId={clientId} />
|
<AuthorizationPermissions clientId={clientId} />
|
||||||
|
@ -599,7 +597,7 @@ export default function ClientDetails() {
|
||||||
<Tab
|
<Tab
|
||||||
id="export"
|
id="export"
|
||||||
data-testid="authorizationExport"
|
data-testid="authorizationExport"
|
||||||
title={<TabTitleText>{t("common:export")}</TabTitleText>}
|
title={<TabTitleText>{t("export")}</TabTitleText>}
|
||||||
{...authorizationExportTab}
|
{...authorizationExportTab}
|
||||||
>
|
>
|
||||||
<AuthorizationExport />
|
<AuthorizationExport />
|
||||||
|
@ -630,7 +628,7 @@ export default function ClientDetails() {
|
||||||
<Tab
|
<Tab
|
||||||
id="permissions"
|
id="permissions"
|
||||||
data-testid="permissionsTab"
|
data-testid="permissionsTab"
|
||||||
title={<TabTitleText>{t("common:permissions")}</TabTitleText>}
|
title={<TabTitleText>{t("permissions")}</TabTitleText>}
|
||||||
{...permissionsTab}
|
{...permissionsTab}
|
||||||
>
|
>
|
||||||
<PermissionsTab id={client.id!} type="clients" />
|
<PermissionsTab id={client.id!} type="clients" />
|
||||||
|
|
|
@ -52,7 +52,7 @@ const ClientDetailLink = (client: ClientRepresentation) => {
|
||||||
{client.clientId}
|
{client.clientId}
|
||||||
{!client.enabled && (
|
{!client.enabled && (
|
||||||
<Badge key={`${client.id}-disabled`} isRead className="pf-u-ml-sm">
|
<Badge key={`${client.id}-disabled`} isRead className="pf-u-ml-sm">
|
||||||
{t("common:disabled")}
|
{t("disabled")}
|
||||||
</Badge>
|
</Badge>
|
||||||
)}
|
)}
|
||||||
</Link>
|
</Link>
|
||||||
|
@ -147,7 +147,7 @@ export default function ClientsSection() {
|
||||||
const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({
|
const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({
|
||||||
titleKey: t("clientDelete", { clientId: selectedClient?.clientId }),
|
titleKey: t("clientDelete", { clientId: selectedClient?.clientId }),
|
||||||
messageKey: "clientDeleteConfirm",
|
messageKey: "clientDeleteConfirm",
|
||||||
continueButtonLabel: "common:delete",
|
continueButtonLabel: "delete",
|
||||||
continueButtonVariant: ButtonVariant.danger,
|
continueButtonVariant: ButtonVariant.danger,
|
||||||
onConfirm: async () => {
|
onConfirm: async () => {
|
||||||
try {
|
try {
|
||||||
|
@ -196,7 +196,7 @@ export default function ClientsSection() {
|
||||||
const client: ClientRepresentation = rowData.data;
|
const client: ClientRepresentation = rowData.data;
|
||||||
const actions: Action<ClientRepresentation>[] = [
|
const actions: Action<ClientRepresentation>[] = [
|
||||||
{
|
{
|
||||||
title: t("common:export"),
|
title: t("export"),
|
||||||
onClick() {
|
onClick() {
|
||||||
exportClient(client);
|
exportClient(client);
|
||||||
},
|
},
|
||||||
|
@ -208,7 +208,7 @@ export default function ClientsSection() {
|
||||||
(isManager || client.access?.configure)
|
(isManager || client.access?.configure)
|
||||||
) {
|
) {
|
||||||
actions.push({
|
actions.push({
|
||||||
title: t("common:delete"),
|
title: t("delete"),
|
||||||
onClick() {
|
onClick() {
|
||||||
setSelectedClient(client);
|
setSelectedClient(client);
|
||||||
toggleDeleteDialog();
|
toggleDeleteDialog();
|
||||||
|
@ -221,26 +221,26 @@ export default function ClientsSection() {
|
||||||
columns={[
|
columns={[
|
||||||
{
|
{
|
||||||
name: "clientId",
|
name: "clientId",
|
||||||
displayKey: "common:clientId",
|
displayKey: "clientId",
|
||||||
transforms: [cellWidth(20)],
|
transforms: [cellWidth(20)],
|
||||||
cellRenderer: ClientDetailLink,
|
cellRenderer: ClientDetailLink,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "clientName",
|
name: "clientName",
|
||||||
displayKey: "common:clientName",
|
displayKey: "clientName",
|
||||||
transforms: [cellWidth(20)],
|
transforms: [cellWidth(20)],
|
||||||
cellRenderer: ClientName,
|
cellRenderer: ClientName,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "protocol",
|
name: "protocol",
|
||||||
displayKey: "common:type",
|
displayKey: "type",
|
||||||
transforms: [cellWidth(10)],
|
transforms: [cellWidth(10)],
|
||||||
cellRenderer: (client) =>
|
cellRenderer: (client) =>
|
||||||
getProtocolName(t, client.protocol ?? "openid-connect"),
|
getProtocolName(t, client.protocol ?? "openid-connect"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "description",
|
name: "description",
|
||||||
displayKey: "common:description",
|
displayKey: "description",
|
||||||
transforms: [cellWidth(30)],
|
transforms: [cellWidth(30)],
|
||||||
cellRenderer: ClientDescription,
|
cellRenderer: ClientDescription,
|
||||||
},
|
},
|
||||||
|
|
|
@ -59,8 +59,8 @@ export const CapabilityConfig = ({
|
||||||
<Switch
|
<Switch
|
||||||
data-testid="authentication"
|
data-testid="authentication"
|
||||||
id="kc-authentication-switch"
|
id="kc-authentication-switch"
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={!field.value}
|
isChecked={!field.value}
|
||||||
onChange={(value) => {
|
onChange={(value) => {
|
||||||
field.onChange(!value);
|
field.onChange(!value);
|
||||||
|
@ -99,8 +99,8 @@ export const CapabilityConfig = ({
|
||||||
<Switch
|
<Switch
|
||||||
data-testid="authorization"
|
data-testid="authorization"
|
||||||
id="kc-authorization-switch"
|
id="kc-authorization-switch"
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={field.value && !clientAuthentication}
|
isChecked={field.value && !clientAuthentication}
|
||||||
onChange={(value) => {
|
onChange={(value) => {
|
||||||
field.onChange(value);
|
field.onChange(value);
|
||||||
|
@ -293,8 +293,8 @@ export const CapabilityConfig = ({
|
||||||
<Switch
|
<Switch
|
||||||
data-testid="encrypt"
|
data-testid="encrypt"
|
||||||
id="kc-encrypt"
|
id="kc-encrypt"
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={field.value}
|
isChecked={field.value}
|
||||||
onChange={field.onChange}
|
onChange={field.onChange}
|
||||||
aria-label={t("encryptAssertions")}
|
aria-label={t("encryptAssertions")}
|
||||||
|
@ -323,8 +323,8 @@ export const CapabilityConfig = ({
|
||||||
<Switch
|
<Switch
|
||||||
data-testid="client-signature"
|
data-testid="client-signature"
|
||||||
id="kc-client-signature"
|
id="kc-client-signature"
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={field.value}
|
isChecked={field.value}
|
||||||
onChange={field.onChange}
|
onChange={field.onChange}
|
||||||
aria-label={t("clientSignature")}
|
aria-label={t("clientSignature")}
|
||||||
|
|
|
@ -50,14 +50,14 @@ export const LoginSettingsPanel = ({ access }: { access?: boolean }) => {
|
||||||
field.onChange(value.toString());
|
field.onChange(value.toString());
|
||||||
setLoginThemeOpen(false);
|
setLoginThemeOpen(false);
|
||||||
}}
|
}}
|
||||||
selections={field.value || t("common:choose")}
|
selections={field.value || t("choose")}
|
||||||
variant={SelectVariant.single}
|
variant={SelectVariant.single}
|
||||||
aria-label={t("loginTheme")}
|
aria-label={t("loginTheme")}
|
||||||
isOpen={loginThemeOpen}
|
isOpen={loginThemeOpen}
|
||||||
>
|
>
|
||||||
{[
|
{[
|
||||||
<SelectOption key="empty" value="">
|
<SelectOption key="empty" value="">
|
||||||
{t("common:choose")}
|
{t("choose")}
|
||||||
</SelectOption>,
|
</SelectOption>,
|
||||||
...loginThemes.map((theme) => (
|
...loginThemes.map((theme) => (
|
||||||
<SelectOption
|
<SelectOption
|
||||||
|
@ -89,8 +89,8 @@ export const LoginSettingsPanel = ({ access }: { access?: boolean }) => {
|
||||||
render={({ field }) => (
|
render={({ field }) => (
|
||||||
<Switch
|
<Switch
|
||||||
id="kc-consent-switch"
|
id="kc-consent-switch"
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={field.value}
|
isChecked={field.value}
|
||||||
onChange={field.onChange}
|
onChange={field.onChange}
|
||||||
aria-label={t("consentRequired")}
|
aria-label={t("consentRequired")}
|
||||||
|
@ -118,8 +118,8 @@ export const LoginSettingsPanel = ({ access }: { access?: boolean }) => {
|
||||||
render={({ field }) => (
|
render={({ field }) => (
|
||||||
<Switch
|
<Switch
|
||||||
id="kc-display-on-client-switch"
|
id="kc-display-on-client-switch"
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={field.value === "true"}
|
isChecked={field.value === "true"}
|
||||||
onChange={(value) => field.onChange("" + value)}
|
onChange={(value) => field.onChange("" + value)}
|
||||||
isDisabled={!consentRequired}
|
isDisabled={!consentRequired}
|
||||||
|
|
|
@ -60,8 +60,8 @@ export const LogoutPanel = ({
|
||||||
render={({ field }) => (
|
render={({ field }) => (
|
||||||
<Switch
|
<Switch
|
||||||
id="kc-frontchannelLogout-switch"
|
id="kc-frontchannelLogout-switch"
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={field.value}
|
isChecked={field.value}
|
||||||
onChange={field.onChange}
|
onChange={field.onChange}
|
||||||
aria-label={t("frontchannelLogout")}
|
aria-label={t("frontchannelLogout")}
|
||||||
|
@ -169,8 +169,8 @@ export const LogoutPanel = ({
|
||||||
render={({ field }) => (
|
render={({ field }) => (
|
||||||
<Switch
|
<Switch
|
||||||
id="backchannelLogoutSessionRequired"
|
id="backchannelLogoutSessionRequired"
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={field.value === "true"}
|
isChecked={field.value === "true"}
|
||||||
onChange={(value) => field.onChange(value.toString())}
|
onChange={(value) => field.onChange(value.toString())}
|
||||||
aria-label={t("backchannelLogoutSessionRequired")}
|
aria-label={t("backchannelLogoutSessionRequired")}
|
||||||
|
@ -198,8 +198,8 @@ export const LogoutPanel = ({
|
||||||
render={({ field }) => (
|
render={({ field }) => (
|
||||||
<Switch
|
<Switch
|
||||||
id="backchannelLogoutRevokeOfflineSessions"
|
id="backchannelLogoutRevokeOfflineSessions"
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={field.value === "true"}
|
isChecked={field.value === "true"}
|
||||||
onChange={(value) => field.onChange(value.toString())}
|
onChange={(value) => field.onChange(value.toString())}
|
||||||
aria-label={t("backchannelLogoutRevokeOfflineSessions")}
|
aria-label={t("backchannelLogoutRevokeOfflineSessions")}
|
||||||
|
|
|
@ -144,7 +144,7 @@ export default function NewClientForm() {
|
||||||
forward(onNext);
|
forward(onNext);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{isFinalStep() ? t("common:save") : t("common:next")}
|
{isFinalStep() ? t("save") : t("next")}
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
variant="secondary"
|
variant="secondary"
|
||||||
|
@ -155,14 +155,14 @@ export default function NewClientForm() {
|
||||||
}}
|
}}
|
||||||
isDisabled={activeStep.name === t("generalSettings")}
|
isDisabled={activeStep.name === t("generalSettings")}
|
||||||
>
|
>
|
||||||
{t("common:back")}
|
{t("back")}
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
data-testid="cancel"
|
data-testid="cancel"
|
||||||
variant="link"
|
variant="link"
|
||||||
onClick={onClose}
|
onClick={onClose}
|
||||||
>
|
>
|
||||||
{t("common:cancel")}
|
{t("cancel")}
|
||||||
</Button>
|
</Button>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
|
|
@ -42,8 +42,8 @@ export const Toggle = ({ name, label }: ToggleProps) => {
|
||||||
<Switch
|
<Switch
|
||||||
id={name!}
|
id={name!}
|
||||||
data-testid={label}
|
data-testid={label}
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={field.value === "true"}
|
isChecked={field.value === "true"}
|
||||||
onChange={(value) => field.onChange(value.toString())}
|
onChange={(value) => field.onChange(value.toString())}
|
||||||
aria-label={t(label)}
|
aria-label={t(label)}
|
||||||
|
|
|
@ -67,7 +67,7 @@ export const AddHostDialog = ({
|
||||||
form="add-host-form"
|
form="add-host-form"
|
||||||
isDisabled={!isDirty || !isValid}
|
isDisabled={!isDirty || !isValid}
|
||||||
>
|
>
|
||||||
{t("common:save")}
|
{t("save")}
|
||||||
</Button>,
|
</Button>,
|
||||||
<Button
|
<Button
|
||||||
key="cancel"
|
key="cancel"
|
||||||
|
@ -75,7 +75,7 @@ export const AddHostDialog = ({
|
||||||
variant={ButtonVariant.link}
|
variant={ButtonVariant.link}
|
||||||
onClick={onClose}
|
onClick={onClose}
|
||||||
>
|
>
|
||||||
{t("common:cancel")}
|
{t("cancel")}
|
||||||
</Button>,
|
</Button>,
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
|
|
|
@ -160,8 +160,8 @@ export const AdvancedSettings = ({
|
||||||
render={({ field }) => (
|
render={({ field }) => (
|
||||||
<Switch
|
<Switch
|
||||||
id="oAuthMutual-switch"
|
id="oAuthMutual-switch"
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={field.value === "true"}
|
isChecked={field.value === "true"}
|
||||||
onChange={(value) => field.onChange("" + value)}
|
onChange={(value) => field.onChange("" + value)}
|
||||||
aria-label={t("oAuthMutual")}
|
aria-label={t("oAuthMutual")}
|
||||||
|
@ -190,8 +190,8 @@ export const AdvancedSettings = ({
|
||||||
render={({ field }) => (
|
render={({ field }) => (
|
||||||
<Switch
|
<Switch
|
||||||
id="oAuthDPoP-switch"
|
id="oAuthDPoP-switch"
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={field.value === "true"}
|
isChecked={field.value === "true"}
|
||||||
onChange={(value) => field.onChange("" + value)}
|
onChange={(value) => field.onChange("" + value)}
|
||||||
aria-label={t("oAuthDPoP")}
|
aria-label={t("oAuthDPoP")}
|
||||||
|
@ -227,11 +227,11 @@ export const AdvancedSettings = ({
|
||||||
field.onChange(value);
|
field.onChange(value);
|
||||||
setOpen(false);
|
setOpen(false);
|
||||||
}}
|
}}
|
||||||
selections={[field.value || t("common:choose")]}
|
selections={[field.value || t("choose")]}
|
||||||
>
|
>
|
||||||
{["", "S256", "plain"].map((v) => (
|
{["", "S256", "plain"].map((v) => (
|
||||||
<SelectOption key={v} value={v}>
|
<SelectOption key={v} value={v}>
|
||||||
{v || t("common:choose")}
|
{v || t("choose")}
|
||||||
</SelectOption>
|
</SelectOption>
|
||||||
))}
|
))}
|
||||||
</Select>
|
</Select>
|
||||||
|
@ -257,8 +257,8 @@ export const AdvancedSettings = ({
|
||||||
render={({ field }) => (
|
render={({ field }) => (
|
||||||
<Switch
|
<Switch
|
||||||
id="pushedAuthorizationRequestRequired"
|
id="pushedAuthorizationRequestRequired"
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={field.value === "true"}
|
isChecked={field.value === "true"}
|
||||||
onChange={(value) => field.onChange(value.toString())}
|
onChange={(value) => field.onChange(value.toString())}
|
||||||
aria-label={t("pushedAuthorizationRequestRequired")}
|
aria-label={t("pushedAuthorizationRequestRequired")}
|
||||||
|
@ -305,10 +305,10 @@ export const AdvancedSettings = ({
|
||||||
onClick={save}
|
onClick={save}
|
||||||
data-testid="OIDCAdvancedSave"
|
data-testid="OIDCAdvancedSave"
|
||||||
>
|
>
|
||||||
{t("common:save")}
|
{t("save")}
|
||||||
</Button>
|
</Button>
|
||||||
<Button variant="link" onClick={reset} data-testid="OIDCAdvancedRevert">
|
<Button variant="link" onClick={reset} data-testid="OIDCAdvancedRevert">
|
||||||
{t("common:revert")}
|
{t("revert")}
|
||||||
</Button>
|
</Button>
|
||||||
</ActionGroup>
|
</ActionGroup>
|
||||||
</FormAccess>
|
</FormAccess>
|
||||||
|
|
|
@ -46,7 +46,7 @@ export const AuthenticationOverrides = ({
|
||||||
filteredFlows = sortBy(filteredFlows, [(f) => f.alias]);
|
filteredFlows = sortBy(filteredFlows, [(f) => f.alias]);
|
||||||
setFlows([
|
setFlows([
|
||||||
<SelectOption key="empty" value="">
|
<SelectOption key="empty" value="">
|
||||||
{t("common:choose")}
|
{t("choose")}
|
||||||
</SelectOption>,
|
</SelectOption>,
|
||||||
...filteredFlows.map((flow) => (
|
...filteredFlows.map((flow) => (
|
||||||
<SelectOption key={flow.id} value={flow.id}>
|
<SelectOption key={flow.id} value={flow.id}>
|
||||||
|
@ -134,14 +134,14 @@ export const AuthenticationOverrides = ({
|
||||||
onClick={save}
|
onClick={save}
|
||||||
data-testid="OIDCAuthFlowOverrideSave"
|
data-testid="OIDCAuthFlowOverrideSave"
|
||||||
>
|
>
|
||||||
{t("common:save")}
|
{t("save")}
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
variant="link"
|
variant="link"
|
||||||
onClick={reset}
|
onClick={reset}
|
||||||
data-testid="OIDCAuthFlowOverrideRevert"
|
data-testid="OIDCAuthFlowOverrideRevert"
|
||||||
>
|
>
|
||||||
{t("common:revert")}
|
{t("revert")}
|
||||||
</Button>
|
</Button>
|
||||||
</ActionGroup>
|
</ActionGroup>
|
||||||
</FormAccess>
|
</FormAccess>
|
||||||
|
|
|
@ -56,7 +56,7 @@ export const ClusteringPanel = ({
|
||||||
messageKey: t("deleteNodeBody", {
|
messageKey: t("deleteNodeBody", {
|
||||||
node: selectedNode,
|
node: selectedNode,
|
||||||
}),
|
}),
|
||||||
continueButtonLabel: "common:delete",
|
continueButtonLabel: "delete",
|
||||||
continueButtonVariant: ButtonVariant.danger,
|
continueButtonVariant: ButtonVariant.danger,
|
||||||
onConfirm: async () => {
|
onConfirm: async () => {
|
||||||
try {
|
try {
|
||||||
|
@ -103,7 +103,7 @@ export const ClusteringPanel = ({
|
||||||
</SplitItem>
|
</SplitItem>
|
||||||
<SplitItem>
|
<SplitItem>
|
||||||
<Button variant={ButtonVariant.secondary} onClick={() => save()}>
|
<Button variant={ButtonVariant.secondary} onClick={() => save()}>
|
||||||
{t("common:save")}
|
{t("save")}
|
||||||
</Button>
|
</Button>
|
||||||
</SplitItem>
|
</SplitItem>
|
||||||
</Split>
|
</Split>
|
||||||
|
@ -160,7 +160,7 @@ export const ClusteringPanel = ({
|
||||||
}
|
}
|
||||||
actions={[
|
actions={[
|
||||||
{
|
{
|
||||||
title: t("common:delete"),
|
title: t("delete"),
|
||||||
onRowClick: (node) => {
|
onRowClick: (node) => {
|
||||||
setSelectedNode(node.host);
|
setSelectedNode(node.host);
|
||||||
toggleDeleteNodeConfirm();
|
toggleDeleteNodeConfirm();
|
||||||
|
|
|
@ -72,7 +72,7 @@ export const FineGrainOpenIdConnect = ({
|
||||||
|
|
||||||
const keyOptions = [
|
const keyOptions = [
|
||||||
<SelectOption key="empty" value="">
|
<SelectOption key="empty" value="">
|
||||||
{t("common:choose")}
|
{t("choose")}
|
||||||
</SelectOption>,
|
</SelectOption>,
|
||||||
...sortProviders(clientSignatureProviders!).map((p) => (
|
...sortProviders(clientSignatureProviders!).map((p) => (
|
||||||
<SelectOption key={p} value={p} />
|
<SelectOption key={p} value={p} />
|
||||||
|
@ -80,7 +80,7 @@ export const FineGrainOpenIdConnect = ({
|
||||||
];
|
];
|
||||||
const cekManagementOptions = [
|
const cekManagementOptions = [
|
||||||
<SelectOption key="empty" value="">
|
<SelectOption key="empty" value="">
|
||||||
{t("common:choose")}
|
{t("choose")}
|
||||||
</SelectOption>,
|
</SelectOption>,
|
||||||
...sortProviders(cekManagementProviders!).map((p) => (
|
...sortProviders(cekManagementProviders!).map((p) => (
|
||||||
<SelectOption key={p} value={p} />
|
<SelectOption key={p} value={p} />
|
||||||
|
@ -96,7 +96,7 @@ export const FineGrainOpenIdConnect = ({
|
||||||
];
|
];
|
||||||
const contentOptions = [
|
const contentOptions = [
|
||||||
<SelectOption key="empty" value="">
|
<SelectOption key="empty" value="">
|
||||||
{t("common:choose")}
|
{t("choose")}
|
||||||
</SelectOption>,
|
</SelectOption>,
|
||||||
...sortProviders(contentEncryptionProviders!).map((p) => (
|
...sortProviders(contentEncryptionProviders!).map((p) => (
|
||||||
<SelectOption key={p} value={p} />
|
<SelectOption key={p} value={p} />
|
||||||
|
@ -105,10 +105,10 @@ export const FineGrainOpenIdConnect = ({
|
||||||
|
|
||||||
const requestObjectOptions = [
|
const requestObjectOptions = [
|
||||||
<SelectOption key="any" value="any">
|
<SelectOption key="any" value="any">
|
||||||
{t("common:any")}
|
{t("any")}
|
||||||
</SelectOption>,
|
</SelectOption>,
|
||||||
<SelectOption key="none" value="none">
|
<SelectOption key="none" value="none">
|
||||||
{t("common:none")}
|
{t("none")}
|
||||||
</SelectOption>,
|
</SelectOption>,
|
||||||
...sortProviders(clientSignatureProviders!).map((p) => (
|
...sortProviders(clientSignatureProviders!).map((p) => (
|
||||||
<SelectOption key={p} value={p} />
|
<SelectOption key={p} value={p} />
|
||||||
|
@ -117,7 +117,7 @@ export const FineGrainOpenIdConnect = ({
|
||||||
|
|
||||||
const requestObjectEncryptionOptions = [
|
const requestObjectEncryptionOptions = [
|
||||||
<SelectOption key="any" value="any">
|
<SelectOption key="any" value="any">
|
||||||
{t("common:any")}
|
{t("any")}
|
||||||
</SelectOption>,
|
</SelectOption>,
|
||||||
...sortProviders(cekManagementProviders!).map((p) => (
|
...sortProviders(cekManagementProviders!).map((p) => (
|
||||||
<SelectOption key={p} value={p} />
|
<SelectOption key={p} value={p} />
|
||||||
|
@ -126,7 +126,7 @@ export const FineGrainOpenIdConnect = ({
|
||||||
|
|
||||||
const requestObjectEncodingOptions = [
|
const requestObjectEncodingOptions = [
|
||||||
<SelectOption key="any" value="any">
|
<SelectOption key="any" value="any">
|
||||||
{t("common:any")}
|
{t("any")}
|
||||||
</SelectOption>,
|
</SelectOption>,
|
||||||
...sortProviders(contentEncryptionProviders!).map((p) => (
|
...sortProviders(contentEncryptionProviders!).map((p) => (
|
||||||
<SelectOption key={p} value={p} />
|
<SelectOption key={p} value={p} />
|
||||||
|
@ -135,7 +135,7 @@ export const FineGrainOpenIdConnect = ({
|
||||||
|
|
||||||
const authorizationSignedResponseOptions = [
|
const authorizationSignedResponseOptions = [
|
||||||
<SelectOption key="empty" value="">
|
<SelectOption key="empty" value="">
|
||||||
{t("common:choose")}
|
{t("choose")}
|
||||||
</SelectOption>,
|
</SelectOption>,
|
||||||
...sortProviders(signatureProviders!).map((p) => (
|
...sortProviders(signatureProviders!).map((p) => (
|
||||||
<SelectOption key={p} value={p} />
|
<SelectOption key={p} value={p} />
|
||||||
|
@ -643,10 +643,10 @@ export const FineGrainOpenIdConnect = ({
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
<ActionGroup>
|
<ActionGroup>
|
||||||
<Button variant="secondary" id="fineGrainSave" onClick={save}>
|
<Button variant="secondary" id="fineGrainSave" onClick={save}>
|
||||||
{t("common:save")}
|
{t("save")}
|
||||||
</Button>
|
</Button>
|
||||||
<Button id="fineGrainRevert" variant="link" onClick={reset}>
|
<Button id="fineGrainRevert" variant="link" onClick={reset}>
|
||||||
{t("common:revert")}
|
{t("revert")}
|
||||||
</Button>
|
</Button>
|
||||||
</ActionGroup>
|
</ActionGroup>
|
||||||
</FormAccess>
|
</FormAccess>
|
||||||
|
|
|
@ -69,10 +69,10 @@ export const FineGrainSamlEndpointConfig = ({
|
||||||
|
|
||||||
<ActionGroup>
|
<ActionGroup>
|
||||||
<Button variant="tertiary" onClick={save} data-testid="fineGrainSave">
|
<Button variant="tertiary" onClick={save} data-testid="fineGrainSave">
|
||||||
{t("common:save")}
|
{t("save")}
|
||||||
</Button>
|
</Button>
|
||||||
<Button variant="link" onClick={reset} data-testid="fineGrainRevert">
|
<Button variant="link" onClick={reset} data-testid="fineGrainRevert">
|
||||||
{t("common:revert")}
|
{t("revert")}
|
||||||
</Button>
|
</Button>
|
||||||
</ActionGroup>
|
</ActionGroup>
|
||||||
</FormAccess>
|
</FormAccess>
|
||||||
|
|
|
@ -46,8 +46,8 @@ export const OpenIdConnectCompatibilityModes = ({
|
||||||
render={({ field }) => (
|
render={({ field }) => (
|
||||||
<Switch
|
<Switch
|
||||||
id="excludeSessionStateFromAuthenticationResponse-switch"
|
id="excludeSessionStateFromAuthenticationResponse-switch"
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={field.value === "true"}
|
isChecked={field.value === "true"}
|
||||||
onChange={(value) => field.onChange(value.toString())}
|
onChange={(value) => field.onChange(value.toString())}
|
||||||
aria-label={t("excludeSessionStateFromAuthenticationResponse")}
|
aria-label={t("excludeSessionStateFromAuthenticationResponse")}
|
||||||
|
@ -75,8 +75,8 @@ export const OpenIdConnectCompatibilityModes = ({
|
||||||
render={({ field }) => (
|
render={({ field }) => (
|
||||||
<Switch
|
<Switch
|
||||||
id="excludeIssuerFromAuthenticationResponse-switch"
|
id="excludeIssuerFromAuthenticationResponse-switch"
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={field.value === "true"}
|
isChecked={field.value === "true"}
|
||||||
onChange={(value) => field.onChange(value.toString())}
|
onChange={(value) => field.onChange(value.toString())}
|
||||||
aria-label={t("excludeIssuerFromAuthenticationResponse")}
|
aria-label={t("excludeIssuerFromAuthenticationResponse")}
|
||||||
|
@ -104,8 +104,8 @@ export const OpenIdConnectCompatibilityModes = ({
|
||||||
render={({ field }) => (
|
render={({ field }) => (
|
||||||
<Switch
|
<Switch
|
||||||
id="useRefreshTokens"
|
id="useRefreshTokens"
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={field.value === "true"}
|
isChecked={field.value === "true"}
|
||||||
onChange={(value) => field.onChange(value.toString())}
|
onChange={(value) => field.onChange(value.toString())}
|
||||||
aria-label={t("useRefreshTokens")}
|
aria-label={t("useRefreshTokens")}
|
||||||
|
@ -133,8 +133,8 @@ export const OpenIdConnectCompatibilityModes = ({
|
||||||
render={({ field }) => (
|
render={({ field }) => (
|
||||||
<Switch
|
<Switch
|
||||||
id="useRefreshTokenForClientCredentialsGrant"
|
id="useRefreshTokenForClientCredentialsGrant"
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={field.value === "true"}
|
isChecked={field.value === "true"}
|
||||||
onChange={(value) => field.onChange(value.toString())}
|
onChange={(value) => field.onChange(value.toString())}
|
||||||
aria-label={t("useRefreshTokenForClientCredentialsGrant")}
|
aria-label={t("useRefreshTokenForClientCredentialsGrant")}
|
||||||
|
@ -162,8 +162,8 @@ export const OpenIdConnectCompatibilityModes = ({
|
||||||
render={({ field }) => (
|
render={({ field }) => (
|
||||||
<Switch
|
<Switch
|
||||||
id="useLowerCaseBearerType"
|
id="useLowerCaseBearerType"
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={field.value === "true"}
|
isChecked={field.value === "true"}
|
||||||
onChange={(value) => field.onChange(value.toString())}
|
onChange={(value) => field.onChange(value.toString())}
|
||||||
aria-label={t("useLowerCaseBearerType")}
|
aria-label={t("useLowerCaseBearerType")}
|
||||||
|
@ -177,14 +177,14 @@ export const OpenIdConnectCompatibilityModes = ({
|
||||||
onClick={save}
|
onClick={save}
|
||||||
data-testid="OIDCCompatabilitySave"
|
data-testid="OIDCCompatabilitySave"
|
||||||
>
|
>
|
||||||
{t("common:save")}
|
{t("save")}
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
variant="link"
|
variant="link"
|
||||||
onClick={reset}
|
onClick={reset}
|
||||||
data-testid="OIDCCompatabilityRevert"
|
data-testid="OIDCCompatabilityRevert"
|
||||||
>
|
>
|
||||||
{t("common:revert")}
|
{t("revert")}
|
||||||
</Button>
|
</Button>
|
||||||
</ActionGroup>
|
</ActionGroup>
|
||||||
</FormAccess>
|
</FormAccess>
|
||||||
|
|
|
@ -49,7 +49,7 @@ export const RevocationPanel = ({
|
||||||
if (date > 0) {
|
if (date > 0) {
|
||||||
return formatDate(new Date(date * 1000), FORMAT_DATE_AND_TIME);
|
return formatDate(new Date(date * 1000), FORMAT_DATE_AND_TIME);
|
||||||
} else {
|
} else {
|
||||||
return t("common:none");
|
return t("none");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -50,7 +50,7 @@ export const AuthorizationDataModal = ({
|
||||||
key="cancel"
|
key="cancel"
|
||||||
onClick={toggle}
|
onClick={toggle}
|
||||||
>
|
>
|
||||||
{t("common:cancel")}
|
{t("cancel")}
|
||||||
</Button>,
|
</Button>,
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
|
|
|
@ -228,7 +228,7 @@ const AuthorizationEvaluateContent = ({ client }: Props) => {
|
||||||
}
|
}
|
||||||
fieldId="realmRole"
|
fieldId="realmRole"
|
||||||
validated={errors.roleIds ? "error" : "default"}
|
validated={errors.roleIds ? "error" : "default"}
|
||||||
helperTextInvalid={t("common:required")}
|
helperTextInvalid={t("required")}
|
||||||
isRequired={user.length === 0}
|
isRequired={user.length === 0}
|
||||||
>
|
>
|
||||||
<Controller
|
<Controller
|
||||||
|
@ -298,8 +298,8 @@ const AuthorizationEvaluateContent = ({ client }: Props) => {
|
||||||
>
|
>
|
||||||
<Switch
|
<Switch
|
||||||
id="applyToResource-switch"
|
id="applyToResource-switch"
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={applyToResourceType}
|
isChecked={applyToResourceType}
|
||||||
onChange={setApplyToResourceType}
|
onChange={setApplyToResourceType}
|
||||||
aria-label={t("applyToResourceType")}
|
aria-label={t("applyToResourceType")}
|
||||||
|
@ -340,7 +340,7 @@ const AuthorizationEvaluateContent = ({ client }: Props) => {
|
||||||
}
|
}
|
||||||
fieldId="client"
|
fieldId="client"
|
||||||
validated={errors.alias ? "error" : "default"}
|
validated={errors.alias ? "error" : "default"}
|
||||||
helperTextInvalid={t("common:required")}
|
helperTextInvalid={t("required")}
|
||||||
>
|
>
|
||||||
<KeycloakTextInput
|
<KeycloakTextInput
|
||||||
id="alias"
|
id="alias"
|
||||||
|
@ -412,7 +412,7 @@ const AuthorizationEvaluateContent = ({ client }: Props) => {
|
||||||
fieldLabelId={`contextualAttributes`}
|
fieldLabelId={`contextualAttributes`}
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
helperTextInvalid={t("common:required")}
|
helperTextInvalid={t("required")}
|
||||||
fieldId="contextualAttributes"
|
fieldId="contextualAttributes"
|
||||||
>
|
>
|
||||||
<KeyBasedAttributeInput
|
<KeyBasedAttributeInput
|
||||||
|
@ -441,7 +441,7 @@ const AuthorizationEvaluateContent = ({ client }: Props) => {
|
||||||
variant="link"
|
variant="link"
|
||||||
onClick={() => reset()}
|
onClick={() => reset()}
|
||||||
>
|
>
|
||||||
{t("common:revert")}
|
{t("revert")}
|
||||||
</Button>
|
</Button>
|
||||||
</ActionGroup>
|
</ActionGroup>
|
||||||
</FormProvider>
|
</FormProvider>
|
||||||
|
|
|
@ -88,7 +88,7 @@ export const AuthorizationExport = () => {
|
||||||
data-testid="authorization-export-download"
|
data-testid="authorization-export-download"
|
||||||
onClick={() => exportAuthDetails()}
|
onClick={() => exportAuthDetails()}
|
||||||
>
|
>
|
||||||
{t("common:download")}
|
{t("download")}
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
data-testid="authorization-export-copy"
|
data-testid="authorization-export-copy"
|
||||||
|
|
|
@ -44,7 +44,7 @@ export function DetailDescriptionLink<T>({
|
||||||
</span>
|
</span>
|
||||||
);
|
);
|
||||||
})}
|
})}
|
||||||
{array?.length === 0 && <i>{t("common:none")}</i>}
|
{array?.length === 0 && <i>{t("none")}</i>}
|
||||||
</DescriptionListDescription>
|
</DescriptionListDescription>
|
||||||
</DescriptionListGroup>
|
</DescriptionListGroup>
|
||||||
);
|
);
|
||||||
|
|
|
@ -51,7 +51,7 @@ export const ImportDialog = ({ onConfirm, closeDialog }: ImportDialogProps) => {
|
||||||
closeDialog();
|
closeDialog();
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{t("common:cancel")}
|
{t("cancel")}
|
||||||
</Button>,
|
</Button>,
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
|
@ -118,8 +118,8 @@ export const ImportDialog = ({ onConfirm, closeDialog }: ImportDialogProps) => {
|
||||||
>
|
>
|
||||||
<Switch
|
<Switch
|
||||||
id="allowRemoteResourceManagement"
|
id="allowRemoteResourceManagement"
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={imported.allowRemoteResourceManagement}
|
isChecked={imported.allowRemoteResourceManagement}
|
||||||
isDisabled
|
isDisabled
|
||||||
aria-label={t("allowRemoteResourceManagement")}
|
aria-label={t("allowRemoteResourceManagement")}
|
||||||
|
|
|
@ -113,8 +113,8 @@ const ValueInput = ({
|
||||||
name={`${name}.${rowIndex}.value`}
|
name={`${name}.${rowIndex}.value`}
|
||||||
chipGroupProps={{
|
chipGroupProps={{
|
||||||
numChips: 1,
|
numChips: 1,
|
||||||
expandedText: t("common:hide"),
|
expandedText: t("hide"),
|
||||||
collapsedText: t("common:showRemaining"),
|
collapsedText: t("showRemaining"),
|
||||||
}}
|
}}
|
||||||
onToggle={(open) => toggleValueSelect(rowIndex, open)}
|
onToggle={(open) => toggleValueSelect(rowIndex, open)}
|
||||||
isOpen={isValueOpenArray[rowIndex]}
|
isOpen={isValueOpenArray[rowIndex]}
|
||||||
|
@ -138,7 +138,7 @@ const ValueInput = ({
|
||||||
className="value-input"
|
className="value-input"
|
||||||
defaultValue={attribute.value}
|
defaultValue={attribute.value}
|
||||||
data-testid="attribute-value-input"
|
data-testid="attribute-value-input"
|
||||||
aria-label={t("common:value")}
|
aria-label={t("value")}
|
||||||
{...register(`${name}.${rowIndex}.value`)}
|
{...register(`${name}.${rowIndex}.value`)}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
@ -236,7 +236,7 @@ export const KeyBasedAttributeInput = ({
|
||||||
variant="link"
|
variant="link"
|
||||||
className="kc-attributes__minus-icon"
|
className="kc-attributes__minus-icon"
|
||||||
onClick={() => remove(rowIndex)}
|
onClick={() => remove(rowIndex)}
|
||||||
aria-label={t("common:remove")}
|
aria-label={t("remove")}
|
||||||
>
|
>
|
||||||
<MinusCircleIcon />
|
<MinusCircleIcon />
|
||||||
</Button>
|
</Button>
|
||||||
|
|
|
@ -11,7 +11,5 @@ export const MoreLabel = ({ array }: MoreLabelProps) => {
|
||||||
if (!array || array.length <= 1) {
|
if (!array || array.length <= 1) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return (
|
return <Label color="blue">{t("more", { count: array.length - 1 })}</Label>;
|
||||||
<Label color="blue">{t("common:more", { count: array.length - 1 })}</Label>
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -56,8 +56,8 @@ export const NewPolicyDialog = ({
|
||||||
<TableComposable aria-label={t("policies")} variant="compact">
|
<TableComposable aria-label={t("policies")} variant="compact">
|
||||||
<Thead>
|
<Thead>
|
||||||
<Tr>
|
<Tr>
|
||||||
<Th>{t("common:name")}</Th>
|
<Th>{t("name")}</Th>
|
||||||
<Th>{t("common:description")}</Th>
|
<Th>{t("description")}</Th>
|
||||||
</Tr>
|
</Tr>
|
||||||
</Thead>
|
</Thead>
|
||||||
<Tbody>
|
<Tbody>
|
||||||
|
|
|
@ -91,7 +91,7 @@ export default function PermissionDetails() {
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if (!permission) {
|
if (!permission) {
|
||||||
throw new Error(t("common:notFound"));
|
throw new Error(t("notFound"));
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
@ -194,7 +194,7 @@ export default function PermissionDetails() {
|
||||||
data-testid="delete-resource"
|
data-testid="delete-resource"
|
||||||
onClick={() => toggleDeleteDialog()}
|
onClick={() => toggleDeleteDialog()}
|
||||||
>
|
>
|
||||||
{t("common:delete")}
|
{t("delete")}
|
||||||
</DropdownItem>,
|
</DropdownItem>,
|
||||||
]
|
]
|
||||||
: undefined
|
: undefined
|
||||||
|
@ -208,9 +208,9 @@ export default function PermissionDetails() {
|
||||||
>
|
>
|
||||||
<FormProvider {...form}>
|
<FormProvider {...form}>
|
||||||
<FormGroup
|
<FormGroup
|
||||||
label={t("common:name")}
|
label={t("name")}
|
||||||
isRequired
|
isRequired
|
||||||
helperTextInvalid={t("common:required")}
|
helperTextInvalid={t("required")}
|
||||||
validated={errors.name ? "error" : "default"}
|
validated={errors.name ? "error" : "default"}
|
||||||
fieldId="name"
|
fieldId="name"
|
||||||
labelIcon={
|
labelIcon={
|
||||||
|
@ -224,7 +224,7 @@ export default function PermissionDetails() {
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
<FormGroup
|
<FormGroup
|
||||||
label={t("common:description")}
|
label={t("description")}
|
||||||
fieldId="description"
|
fieldId="description"
|
||||||
labelIcon={
|
labelIcon={
|
||||||
<HelpItem
|
<HelpItem
|
||||||
|
@ -241,7 +241,7 @@ export default function PermissionDetails() {
|
||||||
{...register("description", {
|
{...register("description", {
|
||||||
maxLength: {
|
maxLength: {
|
||||||
value: 255,
|
value: 255,
|
||||||
message: t("common:maxLength", { length: 255 }),
|
message: t("maxLength", { length: 255 }),
|
||||||
},
|
},
|
||||||
})}
|
})}
|
||||||
/>
|
/>
|
||||||
|
@ -259,8 +259,8 @@ export default function PermissionDetails() {
|
||||||
<Switch
|
<Switch
|
||||||
id="applyToResourceTypeFlag"
|
id="applyToResourceTypeFlag"
|
||||||
name="applyToResourceTypeFlag"
|
name="applyToResourceTypeFlag"
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={applyToResourceTypeFlag}
|
isChecked={applyToResourceTypeFlag}
|
||||||
onChange={setApplyToResourceTypeFlag}
|
onChange={setApplyToResourceTypeFlag}
|
||||||
aria-label={t("applyToResourceTypeFlag")}
|
aria-label={t("applyToResourceTypeFlag")}
|
||||||
|
@ -295,7 +295,7 @@ export default function PermissionDetails() {
|
||||||
fieldLabelId="resources"
|
fieldLabelId="resources"
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
helperTextInvalid={t("common:required")}
|
helperTextInvalid={t("required")}
|
||||||
validated={errors.resources ? "error" : "default"}
|
validated={errors.resources ? "error" : "default"}
|
||||||
isRequired={permissionType !== "scope"}
|
isRequired={permissionType !== "scope"}
|
||||||
>
|
>
|
||||||
|
@ -325,7 +325,7 @@ export default function PermissionDetails() {
|
||||||
fieldLabelId="scopesSelect"
|
fieldLabelId="scopesSelect"
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
helperTextInvalid={t("common:required")}
|
helperTextInvalid={t("required")}
|
||||||
validated={errors.scopes ? "error" : "default"}
|
validated={errors.scopes ? "error" : "default"}
|
||||||
isRequired
|
isRequired
|
||||||
>
|
>
|
||||||
|
@ -393,7 +393,7 @@ export default function PermissionDetails() {
|
||||||
type="submit"
|
type="submit"
|
||||||
data-testid="save"
|
data-testid="save"
|
||||||
>
|
>
|
||||||
{t("common:save")}
|
{t("save")}
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
|
@ -410,7 +410,7 @@ export default function PermissionDetails() {
|
||||||
></Link>
|
></Link>
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
{t("common:cancel")}
|
{t("cancel")}
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
</ActionGroup>
|
</ActionGroup>
|
||||||
|
|
|
@ -267,10 +267,10 @@ export const AuthorizationPermissions = ({ clientId }: PermissionsProps) => {
|
||||||
<Thead>
|
<Thead>
|
||||||
<Tr>
|
<Tr>
|
||||||
<Th aria-hidden="true" />
|
<Th aria-hidden="true" />
|
||||||
<Th>{t("common:name")}</Th>
|
<Th>{t("name")}</Th>
|
||||||
<Th>{t("common:type")}</Th>
|
<Th>{t("type")}</Th>
|
||||||
<Th>{t("associatedPolicy")}</Th>
|
<Th>{t("associatedPolicy")}</Th>
|
||||||
<Th>{t("common:description")}</Th>
|
<Th>{t("description")}</Th>
|
||||||
<Th aria-hidden="true" />
|
<Th aria-hidden="true" />
|
||||||
</Tr>
|
</Tr>
|
||||||
</Thead>
|
</Thead>
|
||||||
|
@ -317,7 +317,7 @@ export const AuthorizationPermissions = ({ clientId }: PermissionsProps) => {
|
||||||
actions={{
|
actions={{
|
||||||
items: [
|
items: [
|
||||||
{
|
{
|
||||||
title: t("common:delete"),
|
title: t("delete"),
|
||||||
onClick: async () => {
|
onClick: async () => {
|
||||||
setSelectedPermission(permission);
|
setSelectedPermission(permission);
|
||||||
toggleDeleteDialog();
|
toggleDeleteDialog();
|
||||||
|
@ -373,8 +373,8 @@ export const AuthorizationPermissions = ({ clientId }: PermissionsProps) => {
|
||||||
{noData && searching && (
|
{noData && searching && (
|
||||||
<ListEmptyState
|
<ListEmptyState
|
||||||
isSearchVariant
|
isSearchVariant
|
||||||
message={t("common:noSearchResults")}
|
message={t("noSearchResults")}
|
||||||
instructions={t("common:noSearchResultsInstructions")}
|
instructions={t("noSearchResultsInstructions")}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</PageSection>
|
</PageSection>
|
||||||
|
|
|
@ -213,10 +213,10 @@ export const AuthorizationPolicies = ({ clientId }: PoliciesProps) => {
|
||||||
<Thead>
|
<Thead>
|
||||||
<Tr>
|
<Tr>
|
||||||
<Th aria-hidden="true" />
|
<Th aria-hidden="true" />
|
||||||
<Th>{t("common:name")}</Th>
|
<Th>{t("name")}</Th>
|
||||||
<Th>{t("common:type")}</Th>
|
<Th>{t("type")}</Th>
|
||||||
<Th>{t("dependentPermission")}</Th>
|
<Th>{t("dependentPermission")}</Th>
|
||||||
<Th>{t("common:description")}</Th>
|
<Th>{t("description")}</Th>
|
||||||
<Th aria-hidden="true" />
|
<Th aria-hidden="true" />
|
||||||
</Tr>
|
</Tr>
|
||||||
</Thead>
|
</Thead>
|
||||||
|
@ -258,7 +258,7 @@ export const AuthorizationPolicies = ({ clientId }: PoliciesProps) => {
|
||||||
actions={{
|
actions={{
|
||||||
items: [
|
items: [
|
||||||
{
|
{
|
||||||
title: t("common:delete"),
|
title: t("delete"),
|
||||||
onClick: async () => {
|
onClick: async () => {
|
||||||
setSelectedPolicy(policy);
|
setSelectedPolicy(policy);
|
||||||
toggleDeleteDialog();
|
toggleDeleteDialog();
|
||||||
|
@ -308,8 +308,8 @@ export const AuthorizationPolicies = ({ clientId }: PoliciesProps) => {
|
||||||
{noData && searching && (
|
{noData && searching && (
|
||||||
<ListEmptyState
|
<ListEmptyState
|
||||||
isSearchVariant
|
isSearchVariant
|
||||||
message={t("common:noSearchResults")}
|
message={t("noSearchResults")}
|
||||||
instructions={t("common:noSearchResultsInstructions")}
|
instructions={t("noSearchResultsInstructions")}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{noData && !searching && (
|
{noData && !searching && (
|
||||||
|
|
|
@ -85,7 +85,7 @@ export default function ResourceDetails() {
|
||||||
]),
|
]),
|
||||||
([client, resource, permissions]) => {
|
([client, resource, permissions]) => {
|
||||||
if (!client) {
|
if (!client) {
|
||||||
throw new Error(t("common:notFound"));
|
throw new Error(t("notFound"));
|
||||||
}
|
}
|
||||||
setClient(client);
|
setClient(client);
|
||||||
setPermission(permissions);
|
setPermission(permissions);
|
||||||
|
@ -176,7 +176,7 @@ export default function ResourceDetails() {
|
||||||
data-testid="delete-resource"
|
data-testid="delete-resource"
|
||||||
onClick={() => toggleDeleteDialog()}
|
onClick={() => toggleDeleteDialog()}
|
||||||
>
|
>
|
||||||
{t("common:delete")}
|
{t("delete")}
|
||||||
</DropdownItem>,
|
</DropdownItem>,
|
||||||
]
|
]
|
||||||
: undefined
|
: undefined
|
||||||
|
@ -204,12 +204,12 @@ export default function ResourceDetails() {
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
<FormGroup
|
<FormGroup
|
||||||
label={t("common:name")}
|
label={t("name")}
|
||||||
fieldId="name"
|
fieldId="name"
|
||||||
labelIcon={
|
labelIcon={
|
||||||
<HelpItem helpText={t("resourceName")} fieldLabelId="name" />
|
<HelpItem helpText={t("resourceName")} fieldLabelId="name" />
|
||||||
}
|
}
|
||||||
helperTextInvalid={t("common:required")}
|
helperTextInvalid={t("required")}
|
||||||
validated={
|
validated={
|
||||||
errors.name ? ValidatedOptions.error : ValidatedOptions.default
|
errors.name ? ValidatedOptions.error : ValidatedOptions.default
|
||||||
}
|
}
|
||||||
|
@ -292,8 +292,8 @@ export default function ResourceDetails() {
|
||||||
render={({ field }) => (
|
render={({ field }) => (
|
||||||
<Switch
|
<Switch
|
||||||
id="ownerManagedAccess"
|
id="ownerManagedAccess"
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={field.value}
|
isChecked={field.value}
|
||||||
onChange={field.onChange}
|
onChange={field.onChange}
|
||||||
aria-label={t("ownerManagedAccess")}
|
aria-label={t("ownerManagedAccess")}
|
||||||
|
@ -322,7 +322,7 @@ export default function ResourceDetails() {
|
||||||
type="submit"
|
type="submit"
|
||||||
data-testid="save"
|
data-testid="save"
|
||||||
>
|
>
|
||||||
{t("common:save")}
|
{t("save")}
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
|
@ -339,7 +339,7 @@ export default function ResourceDetails() {
|
||||||
></Link>
|
></Link>
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
{t("common:cancel")}
|
{t("cancel")}
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
</ActionGroup>
|
</ActionGroup>
|
||||||
|
|
|
@ -186,9 +186,9 @@ export const AuthorizationResources = ({ clientId }: ResourcesProps) => {
|
||||||
<Thead>
|
<Thead>
|
||||||
<Tr>
|
<Tr>
|
||||||
<Th aria-hidden="true" />
|
<Th aria-hidden="true" />
|
||||||
<Th>{t("common:name")}</Th>
|
<Th>{t("name")}</Th>
|
||||||
<Th>{t("displayName")}</Th>
|
<Th>{t("displayName")}</Th>
|
||||||
<Th>{t("common:type")}</Th>
|
<Th>{t("type")}</Th>
|
||||||
<Th>{t("owner")}</Th>
|
<Th>{t("owner")}</Th>
|
||||||
<Th>{t("uris")}</Th>
|
<Th>{t("uris")}</Th>
|
||||||
<Th aria-hidden="true" />
|
<Th aria-hidden="true" />
|
||||||
|
@ -254,7 +254,7 @@ export const AuthorizationResources = ({ clientId }: ResourcesProps) => {
|
||||||
actions={{
|
actions={{
|
||||||
items: [
|
items: [
|
||||||
{
|
{
|
||||||
title: t("common:delete"),
|
title: t("delete"),
|
||||||
onClick: async () => {
|
onClick: async () => {
|
||||||
setSelectedResource(resource);
|
setSelectedResource(resource);
|
||||||
setPermission(
|
setPermission(
|
||||||
|
@ -293,8 +293,8 @@ export const AuthorizationResources = ({ clientId }: ResourcesProps) => {
|
||||||
{noData && searching && (
|
{noData && searching && (
|
||||||
<ListEmptyState
|
<ListEmptyState
|
||||||
isSearchVariant
|
isSearchVariant
|
||||||
message={t("common:noSearchResults")}
|
message={t("noSearchResults")}
|
||||||
instructions={t("common:noSearchResultsInstructions")}
|
instructions={t("noSearchResultsInstructions")}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{noData && !searching && (
|
{noData && !searching && (
|
||||||
|
|
|
@ -147,7 +147,7 @@ export const ResourcesPolicySelect = ({
|
||||||
const [toggleUnsavedChangesDialog, UnsavedChangesConfirm] = useConfirmDialog({
|
const [toggleUnsavedChangesDialog, UnsavedChangesConfirm] = useConfirmDialog({
|
||||||
titleKey: t("unsavedChangesTitle"),
|
titleKey: t("unsavedChangesTitle"),
|
||||||
messageKey: t("unsavedChangesConfirm"),
|
messageKey: t("unsavedChangesConfirm"),
|
||||||
continueButtonLabel: t("common:continue"),
|
continueButtonLabel: t("continue"),
|
||||||
continueButtonVariant: ButtonVariant.danger,
|
continueButtonVariant: ButtonVariant.danger,
|
||||||
onConfirm: () => onUnsavedChangesConfirm?.(),
|
onConfirm: () => onUnsavedChangesConfirm?.(),
|
||||||
});
|
});
|
||||||
|
|
|
@ -55,7 +55,7 @@ export default function ScopeDetails() {
|
||||||
scopeId,
|
scopeId,
|
||||||
});
|
});
|
||||||
if (!scope) {
|
if (!scope) {
|
||||||
throw new Error(t("common:notFound"));
|
throw new Error(t("notFound"));
|
||||||
}
|
}
|
||||||
return scope;
|
return scope;
|
||||||
}
|
}
|
||||||
|
@ -116,7 +116,7 @@ export default function ScopeDetails() {
|
||||||
data-testid="delete-resource"
|
data-testid="delete-resource"
|
||||||
onClick={() => toggleDeleteDialog()}
|
onClick={() => toggleDeleteDialog()}
|
||||||
>
|
>
|
||||||
{t("common:delete")}
|
{t("delete")}
|
||||||
</DropdownItem>,
|
</DropdownItem>,
|
||||||
]
|
]
|
||||||
: undefined
|
: undefined
|
||||||
|
@ -129,12 +129,12 @@ export default function ScopeDetails() {
|
||||||
onSubmit={handleSubmit(onSubmit)}
|
onSubmit={handleSubmit(onSubmit)}
|
||||||
>
|
>
|
||||||
<FormGroup
|
<FormGroup
|
||||||
label={t("common:name")}
|
label={t("name")}
|
||||||
fieldId="name"
|
fieldId="name"
|
||||||
labelIcon={
|
labelIcon={
|
||||||
<HelpItem helpText={t("scopeName")} fieldLabelId="name" />
|
<HelpItem helpText={t("scopeName")} fieldLabelId="name" />
|
||||||
}
|
}
|
||||||
helperTextInvalid={t("common:required")}
|
helperTextInvalid={t("required")}
|
||||||
validated={
|
validated={
|
||||||
errors.name ? ValidatedOptions.error : ValidatedOptions.default
|
errors.name ? ValidatedOptions.error : ValidatedOptions.default
|
||||||
}
|
}
|
||||||
|
@ -177,7 +177,7 @@ export default function ScopeDetails() {
|
||||||
type="submit"
|
type="submit"
|
||||||
data-testid="save"
|
data-testid="save"
|
||||||
>
|
>
|
||||||
{t("common:save")}
|
{t("save")}
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
{!scope ? (
|
{!scope ? (
|
||||||
|
@ -195,7 +195,7 @@ export default function ScopeDetails() {
|
||||||
></Link>
|
></Link>
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
{t("common:cancel")}
|
{t("cancel")}
|
||||||
</Button>
|
</Button>
|
||||||
) : (
|
) : (
|
||||||
<Button
|
<Button
|
||||||
|
@ -203,7 +203,7 @@ export default function ScopeDetails() {
|
||||||
data-testid="revert"
|
data-testid="revert"
|
||||||
onClick={() => reset({ ...scope })}
|
onClick={() => reset({ ...scope })}
|
||||||
>
|
>
|
||||||
{t("common:revert")}
|
{t("revert")}
|
||||||
</Button>
|
</Button>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -66,8 +66,8 @@ export const ScopePicker = ({ clientId }: { clientId: string }) => {
|
||||||
variant={SelectVariant.typeaheadMulti}
|
variant={SelectVariant.typeaheadMulti}
|
||||||
chipGroupProps={{
|
chipGroupProps={{
|
||||||
numChips: 3,
|
numChips: 3,
|
||||||
expandedText: t("common:hide"),
|
expandedText: t("hide"),
|
||||||
collapsedText: t("common:showRemaining"),
|
collapsedText: t("showRemaining"),
|
||||||
}}
|
}}
|
||||||
onToggle={setOpen}
|
onToggle={setOpen}
|
||||||
isOpen={open}
|
isOpen={open}
|
||||||
|
|
|
@ -184,7 +184,7 @@ export const AuthorizationScopes = ({ clientId }: ScopesProps) => {
|
||||||
<Thead>
|
<Thead>
|
||||||
<Tr>
|
<Tr>
|
||||||
<Th aria-hidden="true" />
|
<Th aria-hidden="true" />
|
||||||
<Th>{t("common:name")}</Th>
|
<Th>{t("name")}</Th>
|
||||||
<Th>{t("displayName")}</Th>
|
<Th>{t("displayName")}</Th>
|
||||||
<Th aria-hidden="true" />
|
<Th aria-hidden="true" />
|
||||||
<Th aria-hidden="true" />
|
<Th aria-hidden="true" />
|
||||||
|
@ -241,7 +241,7 @@ export const AuthorizationScopes = ({ clientId }: ScopesProps) => {
|
||||||
actions={{
|
actions={{
|
||||||
items: [
|
items: [
|
||||||
{
|
{
|
||||||
title: t("common:delete"),
|
title: t("delete"),
|
||||||
onClick: () => {
|
onClick: () => {
|
||||||
setSelectedScope(scope);
|
setSelectedScope(scope);
|
||||||
toggleDeleteDialog();
|
toggleDeleteDialog();
|
||||||
|
@ -312,8 +312,8 @@ export const AuthorizationScopes = ({ clientId }: ScopesProps) => {
|
||||||
{noData && searching && (
|
{noData && searching && (
|
||||||
<ListEmptyState
|
<ListEmptyState
|
||||||
isSearchVariant
|
isSearchVariant
|
||||||
message={t("common:noSearchResults")}
|
message={t("noSearchResults")}
|
||||||
instructions={t("common:noSearchResultsInstructions")}
|
instructions={t("noSearchResultsInstructions")}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</PageSection>
|
</PageSection>
|
||||||
|
|
|
@ -94,7 +94,7 @@ export const SearchDropdown = ({
|
||||||
className="keycloak__client_authentication__searchdropdown_form"
|
className="keycloak__client_authentication__searchdropdown_form"
|
||||||
onSubmit={handleSubmit(submit)}
|
onSubmit={handleSubmit(submit)}
|
||||||
>
|
>
|
||||||
<FormGroup label={t("common:name")} fieldId="name">
|
<FormGroup label={t("name")} fieldId="name">
|
||||||
<KeycloakTextInput
|
<KeycloakTextInput
|
||||||
id="name"
|
id="name"
|
||||||
data-testid="searchdropdown_name"
|
data-testid="searchdropdown_name"
|
||||||
|
@ -103,7 +103,7 @@ export const SearchDropdown = ({
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
{isResource && (
|
{isResource && (
|
||||||
<>
|
<>
|
||||||
<FormGroup label={t("common:type")} fieldId="type">
|
<FormGroup label={t("type")} fieldId="type">
|
||||||
<KeycloakTextInput
|
<KeycloakTextInput
|
||||||
id="type"
|
id="type"
|
||||||
data-testid="searchdropdown_type"
|
data-testid="searchdropdown_type"
|
||||||
|
@ -143,7 +143,7 @@ export const SearchDropdown = ({
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
{!isResource && (
|
{!isResource && (
|
||||||
<FormGroup label={t("common:type")} fieldId="type">
|
<FormGroup label={t("type")} fieldId="type">
|
||||||
<Controller
|
<Controller
|
||||||
name="type"
|
name="type"
|
||||||
defaultValue=""
|
defaultValue=""
|
||||||
|
@ -159,7 +159,7 @@ export const SearchDropdown = ({
|
||||||
}}
|
}}
|
||||||
selections={field.value || t("allTypes")}
|
selections={field.value || t("allTypes")}
|
||||||
variant={SelectVariant.single}
|
variant={SelectVariant.single}
|
||||||
aria-label={t("common:type")}
|
aria-label={t("type")}
|
||||||
isOpen={typeOpen}
|
isOpen={typeOpen}
|
||||||
>
|
>
|
||||||
{typeOptions(field.value)}
|
{typeOptions(field.value)}
|
||||||
|
@ -175,14 +175,14 @@ export const SearchDropdown = ({
|
||||||
data-testid="search-btn"
|
data-testid="search-btn"
|
||||||
isDisabled={!isDirty}
|
isDisabled={!isDirty}
|
||||||
>
|
>
|
||||||
{t("common:search")}
|
{t("search")}
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
variant="link"
|
variant="link"
|
||||||
data-testid="revert-btn"
|
data-testid="revert-btn"
|
||||||
onClick={() => onSearch({})}
|
onClick={() => onSearch({})}
|
||||||
>
|
>
|
||||||
{t("common:clear")}
|
{t("clear")}
|
||||||
</Button>
|
</Button>
|
||||||
</ActionGroup>
|
</ActionGroup>
|
||||||
</Form>
|
</Form>
|
||||||
|
|
|
@ -160,8 +160,8 @@ export const AuthorizationSettings = ({ clientId }: { clientId: string }) => {
|
||||||
render={({ field }) => (
|
render={({ field }) => (
|
||||||
<Switch
|
<Switch
|
||||||
id="allowRemoteResourceManagement"
|
id="allowRemoteResourceManagement"
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={field.value}
|
isChecked={field.value}
|
||||||
onChange={field.onChange}
|
onChange={field.onChange}
|
||||||
aria-label={t("allowRemoteResourceManagement")}
|
aria-label={t("allowRemoteResourceManagement")}
|
||||||
|
|
|
@ -92,14 +92,14 @@ export const Results = ({ evaluateResult, refresh, back }: ResultProps) => {
|
||||||
name={"inputGroupName"}
|
name={"inputGroupName"}
|
||||||
id={"inputGroupName"}
|
id={"inputGroupName"}
|
||||||
type="search"
|
type="search"
|
||||||
aria-label={t("common:search")}
|
aria-label={t("search")}
|
||||||
placeholder={t("common:search")}
|
placeholder={t("search")}
|
||||||
onChange={setSearchInput}
|
onChange={setSearchInput}
|
||||||
onKeyDown={handleKeyDown}
|
onKeyDown={handleKeyDown}
|
||||||
/>
|
/>
|
||||||
<Button
|
<Button
|
||||||
variant={ButtonVariant.control}
|
variant={ButtonVariant.control}
|
||||||
aria-label={t("common:search")}
|
aria-label={t("search")}
|
||||||
onClick={() => confirmSearchQuery()}
|
onClick={() => confirmSearchQuery()}
|
||||||
>
|
>
|
||||||
<SearchIcon />
|
<SearchIcon />
|
||||||
|
@ -170,15 +170,15 @@ export const Results = ({ evaluateResult, refresh, back }: ResultProps) => {
|
||||||
<Divider />
|
<Divider />
|
||||||
<ListEmptyState
|
<ListEmptyState
|
||||||
isSearchVariant
|
isSearchVariant
|
||||||
message={t("common:noSearchResults")}
|
message={t("noSearchResults")}
|
||||||
instructions={t("common:noSearchResultsInstructions")}
|
instructions={t("noSearchResultsInstructions")}
|
||||||
/>
|
/>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
<Form>
|
<Form>
|
||||||
<FixedButtonsGroup name="authorization">
|
<FixedButtonsGroup name="authorization">
|
||||||
<Button data-testid="authorization-eval" id="back-btn" onClick={back}>
|
<Button data-testid="authorization-eval" id="back-btn" onClick={back}>
|
||||||
{t("common:back")}
|
{t("back")}
|
||||||
</Button>{" "}
|
</Button>{" "}
|
||||||
<Button
|
<Button
|
||||||
data-testid="authorization-reevaluate"
|
data-testid="authorization-reevaluate"
|
||||||
|
|
|
@ -104,7 +104,7 @@ export const Group = () => {
|
||||||
type="selectMany"
|
type="selectMany"
|
||||||
text={{
|
text={{
|
||||||
title: "addGroupsToGroupPolicy",
|
title: "addGroupsToGroupPolicy",
|
||||||
ok: "common:add",
|
ok: "add",
|
||||||
}}
|
}}
|
||||||
onConfirm={(groups) => {
|
onConfirm={(groups) => {
|
||||||
field.onChange([
|
field.onChange([
|
||||||
|
|
|
@ -24,9 +24,9 @@ export const NameDescription = ({
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<FormGroup
|
<FormGroup
|
||||||
label={t("common:name")}
|
label={t("name")}
|
||||||
fieldId="kc-name"
|
fieldId="kc-name"
|
||||||
helperTextInvalid={t("common:required")}
|
helperTextInvalid={t("required")}
|
||||||
validated={
|
validated={
|
||||||
errors.name ? ValidatedOptions.error : ValidatedOptions.default
|
errors.name ? ValidatedOptions.error : ValidatedOptions.default
|
||||||
}
|
}
|
||||||
|
@ -49,7 +49,7 @@ export const NameDescription = ({
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
<FormGroup
|
<FormGroup
|
||||||
label={t("common:description")}
|
label={t("description")}
|
||||||
fieldId="kc-description"
|
fieldId="kc-description"
|
||||||
labelIcon={
|
labelIcon={
|
||||||
<HelpItem
|
<HelpItem
|
||||||
|
@ -60,7 +60,7 @@ export const NameDescription = ({
|
||||||
validated={
|
validated={
|
||||||
errors.description ? ValidatedOptions.error : ValidatedOptions.default
|
errors.description ? ValidatedOptions.error : ValidatedOptions.default
|
||||||
}
|
}
|
||||||
helperTextInvalid={t("common:maxLength", { length: 255 })}
|
helperTextInvalid={t("maxLength", { length: 255 })}
|
||||||
>
|
>
|
||||||
<KeycloakTextArea
|
<KeycloakTextArea
|
||||||
isDisabled={isDisabled}
|
isDisabled={isDisabled}
|
||||||
|
|
|
@ -89,7 +89,7 @@ export default function PolicyDetails() {
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if (!result[0]) {
|
if (!result[0]) {
|
||||||
throw new Error(t("common:notFound"));
|
throw new Error(t("notFound"));
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
@ -188,7 +188,7 @@ export default function PolicyDetails() {
|
||||||
data-testid="delete-policy"
|
data-testid="delete-policy"
|
||||||
onClick={() => toggleDeleteDialog()}
|
onClick={() => toggleDeleteDialog()}
|
||||||
>
|
>
|
||||||
{t("common:delete")}
|
{t("delete")}
|
||||||
</DropdownItem>,
|
</DropdownItem>,
|
||||||
]
|
]
|
||||||
: undefined
|
: undefined
|
||||||
|
@ -214,7 +214,7 @@ export default function PolicyDetails() {
|
||||||
type="submit"
|
type="submit"
|
||||||
data-testid="save"
|
data-testid="save"
|
||||||
>
|
>
|
||||||
{t("common:save")}
|
{t("save")}
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
|
@ -231,7 +231,7 @@ export default function PolicyDetails() {
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
{t("common:cancel")}
|
{t("cancel")}
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
</ActionGroup>
|
</ActionGroup>
|
||||||
|
|
|
@ -17,7 +17,7 @@ export const Regex = () => {
|
||||||
<FormGroup
|
<FormGroup
|
||||||
label={t("targetClaim")}
|
label={t("targetClaim")}
|
||||||
fieldId="targetClaim"
|
fieldId="targetClaim"
|
||||||
helperTextInvalid={t("common:required")}
|
helperTextInvalid={t("required")}
|
||||||
validated={errors.targetClaim ? "error" : "default"}
|
validated={errors.targetClaim ? "error" : "default"}
|
||||||
isRequired
|
isRequired
|
||||||
labelIcon={
|
labelIcon={
|
||||||
|
@ -45,7 +45,7 @@ export const Regex = () => {
|
||||||
}
|
}
|
||||||
isRequired
|
isRequired
|
||||||
validated={errors.pattern ? "error" : "default"}
|
validated={errors.pattern ? "error" : "default"}
|
||||||
helperTextInvalid={t("common:required")}
|
helperTextInvalid={t("required")}
|
||||||
>
|
>
|
||||||
<KeycloakTextInput
|
<KeycloakTextInput
|
||||||
id="pattern"
|
id="pattern"
|
||||||
|
|
|
@ -143,7 +143,7 @@ const FromTo = ({ name, ...rest }: NumberControlProps) => {
|
||||||
<SplitItem>
|
<SplitItem>
|
||||||
<NumberControl name={name} {...rest} />
|
<NumberControl name={name} {...rest} />
|
||||||
</SplitItem>
|
</SplitItem>
|
||||||
<SplitItem>{t("common:to")}</SplitItem>
|
<SplitItem>{t("to")}</SplitItem>
|
||||||
<SplitItem>
|
<SplitItem>
|
||||||
<NumberControl name={`${name}End`} {...rest} />
|
<NumberControl name={`${name}End`} {...rest} />
|
||||||
</SplitItem>
|
</SplitItem>
|
||||||
|
@ -208,7 +208,7 @@ export const Time = () => {
|
||||||
<HelpItem helpText={t("startTimeHelp")} fieldLabelId="startTime" />
|
<HelpItem helpText={t("startTimeHelp")} fieldLabelId="startTime" />
|
||||||
}
|
}
|
||||||
isRequired
|
isRequired
|
||||||
helperTextInvalid={t("common:required")}
|
helperTextInvalid={t("required")}
|
||||||
validated={
|
validated={
|
||||||
errors.notBefore ? ValidatedOptions.error : ValidatedOptions.default
|
errors.notBefore ? ValidatedOptions.error : ValidatedOptions.default
|
||||||
}
|
}
|
||||||
|
@ -222,7 +222,7 @@ export const Time = () => {
|
||||||
<HelpItem helpText={t("expireTimeHelp")} fieldLabelId="expireTime" />
|
<HelpItem helpText={t("expireTimeHelp")} fieldLabelId="expireTime" />
|
||||||
}
|
}
|
||||||
isRequired
|
isRequired
|
||||||
helperTextInvalid={t("common:required")}
|
helperTextInvalid={t("required")}
|
||||||
validated={
|
validated={
|
||||||
errors.notOnOrAfter
|
errors.notOnOrAfter
|
||||||
? ValidatedOptions.error
|
? ValidatedOptions.error
|
||||||
|
|
|
@ -101,7 +101,7 @@ export const ClientSecret = ({ client, secret, toggle }: ClientSecretProps) => {
|
||||||
const [toggleInvalidateConfirm, InvalidateConfirm] = useConfirmDialog({
|
const [toggleInvalidateConfirm, InvalidateConfirm] = useConfirmDialog({
|
||||||
titleKey: "invalidateRotatedSecret",
|
titleKey: "invalidateRotatedSecret",
|
||||||
messageKey: "invalidateRotatedSecretExplain",
|
messageKey: "invalidateRotatedSecretExplain",
|
||||||
continueButtonLabel: "common:confirm",
|
continueButtonLabel: "confirm",
|
||||||
onConfirm: async () => {
|
onConfirm: async () => {
|
||||||
try {
|
try {
|
||||||
await adminClient.clients.invalidateSecret({
|
await adminClient.clients.invalidateSecret({
|
||||||
|
|
|
@ -108,8 +108,8 @@ export const Credentials = ({ client, save, refresh }: CredentialsProps) => {
|
||||||
const [toggleClientSecretConfirm, ClientSecretConfirm] = useConfirmDialog({
|
const [toggleClientSecretConfirm, ClientSecretConfirm] = useConfirmDialog({
|
||||||
titleKey: "confirmClientSecretTitle",
|
titleKey: "confirmClientSecretTitle",
|
||||||
messageKey: "confirmClientSecretBody",
|
messageKey: "confirmClientSecretBody",
|
||||||
continueButtonLabel: "common:yes",
|
continueButtonLabel: "yes",
|
||||||
cancelButtonLabel: "common:no",
|
cancelButtonLabel: "no",
|
||||||
onConfirm: regenerateClientSecret,
|
onConfirm: regenerateClientSecret,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -125,8 +125,8 @@ export const Credentials = ({ client, save, refresh }: CredentialsProps) => {
|
||||||
const [toggleAccessTokenConfirm, AccessTokenConfirm] = useConfirmDialog({
|
const [toggleAccessTokenConfirm, AccessTokenConfirm] = useConfirmDialog({
|
||||||
titleKey: "confirmAccessTokenTitle",
|
titleKey: "confirmAccessTokenTitle",
|
||||||
messageKey: "confirmAccessTokenBody",
|
messageKey: "confirmAccessTokenBody",
|
||||||
continueButtonLabel: "common:yes",
|
continueButtonLabel: "yes",
|
||||||
cancelButtonLabel: "common:no",
|
cancelButtonLabel: "no",
|
||||||
onConfirm: regenerateAccessToken,
|
onConfirm: regenerateAccessToken,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -196,7 +196,7 @@ export const Credentials = ({ client, save, refresh }: CredentialsProps) => {
|
||||||
{clientAuthenticatorType === "client-x509" && <X509 />}
|
{clientAuthenticatorType === "client-x509" && <X509 />}
|
||||||
<ActionGroup>
|
<ActionGroup>
|
||||||
<Button variant="primary" type="submit" isDisabled={!isDirty}>
|
<Button variant="primary" type="submit" isDisabled={!isDirty}>
|
||||||
{t("common:save")}
|
{t("save")}
|
||||||
</Button>
|
</Button>
|
||||||
</ActionGroup>
|
</ActionGroup>
|
||||||
</CardBody>
|
</CardBody>
|
||||||
|
|
|
@ -35,8 +35,8 @@ export const X509 = () => {
|
||||||
render={({ field }) => (
|
render={({ field }) => (
|
||||||
<Switch
|
<Switch
|
||||||
id="allowRegexComparison"
|
id="allowRegexComparison"
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={field.value === "true"}
|
isChecked={field.value === "true"}
|
||||||
onChange={(value) => field.onChange(value.toString())}
|
onChange={(value) => field.onChange(value.toString())}
|
||||||
aria-label={t("allowRegexComparison")}
|
aria-label={t("allowRegexComparison")}
|
||||||
|
@ -50,7 +50,7 @@ export const X509 = () => {
|
||||||
labelIcon={
|
labelIcon={
|
||||||
<HelpItem helpText={t("subjectHelp")} fieldLabelId="subject" />
|
<HelpItem helpText={t("subjectHelp")} fieldLabelId="subject" />
|
||||||
}
|
}
|
||||||
helperTextInvalid={t("common:required")}
|
helperTextInvalid={t("required")}
|
||||||
validated={
|
validated={
|
||||||
errors.attributes?.[beerify("x509.subjectdn")]
|
errors.attributes?.[beerify("x509.subjectdn")]
|
||||||
? ValidatedOptions.error
|
? ValidatedOptions.error
|
||||||
|
|
|
@ -111,11 +111,11 @@ export default function ImportForm() {
|
||||||
id="realm-file"
|
id="realm-file"
|
||||||
language={Language.json}
|
language={Language.json}
|
||||||
extension=".json,.xml"
|
extension=".json,.xml"
|
||||||
helpText={t("common-help:helpFileUploadClient")}
|
helpText={t("helpFileUploadClient")}
|
||||||
onChange={handleFileChange}
|
onChange={handleFileChange}
|
||||||
/>
|
/>
|
||||||
<ClientDescription hasConfigureAccess />
|
<ClientDescription hasConfigureAccess />
|
||||||
<FormGroup label={t("common:type")} fieldId="kc-type">
|
<FormGroup label={t("type")} fieldId="kc-type">
|
||||||
<KeycloakTextInput
|
<KeycloakTextInput
|
||||||
id="kc-type"
|
id="kc-type"
|
||||||
isReadOnly
|
isReadOnly
|
||||||
|
@ -125,7 +125,7 @@ export default function ImportForm() {
|
||||||
<CapabilityConfig unWrap={true} />
|
<CapabilityConfig unWrap={true} />
|
||||||
<ActionGroup>
|
<ActionGroup>
|
||||||
<Button variant="primary" type="submit">
|
<Button variant="primary" type="submit">
|
||||||
{t("common:save")}
|
{t("save")}
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
variant="link"
|
variant="link"
|
||||||
|
@ -133,7 +133,7 @@ export default function ImportForm() {
|
||||||
<Link {...props} to={toClients({ realm })} />
|
<Link {...props} to={toClients({ realm })} />
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
{t("common:cancel")}
|
{t("cancel")}
|
||||||
</Button>
|
</Button>
|
||||||
</ActionGroup>
|
</ActionGroup>
|
||||||
</FormProvider>
|
</FormProvider>
|
||||||
|
|
|
@ -132,7 +132,7 @@ export default function CreateInitialAccessToken() {
|
||||||
data-testid="save"
|
data-testid="save"
|
||||||
isDisabled={!isValid}
|
isDisabled={!isValid}
|
||||||
>
|
>
|
||||||
{t("common:save")}
|
{t("save")}
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
data-testid="cancel"
|
data-testid="cancel"
|
||||||
|
@ -144,7 +144,7 @@ export default function CreateInitialAccessToken() {
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
{t("common:cancel")}
|
{t("cancel")}
|
||||||
</Button>
|
</Button>
|
||||||
</ActionGroup>
|
</ActionGroup>
|
||||||
</FormAccess>
|
</FormAccess>
|
||||||
|
|
|
@ -39,7 +39,7 @@ export const InitialAccessTokenList = () => {
|
||||||
const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({
|
const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({
|
||||||
titleKey: "tokenDeleteConfirmTitle",
|
titleKey: "tokenDeleteConfirmTitle",
|
||||||
messageKey: t("tokenDeleteConfirm", { id: token?.id }),
|
messageKey: t("tokenDeleteConfirm", { id: token?.id }),
|
||||||
continueButtonLabel: "common:delete",
|
continueButtonLabel: "delete",
|
||||||
continueButtonVariant: ButtonVariant.danger,
|
continueButtonVariant: ButtonVariant.danger,
|
||||||
onConfirm: async () => {
|
onConfirm: async () => {
|
||||||
try {
|
try {
|
||||||
|
@ -69,12 +69,12 @@ export const InitialAccessTokenList = () => {
|
||||||
<Link {...props} to={toCreateInitialAccessToken({ realm })} />
|
<Link {...props} to={toCreateInitialAccessToken({ realm })} />
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
{t("common:create")}
|
{t("create")}
|
||||||
</Button>
|
</Button>
|
||||||
}
|
}
|
||||||
actions={[
|
actions={[
|
||||||
{
|
{
|
||||||
title: t("common:delete"),
|
title: t("delete"),
|
||||||
onRowClick: (token) => {
|
onRowClick: (token) => {
|
||||||
setToken(token);
|
setToken(token);
|
||||||
toggleDeleteDialog();
|
toggleDeleteDialog();
|
||||||
|
@ -84,7 +84,7 @@ export const InitialAccessTokenList = () => {
|
||||||
columns={[
|
columns={[
|
||||||
{
|
{
|
||||||
name: "id",
|
name: "id",
|
||||||
displayKey: "common:id",
|
displayKey: "id",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "timestamp",
|
name: "timestamp",
|
||||||
|
@ -115,7 +115,7 @@ export const InitialAccessTokenList = () => {
|
||||||
<ListEmptyState
|
<ListEmptyState
|
||||||
message={t("noTokens")}
|
message={t("noTokens")}
|
||||||
instructions={t("noTokensInstructions")}
|
instructions={t("noTokensInstructions")}
|
||||||
primaryActionText={t("common:create")}
|
primaryActionText={t("create")}
|
||||||
onPrimaryAction={() =>
|
onPrimaryAction={() =>
|
||||||
navigate(toCreateInitialAccessToken({ realm }))
|
navigate(toCreateInitialAccessToken({ realm }))
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,7 +61,7 @@ export const ExportSamlKeyDialog = ({
|
||||||
type="submit"
|
type="submit"
|
||||||
form="export-saml-key-form"
|
form="export-saml-key-form"
|
||||||
>
|
>
|
||||||
{t("common:export")}
|
{t("export")}
|
||||||
</Button>,
|
</Button>,
|
||||||
<Button
|
<Button
|
||||||
id="modal-cancel"
|
id="modal-cancel"
|
||||||
|
@ -72,7 +72,7 @@ export const ExportSamlKeyDialog = ({
|
||||||
close();
|
close();
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{t("common:cancel")}
|
{t("cancel")}
|
||||||
</Button>,
|
</Button>,
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
|
|
|
@ -195,7 +195,7 @@ export const GenerateKeyDialog = ({
|
||||||
toggleDialog();
|
toggleDialog();
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{t("common:cancel")}
|
{t("cancel")}
|
||||||
</Button>,
|
</Button>,
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
|
|
|
@ -84,7 +84,7 @@ export const ImportKeyDialog = ({
|
||||||
toggleDialog();
|
toggleDialog();
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{t("common:cancel")}
|
{t("cancel")}
|
||||||
</Button>,
|
</Button>,
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
|
|
|
@ -156,8 +156,8 @@ export const Keys = ({ clientId, save, hasConfigureAccess }: KeysProps) => {
|
||||||
<Switch
|
<Switch
|
||||||
data-testid="useJwksUrl"
|
data-testid="useJwksUrl"
|
||||||
id="useJwksUrl-switch"
|
id="useJwksUrl-switch"
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={field.value === "true"}
|
isChecked={field.value === "true"}
|
||||||
onChange={(value) => field.onChange(`${value}`)}
|
onChange={(value) => field.onChange(`${value}`)}
|
||||||
aria-label={t("useJwksUrl")}
|
aria-label={t("useJwksUrl")}
|
||||||
|
@ -197,7 +197,7 @@ export const Keys = ({ clientId, save, hasConfigureAccess }: KeysProps) => {
|
||||||
onClick={save}
|
onClick={save}
|
||||||
isDisabled={!isDirty}
|
isDisabled={!isDirty}
|
||||||
>
|
>
|
||||||
{t("common:save")}
|
{t("save")}
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
data-testid="generate"
|
data-testid="generate"
|
||||||
|
|
|
@ -108,8 +108,8 @@ const KeySection = ({
|
||||||
<Switch
|
<Switch
|
||||||
data-testid={key}
|
data-testid={key}
|
||||||
id={key}
|
id={key}
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={field.value === "true"}
|
isChecked={field.value === "true"}
|
||||||
onChange={(value) => {
|
onChange={(value) => {
|
||||||
const v = value.toString();
|
const v = value.toString();
|
||||||
|
@ -143,7 +143,7 @@ const KeySection = ({
|
||||||
{t("importKey")}
|
{t("importKey")}
|
||||||
</Button>
|
</Button>
|
||||||
<Button variant="tertiary" onClick={toggleImportDialog}>
|
<Button variant="tertiary" onClick={toggleImportDialog}>
|
||||||
{t("common:export")}
|
{t("export")}
|
||||||
</Button>
|
</Button>
|
||||||
</ActionGroup>
|
</ActionGroup>
|
||||||
</Form>
|
</Form>
|
||||||
|
@ -207,8 +207,8 @@ export const SamlKeys = ({ clientId, save }: SamlKeysProps) => {
|
||||||
messageKey: t("disableSigningExplain", {
|
messageKey: t("disableSigningExplain", {
|
||||||
key: t(key),
|
key: t(key),
|
||||||
}),
|
}),
|
||||||
continueButtonLabel: "common:yes",
|
continueButtonLabel: "yes",
|
||||||
cancelButtonLabel: "common:no",
|
cancelButtonLabel: "no",
|
||||||
onConfirm: () => {
|
onConfirm: () => {
|
||||||
setValue(KEYS_MAPPING[selectedType!].name, "false");
|
setValue(KEYS_MAPPING[selectedType!].name, "false");
|
||||||
save();
|
save();
|
||||||
|
@ -218,8 +218,8 @@ export const SamlKeys = ({ clientId, save }: SamlKeysProps) => {
|
||||||
const [toggleReGenerateDialog, ReGenerateConfirm] = useConfirmDialog({
|
const [toggleReGenerateDialog, ReGenerateConfirm] = useConfirmDialog({
|
||||||
titleKey: "reGenerateSigning",
|
titleKey: "reGenerateSigning",
|
||||||
messageKey: "reGenerateSigningExplain",
|
messageKey: "reGenerateSigningExplain",
|
||||||
continueButtonLabel: "common:yes",
|
continueButtonLabel: "yes",
|
||||||
cancelButtonLabel: "common:no",
|
cancelButtonLabel: "no",
|
||||||
onConfirm: () => {
|
onConfirm: () => {
|
||||||
generate(selectedType!);
|
generate(selectedType!);
|
||||||
},
|
},
|
||||||
|
|
|
@ -146,7 +146,7 @@ export const SamlKeysDialog = ({
|
||||||
variant={ButtonVariant.link}
|
variant={ButtonVariant.link}
|
||||||
onClick={onCancel}
|
onClick={onCancel}
|
||||||
>
|
>
|
||||||
{t("common:cancel")}
|
{t("cancel")}
|
||||||
</Button>,
|
</Button>,
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
|
|
|
@ -29,7 +29,7 @@ export const StoreSettings = ({
|
||||||
labelIcon={
|
labelIcon={
|
||||||
<HelpItem helpText={t("keyAliasHelp")} fieldLabelId="keyAlias" />
|
<HelpItem helpText={t("keyAliasHelp")} fieldLabelId="keyAlias" />
|
||||||
}
|
}
|
||||||
helperTextInvalid={t("common:required")}
|
helperTextInvalid={t("required")}
|
||||||
validated={errors.keyAlias ? "error" : "default"}
|
validated={errors.keyAlias ? "error" : "default"}
|
||||||
>
|
>
|
||||||
<KeycloakTextInput
|
<KeycloakTextInput
|
||||||
|
@ -50,7 +50,7 @@ export const StoreSettings = ({
|
||||||
fieldLabelId="keyPassword"
|
fieldLabelId="keyPassword"
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
helperTextInvalid={t("common:required")}
|
helperTextInvalid={t("required")}
|
||||||
validated={errors.keyPassword ? "error" : "default"}
|
validated={errors.keyPassword ? "error" : "default"}
|
||||||
>
|
>
|
||||||
<PasswordInput
|
<PasswordInput
|
||||||
|
@ -89,7 +89,7 @@ export const StoreSettings = ({
|
||||||
fieldLabelId="storePassword"
|
fieldLabelId="storePassword"
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
helperTextInvalid={t("common:required")}
|
helperTextInvalid={t("required")}
|
||||||
validated={errors.storePassword ? "error" : "default"}
|
validated={errors.storePassword ? "error" : "default"}
|
||||||
>
|
>
|
||||||
<PasswordInput
|
<PasswordInput
|
||||||
|
|
|
@ -59,13 +59,11 @@ export const AddProviderDialog = ({
|
||||||
<DataListItem aria-label={t("headerName")} id="header">
|
<DataListItem aria-label={t("headerName")} id="header">
|
||||||
<DataListItemRow>
|
<DataListItemRow>
|
||||||
<DataListItemCells
|
<DataListItemCells
|
||||||
dataListCells={[t("common:name"), t("common:description")].map(
|
dataListCells={[t("name"), t("description")].map((name) => (
|
||||||
(name) => (
|
<DataListCell style={{ fontWeight: 700 }} key={name}>
|
||||||
<DataListCell style={{ fontWeight: 700 }} key={name}>
|
{name}
|
||||||
{name}
|
</DataListCell>
|
||||||
</DataListCell>
|
))}
|
||||||
),
|
|
||||||
)}
|
|
||||||
/>
|
/>
|
||||||
</DataListItemRow>
|
</DataListItemRow>
|
||||||
</DataListItem>
|
</DataListItem>
|
||||||
|
|
|
@ -69,7 +69,7 @@ export const ClientRegistrationList = ({
|
||||||
messageKey: t("clientRegisterPolicyDeleteConfirm", {
|
messageKey: t("clientRegisterPolicyDeleteConfirm", {
|
||||||
name: selectedPolicy?.name,
|
name: selectedPolicy?.name,
|
||||||
}),
|
}),
|
||||||
continueButtonLabel: "common:delete",
|
continueButtonLabel: "delete",
|
||||||
continueButtonVariant: ButtonVariant.danger,
|
continueButtonVariant: ButtonVariant.danger,
|
||||||
onConfirm: async () => {
|
onConfirm: async () => {
|
||||||
try {
|
try {
|
||||||
|
@ -115,7 +115,7 @@ export const ClientRegistrationList = ({
|
||||||
}
|
}
|
||||||
actions={[
|
actions={[
|
||||||
{
|
{
|
||||||
title: t("common:delete"),
|
title: t("delete"),
|
||||||
onRowClick: (policy) => {
|
onRowClick: (policy) => {
|
||||||
setSelectedPolicy(policy);
|
setSelectedPolicy(policy);
|
||||||
toggleDeleteDialog();
|
toggleDeleteDialog();
|
||||||
|
@ -125,7 +125,7 @@ export const ClientRegistrationList = ({
|
||||||
columns={[
|
columns={[
|
||||||
{
|
{
|
||||||
name: "name",
|
name: "name",
|
||||||
displayKey: "common:name",
|
displayKey: "name",
|
||||||
cellRenderer: DetailLink,
|
cellRenderer: DetailLink,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -101,7 +101,7 @@ export default function DetailProvider() {
|
||||||
messageKey: t("clientRegisterPolicyDeleteConfirm", {
|
messageKey: t("clientRegisterPolicyDeleteConfirm", {
|
||||||
name: providerName,
|
name: providerName,
|
||||||
}),
|
}),
|
||||||
continueButtonLabel: "common:delete",
|
continueButtonLabel: "delete",
|
||||||
continueButtonVariant: ButtonVariant.danger,
|
continueButtonVariant: ButtonVariant.danger,
|
||||||
onConfirm: async () => {
|
onConfirm: async () => {
|
||||||
try {
|
try {
|
||||||
|
@ -134,7 +134,7 @@ export default function DetailProvider() {
|
||||||
key="delete"
|
key="delete"
|
||||||
onClick={toggleDeleteDialog}
|
onClick={toggleDeleteDialog}
|
||||||
>
|
>
|
||||||
{t("common:delete")}
|
{t("delete")}
|
||||||
</DropdownItem>,
|
</DropdownItem>,
|
||||||
]
|
]
|
||||||
: undefined
|
: undefined
|
||||||
|
@ -156,9 +156,9 @@ export default function DetailProvider() {
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
<FormGroup
|
<FormGroup
|
||||||
label={t("common:name")}
|
label={t("name")}
|
||||||
fieldId="kc-name"
|
fieldId="kc-name"
|
||||||
helperTextInvalid={t("common:required")}
|
helperTextInvalid={t("required")}
|
||||||
validated={
|
validated={
|
||||||
errors.name ? ValidatedOptions.error : ValidatedOptions.default
|
errors.name ? ValidatedOptions.error : ValidatedOptions.default
|
||||||
}
|
}
|
||||||
|
@ -184,7 +184,7 @@ export default function DetailProvider() {
|
||||||
</FormProvider>
|
</FormProvider>
|
||||||
<ActionGroup>
|
<ActionGroup>
|
||||||
<Button data-testid="save" type="submit">
|
<Button data-testid="save" type="submit">
|
||||||
{t("common:save")}
|
{t("save")}
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
variant="link"
|
variant="link"
|
||||||
|
@ -195,7 +195,7 @@ export default function DetailProvider() {
|
||||||
></Link>
|
></Link>
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
{t("common:cancel")}
|
{t("cancel")}
|
||||||
</Button>
|
</Button>
|
||||||
</ActionGroup>
|
</ActionGroup>
|
||||||
</FormAccess>
|
</FormAccess>
|
||||||
|
|
|
@ -16,7 +16,7 @@ const MappingDetails = lazy(
|
||||||
export const MapperRoute: AppRouteObject = {
|
export const MapperRoute: AppRouteObject = {
|
||||||
path: "/:realm/clients/:id/clientScopes/dedicated/mappers/:mapperId",
|
path: "/:realm/clients/:id/clientScopes/dedicated/mappers/:mapperId",
|
||||||
element: <MappingDetails />,
|
element: <MappingDetails />,
|
||||||
breadcrumb: (t) => t("common:mappingDetails"),
|
breadcrumb: (t) => t("mappingDetails"),
|
||||||
handle: {
|
handle: {
|
||||||
access: "view-clients",
|
access: "view-clients",
|
||||||
},
|
},
|
||||||
|
|
|
@ -151,7 +151,7 @@ export const AddScopeDialog = ({
|
||||||
}}
|
}}
|
||||||
isDisabled={rows.length === 0}
|
isDisabled={rows.length === 0}
|
||||||
>
|
>
|
||||||
{t("common:add")}
|
{t("add")}
|
||||||
</Button>,
|
</Button>,
|
||||||
<Button
|
<Button
|
||||||
id="modal-cancel"
|
id="modal-cancel"
|
||||||
|
@ -163,7 +163,7 @@ export const AddScopeDialog = ({
|
||||||
toggleDialog();
|
toggleDialog();
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{t("common:cancel")}
|
{t("cancel")}
|
||||||
</Button>,
|
</Button>,
|
||||||
]
|
]
|
||||||
: [
|
: [
|
||||||
|
@ -181,7 +181,7 @@ export const AddScopeDialog = ({
|
||||||
toggleIndicator={CaretUpIcon}
|
toggleIndicator={CaretUpIcon}
|
||||||
id="add-scope-toggle"
|
id="add-scope-toggle"
|
||||||
>
|
>
|
||||||
{t("common:add")}
|
{t("add")}
|
||||||
</DropdownToggle>
|
</DropdownToggle>
|
||||||
}
|
}
|
||||||
dropdownItems={clientScopeTypesDropdown(t, action)}
|
dropdownItems={clientScopeTypesDropdown(t, action)}
|
||||||
|
@ -195,7 +195,7 @@ export const AddScopeDialog = ({
|
||||||
toggleDialog();
|
toggleDialog();
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{t("common:cancel")}
|
{t("cancel")}
|
||||||
</Button>,
|
</Button>,
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -229,9 +229,7 @@ export const AddScopeDialog = ({
|
||||||
data-testid="filter-type-dropdown-item"
|
data-testid="filter-type-dropdown-item"
|
||||||
key="filter-type"
|
key="filter-type"
|
||||||
>
|
>
|
||||||
{filterType === FilterType.Name
|
{filterType === FilterType.Name ? t("protocol") : t("name")}
|
||||||
? t("protocol")
|
|
||||||
: t("common:name")}
|
|
||||||
</DropdownItem>,
|
</DropdownItem>,
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
|
@ -260,14 +258,14 @@ export const AddScopeDialog = ({
|
||||||
data-testid="filter-type-dropdown-item"
|
data-testid="filter-type-dropdown-item"
|
||||||
key="filter-type"
|
key="filter-type"
|
||||||
>
|
>
|
||||||
{t("common:name")}
|
{t("name")}
|
||||||
</DropdownItem>,
|
</DropdownItem>,
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
<Select
|
<Select
|
||||||
variant={SelectVariant.single}
|
variant={SelectVariant.single}
|
||||||
className="kc-protocolType-select"
|
className="kc-protocolType-select"
|
||||||
aria-label={t("common:selectOne")}
|
aria-label={t("selectOne")}
|
||||||
onToggle={toggleIsProtocolTypeDropdownOpen}
|
onToggle={toggleIsProtocolTypeDropdownOpen}
|
||||||
onSelect={(_, value) =>
|
onSelect={(_, value) =>
|
||||||
onProtocolTypeDropdownSelect(value.toString())
|
onProtocolTypeDropdownSelect(value.toString())
|
||||||
|
|
|
@ -196,7 +196,7 @@ export const ClientScopes = ({
|
||||||
name: selectedRows[0]?.name,
|
name: selectedRows[0]?.name,
|
||||||
}),
|
}),
|
||||||
messageKey: "deleteConfirmClientScopes",
|
messageKey: "deleteConfirmClientScopes",
|
||||||
continueButtonLabel: "common:delete",
|
continueButtonLabel: "delete",
|
||||||
continueButtonVariant: ButtonVariant.danger,
|
continueButtonVariant: ButtonVariant.danger,
|
||||||
onConfirm: async () => {
|
onConfirm: async () => {
|
||||||
try {
|
try {
|
||||||
|
@ -313,7 +313,7 @@ export const ClientScopes = ({
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{t("common:remove")}
|
{t("remove")}
|
||||||
</DropdownItem>,
|
</DropdownItem>,
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
|
@ -350,7 +350,7 @@ export const ClientScopes = ({
|
||||||
isManager
|
isManager
|
||||||
? [
|
? [
|
||||||
{
|
{
|
||||||
title: t("common:remove"),
|
title: t("remove"),
|
||||||
onRowClick: async (row) => {
|
onRowClick: async (row) => {
|
||||||
setSelectedRows([row]);
|
setSelectedRows([row]);
|
||||||
toggleDeleteDialog();
|
toggleDeleteDialog();
|
||||||
|
|
|
@ -96,8 +96,8 @@ export const DedicatedScope = ({
|
||||||
>
|
>
|
||||||
<Switch
|
<Switch
|
||||||
id="fullScopeAllowed"
|
id="fullScopeAllowed"
|
||||||
label={t("common:on")}
|
label={t("on")}
|
||||||
labelOff={t("common:off")}
|
labelOff={t("off")}
|
||||||
isChecked={client.fullScopeAllowed}
|
isChecked={client.fullScopeAllowed}
|
||||||
onChange={update}
|
onChange={update}
|
||||||
aria-label={t("fullScopeAllowed")}
|
aria-label={t("fullScopeAllowed")}
|
||||||
|
|
|
@ -69,9 +69,9 @@ export default function DedicatedScopes() {
|
||||||
mappers as ProtocolMapperRepresentation[],
|
mappers as ProtocolMapperRepresentation[],
|
||||||
);
|
);
|
||||||
setClient(await adminClient.clients.findOne({ id: client.id! }));
|
setClient(await adminClient.clients.findOne({ id: client.id! }));
|
||||||
addAlert(t("common:mappingCreatedSuccess"), AlertVariant.success);
|
addAlert(t("mappingCreatedSuccess"), AlertVariant.success);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
addError("common:mappingCreatedError", error);
|
addError("mappingCreatedError", error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -88,9 +88,9 @@ export default function DedicatedScopes() {
|
||||||
(m) => m.id !== mapper.id,
|
(m) => m.id !== mapper.id,
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
addAlert(t("common:mappingDeletedSuccess"), AlertVariant.success);
|
addAlert(t("mappingDeletedSuccess"), AlertVariant.success);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
addError("common:mappingDeletedError", error);
|
addError("mappingDeletedError", error);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
|
@ -62,7 +62,7 @@ const ProtocolMappers = ({
|
||||||
columns={[
|
columns={[
|
||||||
{
|
{
|
||||||
name: "mapperName",
|
name: "mapperName",
|
||||||
displayKey: "common:name",
|
displayKey: "name",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "containerName",
|
name: "containerName",
|
||||||
|
@ -70,11 +70,11 @@ const ProtocolMappers = ({
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "type.category",
|
name: "type.category",
|
||||||
displayKey: "common:category",
|
displayKey: "category",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "type.priority",
|
name: "type.priority",
|
||||||
displayKey: "common:priority",
|
displayKey: "priority",
|
||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -41,7 +41,7 @@ export const GroupBreadCrumbs = () => {
|
||||||
</Link>
|
</Link>
|
||||||
)}
|
)}
|
||||||
{isLastGroup &&
|
{isLastGroup &&
|
||||||
(group.id === "search" ? group.name : t("groups:groupDetails"))}
|
(group.id === "search" ? group.name : t("groupDetails"))}
|
||||||
</BreadcrumbItem>
|
</BreadcrumbItem>
|
||||||
);
|
);
|
||||||
})}
|
})}
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue