diff --git a/src/realm-roles/AssociatedRolesTab.tsx b/src/realm-roles/AssociatedRolesTab.tsx index 07e073ef08..d28fc3d963 100644 --- a/src/realm-roles/AssociatedRolesTab.tsx +++ b/src/realm-roles/AssociatedRolesTab.tsx @@ -190,7 +190,6 @@ export const AssociatedRolesTab = ({ onSelect={(rows) => { setSelectedRows([...rows]); }} - isPaginated toolbarItem={ <> { } }; - console.log(role) + + const addComposites = async (composites: Composites[]): Promise => { const compositeArray = composites; setAdditionalRoles([...additionalRoles, ...compositeArray]); @@ -342,13 +343,7 @@ export const RealmRoleTabs = () => { eventKey="users-in-role" title={{t("usersInRole")}} > - form.reset(role)} - /> + )} diff --git a/src/realm-roles/UsersInRoleTab.tsx b/src/realm-roles/UsersInRoleTab.tsx index 2154aca6f5..343c3bfc2a 100644 --- a/src/realm-roles/UsersInRoleTab.tsx +++ b/src/realm-roles/UsersInRoleTab.tsx @@ -1,192 +1,79 @@ -import React, { useState } from "react"; -import { useHistory, useParams, useRouteMatch } from "react-router-dom"; +import React, { useState, useEffect } from "react"; +import { useParams } from "react-router-dom"; import { useTranslation } from "react-i18next"; -import { - AlertVariant, - Button, - ButtonVariant, - Checkbox, - PageSection, -} from "@patternfly/react-core"; -import RoleRepresentation from "keycloak-admin/lib/defs/roleRepresentation"; +import { PageSection } from "@patternfly/react-core"; import { ListEmptyState } from "../components/list-empty-state/ListEmptyState"; import { KeycloakDataTable } from "../components/table-toolbar/KeycloakDataTable"; -import { formattedLinkTableCell } from "../components/external-link/FormattedLink"; -import { useAlerts } from "../components/alert/Alerts"; -import { useConfirmDialog } from "../components/confirm-dialog/ConfirmDialog"; import { boolFormatter, emptyFormatter } from "../util"; -import { AssociatedRolesModal } from "./AssociatedRolesModal"; import { useAdminClient } from "../context/auth/AdminClient"; +import UserRepresentation from "keycloak-admin/lib/defs/userRepresentation"; -type UsersInRoleTabProps = { - roleName: string; - }; - - -export const UsersInRoleTab = ({roleName}: UsersInRoleTabProps) => { +export const UsersInRoleTab = () => { const { t } = useTranslation("roles"); - const history = useHistory(); - const { addAlert } = useAlerts(); - const { url } = useRouteMatch(); - const tableRefresher = React.useRef<() => void>(); - const [selectedRows, setSelectedRows] = useState([]); - const [open, setOpen] = useState(false); + const [users, setUsers] = useState([]); -// console.log(role); + const { id } = useParams<{ id: string }>(); const adminClient = useAdminClient(); - const { id } = useParams<{ id: string; clientId: string }>(); const loader = async () => { - const beep = await adminClient.roles.findUsersWithRole({name: "admin"}) - console.log(beep); - if (!beep) { - console.log("lalala"); - } - else return beep; + const role = await adminClient.roles.findOneById({ id: id }); + const usersWithRole = await adminClient.roles.findUsersWithRole({ + name: role.name!, + }); + setUsers(usersWithRole); + return usersWithRole; }; + useEffect(() => { + loader(); + }, []); - loader(); - -// const RoleName = (role: RoleRepresentation) => <>{role.name}; - - const toggleModal = () => setOpen(!open); - - const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({ - titleKey: "roles:roleRemoveAssociatedRoleConfirm", - messageKey: t("roles:roleRemoveAssociatedText"), - continueButtonLabel: "common:delete", - continueButtonVariant: ButtonVariant.danger, - onConfirm: async () => { - try { - await adminClient.roles.delCompositeRoles({ id }, selectedRows); - setSelectedRows([]); - - addAlert(t("associatedRolesRemoved"), AlertVariant.success); - } catch (error) { - addAlert(t("roleDeleteError", { error }), AlertVariant.danger); - } - }, - }); - -// const [ -// toggleDeleteAssociatedRolesDialog, -// DeleteAssociatedRolesConfirm, -// ] = useConfirmDialog({ -// titleKey: t("roles:removeAssociatedRoles") + "?", -// messageKey: t("roles:removeAllAssociatedRolesConfirmDialog", { -// name: parentRole?.name || t("createRole"), -// }), -// continueButtonLabel: "common:delete", -// continueButtonVariant: ButtonVariant.danger, -// onConfirm: async () => { -// try { -// if (selectedRows.length === additionalRoles.length) { -// onRemove(selectedRows); -// const loc = url.replace(/\/AssociatedRoles/g, "/details"); -// history.push(loc); -// } -// onRemove(selectedRows); -// await adminClient.roles.delCompositeRoles({ id }, selectedRows); -// addAlert(t("associatedRolesRemoved"), AlertVariant.success); -// } catch (error) { -// addAlert(`${t("roleDeleteError")} ${error}`, AlertVariant.danger); -// } -// }, -// }); - - const setRefresher = (refresher: () => void) => { - tableRefresher.current = refresher; - }; - - const goToCreate = () => history.push(`${url}/add-role`); return ( <> - - {/* - setOpen(!open)} - /> */} - { - // setSelectedRows([...rows]); - // }} - isPaginated - setRefresher={setRefresher} - toolbarItem={ - <> - - - - - } - actions={[ - { - title: t("common:remove"), - onRowClick: (role) => { - // setSelectedRows([role]); - toggleDeleteDialog(); + {users.length == 0 ? ( + + ) : ( + - } - /> + { + name: "username", + displayKey: "roles:userName", + cellFormatters: [emptyFormatter()], + }, + { + name: "email", + displayKey: "roles:email", + cellFormatters: [emptyFormatter()], + }, + { + name: "lastName", + displayKey: "roles:lastName", + cellFormatters: [emptyFormatter()], + }, + { + name: "firstName", + displayKey: "roles:firstName", + cellFormatters: [boolFormatter(), emptyFormatter()], + }, + ]} + /> + )} ); diff --git a/src/realm-roles/messages.json b/src/realm-roles/messages.json index ca60a75165..b714d71447 100644 --- a/src/realm-roles/messages.json +++ b/src/realm-roles/messages.json @@ -49,7 +49,16 @@ "compositeRoleOff": "Composite role turned off", "associatedRolesRemoved": "Associated roles have been removed", "compositesRemovedAlertDescription": "All the associated roles have been removed", - "usersInRole": "Users in role" - + "usersInRole": "Users in role", + "addUser": "Add user", + "removeUser": "Remove users", + "removeUserText": "Do you want to remove {{numSelected}} users?. These users will no longer have permissions of the role {{role}} and the associated roles of it.", + "noDirectUsers": "No direct users", + "noUsersEmptyStateDescription": "Only the users with this role directly assigned will appear under this tab. If you need to find users assigned to this role, you can go to Groups or Users to find them. Users that already have this role as an effective role cannot be added here.", + "id": "ID", + "userName": "Username", + "email": "Email", + "lastName": "Last name", + "firstName": "First name" } }