import { useState } from "react"; import { Helmet } from "react-helmet"; import { useTranslation } from "react-i18next"; import { faInfoCircle } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { useNavigate, useSearch } from "@tanstack/react-router"; import { Button, PageHeader, Tab, TabList, TabPanel, Tabs } from "@app/components/v2"; import { ROUTE_PATHS } from "@app/const/routes"; import { OrgPermissionActions, OrgPermissionGroupActions, OrgPermissionIdentityActions, OrgPermissionSubjects, useOrganization, useOrgPermission } from "@app/context"; import { OrgAccessControlTabSections } from "@app/types/org"; import { UpgradePrivilegeSystemModal } from "./components/UpgradePrivilegeSystemModal/UpgradePrivilegeSystemModal"; import { OrgGroupsTab, OrgIdentityTab, OrgMembersTab, OrgRoleTabSection } from "./components"; export const AccessManagementPage = () => { const { t } = useTranslation(); const { permission } = useOrgPermission(); const { currentOrg } = useOrganization(); const navigate = useNavigate({ from: ROUTE_PATHS.Organization.AccessControlPage.path }); const selectedTab = useSearch({ from: ROUTE_PATHS.Organization.AccessControlPage.id, select: (el) => el.selectedTab, structuralSharing: true }); const [isUpgradePrivilegeSystemModalOpen, setIsUpgradePrivilegeSystemModalOpen] = useState(false); const updateSelectedTab = (tab: string) => { navigate({ search: { selectedTab: tab } }); }; const tabSections = [ { key: OrgAccessControlTabSections.Member, label: "Users", isHidden: permission.cannot(OrgPermissionActions.Read, OrgPermissionSubjects.Member), component: OrgMembersTab }, { key: OrgAccessControlTabSections.Groups, label: "Groups", isHidden: permission.cannot(OrgPermissionGroupActions.Read, OrgPermissionSubjects.Groups), component: OrgGroupsTab }, { key: OrgAccessControlTabSections.Identities, label: "Identities", isHidden: permission.cannot( OrgPermissionIdentityActions.Read, OrgPermissionSubjects.Identity ), component: OrgIdentityTab }, { key: OrgAccessControlTabSections.Roles, label: "Roles", isHidden: permission.cannot(OrgPermissionActions.Read, OrgPermissionSubjects.Role), component: OrgRoleTabSection } ]; return (
We've developed an improved privilege management system to better serve your security needs. Upgrade to our new permission-based approach that allows you to explicitly designate who can modify specific access levels, rather than relying on hierarchy comparisons.