All Downloads are FREE. Search and download functionalities are using the official Maven repository.

theme.keycloak.v2.admin.resources.assets.RealmRoleTabs-85b7f088.js.map Maven / Gradle / Ivy

There is a newer version: 25.0.1
Show newest version
{"version":3,"file":"RealmRoleTabs-85b7f088.js","sources":["../../src/realm-roles/UsersInRoleTab.tsx","../../src/realm-roles/RealmRoleTabs.tsx"],"sourcesContent":["import { Button, PageSection, Popover } from \"@patternfly/react-core\";\nimport { QuestionCircleIcon } from \"@patternfly/react-icons\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport { useHelp } from \"ui-shared\";\n\nimport { adminClient } from \"../admin-client\";\nimport type { ClientRoleParams } from \"../clients/routes/ClientRole\";\nimport { ListEmptyState } from \"../components/list-empty-state/ListEmptyState\";\nimport { KeycloakDataTable } from \"../components/table-toolbar/KeycloakDataTable\";\nimport { useRealm } from \"../context/realm-context/RealmContext\";\nimport { emptyFormatter, upperCaseFormatter } from \"../util\";\nimport { useParams } from \"../utils/useParams\";\n\nexport const UsersInRoleTab = () => {\n  const navigate = useNavigate();\n  const { realm } = useRealm();\n\n  const { t } = useTranslation(\"roles\");\n  const { id, clientId } = useParams();\n\n  const loader = async (first?: number, max?: number) => {\n    const role = await adminClient.roles.findOneById({ id: id });\n    if (!role) {\n      throw new Error(t(\"common:notFound\"));\n    }\n\n    if (role.clientRole) {\n      return adminClient.clients.findUsersWithRole({\n        roleName: role.name!,\n        id: clientId,\n        first,\n        max,\n      });\n    }\n\n    return adminClient.roles.findUsersWithRole({\n      name: role.name!,\n      first,\n      max,\n    });\n  };\n\n  const { enabled } = useHelp();\n\n  return (\n    \n      \n                  {t(\"roles:whoWillAppearPopoverText\")}\n                   navigate(`/${realm}/groups`)}\n                  >\n                    {t(\"common:groups\")}\n                  \n                  {t(\"or\")}\n                   navigate(`/${realm}/users`)}\n                  >\n                    {t(\"users\")}.\n                  \n                
\n }\n footerContent={t(\"roles:whoWillAppearPopoverFooterText\")}\n >\n }\n >\n {t(\"roles:whoWillAppearLinkText\")}\n \n \n )\n }\n emptyState={\n \n {t(\"noUsersEmptyStateDescription\")}\n navigate(`/${realm}/groups`)}\n >\n {t(\"common:groups\")}\n \n {t(\"or\")}\n navigate(`/${realm}/users`)}\n >\n {t(\"users\")}\n \n {t(\"noUsersEmptyStateDescriptionContinued\")}\n \n }\n />\n }\n columns={[\n {\n name: \"username\",\n displayKey: \"roles:userName\",\n cellFormatters: [emptyFormatter()],\n },\n {\n name: \"email\",\n displayKey: \"roles:email\",\n cellFormatters: [emptyFormatter()],\n },\n {\n name: \"lastName\",\n displayKey: \"roles:lastName\",\n cellFormatters: [emptyFormatter()],\n },\n {\n name: \"firstName\",\n displayKey: \"roles:firstName\",\n cellFormatters: [upperCaseFormatter(), emptyFormatter()],\n },\n ]}\n />\n \n );\n};\n","import type RealmRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/realmRepresentation\";\nimport type RoleRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/roleRepresentation\";\nimport {\n AlertVariant,\n ButtonVariant,\n DropdownItem,\n PageSection,\n Tab,\n TabTitleText,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { SubmitHandler, useForm, useWatch } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { useLocation, useMatch, useNavigate } from \"react-router-dom\";\n\nimport { adminClient } from \"../admin-client\";\nimport { toClient } from \"../clients/routes/Client\";\nimport {\n ClientRoleParams,\n ClientRoleRoute,\n ClientRoleTab,\n toClientRole,\n} from \"../clients/routes/ClientRole\";\nimport { useAlerts } from \"../components/alert/Alerts\";\nimport { useConfirmDialog } from \"../components/confirm-dialog/ConfirmDialog\";\nimport {\n AttributeForm,\n AttributesForm,\n} from \"../components/key-value-form/AttributeForm\";\nimport {\n KeyValueType,\n arrayToKeyValue,\n keyValueToArray,\n} from \"../components/key-value-form/key-value-convert\";\nimport { KeycloakSpinner } from \"../components/keycloak-spinner/KeycloakSpinner\";\nimport { PermissionsTab } from \"../components/permission-tab/PermissionTab\";\nimport { RoleForm } from \"../components/role-form/RoleForm\";\nimport { AddRoleMappingModal } from \"../components/role-mapping/AddRoleMappingModal\";\nimport { RoleMapping } from \"../components/role-mapping/RoleMapping\";\nimport {\n RoutableTabs,\n useRoutableTab,\n} from \"../components/routable-tabs/RoutableTabs\";\nimport { ViewHeader } from \"../components/view-header/ViewHeader\";\nimport { useRealm } from \"../context/realm-context/RealmContext\";\nimport { useFetch } from \"../utils/useFetch\";\nimport useIsFeatureEnabled, { Feature } from \"../utils/useIsFeatureEnabled\";\nimport { useParams } from \"../utils/useParams\";\nimport { UsersInRoleTab } from \"./UsersInRoleTab\";\nimport { RealmRoleRoute, RealmRoleTab, toRealmRole } from \"./routes/RealmRole\";\nimport { toRealmRoles } from \"./routes/RealmRoles\";\n\nexport default function RealmRoleTabs() {\n const isFeatureEnabled = useIsFeatureEnabled();\n const { t } = useTranslation(\"roles\");\n const form = useForm({\n mode: \"onChange\",\n });\n const { control, reset, setValue } = form;\n const navigate = useNavigate();\n\n const { id, clientId } = useParams();\n const { pathname } = useLocation();\n\n const { realm: realmName } = useRealm();\n\n const [key, setKey] = useState(0);\n const [attributes, setAttributes] = useState();\n\n const refresh = () => setKey(key + 1);\n\n const { addAlert, addError } = useAlerts();\n\n const [open, setOpen] = useState(false);\n const convert = (role: RoleRepresentation) => {\n const { attributes, ...rest } = role;\n return {\n attributes: arrayToKeyValue(attributes),\n ...rest,\n };\n };\n\n const roleName = useWatch({\n control,\n defaultValue: undefined,\n name: \"name\",\n });\n\n const composites = useWatch({\n control,\n defaultValue: false,\n name: \"composite\",\n });\n\n const [realm, setRealm] = useState();\n\n useFetch(\n async () => {\n const [realm, role] = await Promise.all([\n adminClient.realms.findOne({ realm: realmName }),\n adminClient.roles.findOneById({ id }),\n ]);\n\n return { realm, role };\n },\n ({ realm, role }) => {\n if (!realm || !role) {\n throw new Error(t(\"common:notFound\"));\n }\n\n const convertedRole = convert(role);\n\n reset(convertedRole);\n setAttributes(convertedRole.attributes);\n setRealm(realm);\n },\n [key]\n );\n\n const onSubmit: SubmitHandler = async (formValues) => {\n try {\n const { attributes, ...rest } = formValues;\n const roleRepresentation: RoleRepresentation = rest;\n\n roleRepresentation.name = roleRepresentation.name?.trim();\n roleRepresentation.attributes = keyValueToArray(attributes);\n\n if (!clientId) {\n await adminClient.roles.updateById({ id }, roleRepresentation);\n } else {\n await adminClient.clients.updateRole(\n { id: clientId, roleName: formValues.name! },\n roleRepresentation\n );\n }\n\n setAttributes(attributes);\n addAlert(t(\"roleSaveSuccess\"), AlertVariant.success);\n } catch (error) {\n addError(\"roles:roleSaveError\", error);\n }\n };\n\n const realmRoleMatch = useMatch(RealmRoleRoute.path);\n const clientRoleMatch = useMatch(ClientRoleRoute.path);\n\n const toOverview = () => {\n if (realmRoleMatch) {\n return toRealmRoles({ realm: realmName });\n }\n\n if (clientRoleMatch) {\n return toClient({\n realm: realmName,\n clientId: clientRoleMatch.params.clientId!,\n tab: \"roles\",\n });\n }\n\n throw new Error(\"Roles overview route could not be determined.\");\n };\n\n const toTab = (tab: RealmRoleTab | ClientRoleTab) => {\n if (realmRoleMatch) {\n return toRealmRole({\n realm: realmName,\n id,\n tab,\n });\n }\n\n if (clientRoleMatch) {\n return toClientRole({\n realm: realmName,\n id,\n clientId: clientRoleMatch.params.clientId!,\n tab: tab as ClientRoleTab,\n });\n }\n\n throw new Error(\"Route could not be determined.\");\n };\n\n const useTab = (tab: RealmRoleTab | ClientRoleTab) =>\n useRoutableTab(toTab(tab));\n\n const detailsTab = useTab(\"details\");\n const associatedRolesTab = useTab(\"associated-roles\");\n const attributesTab = useTab(\"attributes\");\n const usersInRoleTab = useTab(\"users-in-role\");\n const permissionsTab = useTab(\"permissions\");\n\n const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n titleKey: \"roles:roleDeleteConfirm\",\n messageKey: t(\"roles:roleDeleteConfirmDialog\", {\n selectedRoleName: roleName || t(\"createRole\"),\n }),\n continueButtonLabel: \"common:delete\",\n continueButtonVariant: ButtonVariant.danger,\n onConfirm: async () => {\n try {\n if (!clientId) {\n await adminClient.roles.delById({ id });\n } else {\n await adminClient.clients.delRole({\n id: clientId,\n roleName: roleName!,\n });\n }\n addAlert(t(\"roleDeletedSuccess\"), AlertVariant.success);\n navigate(toOverview());\n } catch (error) {\n addError(\"roles:roleDeleteError\", error);\n }\n },\n });\n\n const dropdownItems = pathname.includes(\"associated-roles\")\n ? [\n toggleDeleteAllAssociatedRolesDialog()}\n >\n {t(\"roles:removeAllAssociatedRoles\")}\n ,\n {\n toggleDeleteDialog();\n }}\n >\n {t(\"deleteRole\")}\n ,\n ]\n : [\n toggleModal()}\n >\n {t(\"addAssociatedRolesText\")}\n ,\n toggleDeleteDialog()}\n >\n {t(\"deleteRole\")}\n ,\n ];\n\n const [\n toggleDeleteAllAssociatedRolesDialog,\n DeleteAllAssociatedRolesConfirm,\n ] = useConfirmDialog({\n titleKey: t(\"roles:removeAllAssociatedRoles\") + \"?\",\n messageKey: t(\"roles:removeAllAssociatedRolesConfirmDialog\", {\n name: roleName || t(\"createRole\"),\n }),\n continueButtonLabel: \"common:delete\",\n continueButtonVariant: ButtonVariant.danger,\n onConfirm: async () => {\n try {\n const additionalRoles = await adminClient.roles.getCompositeRoles({\n id,\n });\n await adminClient.roles.delCompositeRoles({ id }, additionalRoles);\n addAlert(\n t(\"compositeRoleOff\"),\n AlertVariant.success,\n t(\"compositesRemovedAlertDescription\")\n );\n navigate(toTab(\"details\"));\n refresh();\n } catch (error) {\n addError(\"roles:roleDeleteError\", error);\n }\n },\n });\n\n const toggleModal = () => {\n setOpen(!open);\n };\n\n const addComposites = async (composites: RoleRepresentation[]) => {\n try {\n await adminClient.roles.createComposite(\n { roleId: id, realm: realm!.realm },\n composites\n );\n refresh();\n navigate(toTab(\"associated-roles\"));\n addAlert(t(\"addAssociatedRolesSuccess\"), AlertVariant.success);\n } catch (error) {\n addError(\"roles:addAssociatedRolesError\", error);\n }\n };\n\n const isDefaultRole = (name: string | undefined) =>\n realm?.defaultRole && realm.defaultRole!.name === name;\n\n if (!realm) {\n return ;\n }\n\n return (\n <>\n \n \n {open && (\n addComposites(rows.map((r) => r.role))}\n onClose={() => setOpen(false)}\n />\n )}\n \n \n \n {t(\"common:details\")}}\n {...detailsTab}\n >\n \n \n {composites && (\n {t(\"associatedRolesText\")}}\n {...associatedRolesTab}\n >\n addComposites(rows.map((r) => r.role))}\n />\n \n )}\n {!isDefaultRole(roleName) && (\n {t(\"common:attributes\")}}\n {...attributesTab}\n >\n \n setValue(\"attributes\", attributes, { shouldDirty: false })\n }\n />\n \n )}\n {!isDefaultRole(roleName) && (\n {t(\"usersInRole\")}}\n {...usersInRoleTab}\n >\n \n \n )}\n {isFeatureEnabled(Feature.AdminFineGrainedAuthz) && (\n {t(\"common:permissions\")}}\n {...permissionsTab}\n >\n \n \n )}\n \n \n \n );\n}\n"],"names":["UsersInRoleTab","navigate","useNavigate","realm","useRealm","t","useTranslation","id","clientId","useParams","loader","first","max","role","adminClient","enabled","useHelp","jsx","PageSection","KeycloakDataTable","Popover","Button","jsxs","QuestionCircleIcon","ListEmptyState","emptyFormatter","upperCaseFormatter","RealmRoleTabs","isFeatureEnabled","useIsFeatureEnabled","form","useForm","control","reset","setValue","pathname","useLocation","realmName","key","setKey","useState","attributes","setAttributes","refresh","addAlert","addError","useAlerts","open","setOpen","convert","rest","arrayToKeyValue","roleName","useWatch","composites","setRealm","useFetch","convertedRole","onSubmit","formValues","roleRepresentation","keyValueToArray","AlertVariant","error","realmRoleMatch","useMatch","RealmRoleRoute","clientRoleMatch","ClientRoleRoute","toOverview","toRealmRoles","toClient","toTab","tab","toRealmRole","toClientRole","useTab","useRoutableTab","detailsTab","associatedRolesTab","attributesTab","usersInRoleTab","permissionsTab","toggleDeleteDialog","DeleteConfirm","useConfirmDialog","ButtonVariant","dropdownItems","DropdownItem","toggleDeleteAllAssociatedRolesDialog","toggleModal","DeleteAllAssociatedRolesConfirm","additionalRoles","addComposites","isDefaultRole","name","Fragment","AddRoleMappingModal","rows","ViewHeader","RoutableTabs","Tab","TabTitleText","RoleForm","RoleMapping","AttributesForm","Feature","PermissionsTab","KeycloakSpinner"],"mappings":"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"}



© 2015 - 2024 Weber Informatics LLC | Privacy Policy