Remove the admin from the picker

This commit is contained in:
Owen
2026-06-01 20:33:37 -07:00
parent 4d6ed7eec5
commit 6b3a0a2113

View File

@@ -23,7 +23,10 @@ import type { AxiosResponse } from "axios";
import { useRouter } from "next/navigation"; import { useRouter } from "next/navigation";
import { createPolicySchema } from "."; import { createPolicySchema } from ".";
import { RolesSelector } from "@app/components/roles-selector"; import {
RolesSelector,
type SelectedRole
} from "@app/components/roles-selector";
import { UsersSelector } from "@app/components/users-selector"; import { UsersSelector } from "@app/components/users-selector";
import { SwitchInput } from "@app/components/SwitchInput"; import { SwitchInput } from "@app/components/SwitchInput";
import { Button } from "@app/components/ui/button"; import { Button } from "@app/components/ui/button";
@@ -59,6 +62,8 @@ type PolicyUsersRolesSectionProps = {
resourceId?: number; resourceId?: number;
}; };
type OverlaySelectedRole = SelectedRole & { isAdmin: boolean };
export function EditPolicyUsersRolesSectionForm({ export function EditPolicyUsersRolesSectionForm({
orgId, orgId,
allIdps, allIdps,
@@ -97,11 +102,12 @@ export function EditPolicyUsersRolesSectionForm({
); );
// Policy entries mapped to selector format // Policy entries mapped to selector format
const policyRoleItems = useMemo( const policyRoleItems = useMemo<OverlaySelectedRole[]>(
() => () =>
policy.roles.map((r) => ({ policy.roles.map((r) => ({
id: r.roleId.toString(), id: r.roleId.toString(),
text: r.name text: r.name,
isAdmin: false
})), })),
[policy.roles] [policy.roles]
); );
@@ -119,7 +125,8 @@ export function EditPolicyUsersRolesSectionForm({
const initialResourceUserIdsRef = useRef<Set<string>>(new Set()); const initialResourceUserIdsRef = useRef<Set<string>>(new Set());
// Combined selected roles/users (policy + resource-specific) // Combined selected roles/users (policy + resource-specific)
const [combinedRoles, setCombinedRoles] = useState(policyRoleItems); const [combinedRoles, setCombinedRoles] =
useState<OverlaySelectedRole[]>(policyRoleItems);
const [combinedUsers, setCombinedUsers] = useState(policyUserItems); const [combinedUsers, setCombinedUsers] = useState(policyUserItems);
const [resourceRolesInitialized, setResourceRolesInitialized] = const [resourceRolesInitialized, setResourceRolesInitialized] =
useState(false); useState(false);
@@ -132,12 +139,20 @@ export function EditPolicyUsersRolesSectionForm({
const resourceSpecific = resourceRolesData const resourceSpecific = resourceRolesData
.filter((r) => !policyRoleLockedIds.has(r.roleId.toString())) .filter((r) => !policyRoleLockedIds.has(r.roleId.toString()))
.map((r) => ({ id: r.roleId.toString(), text: r.name })); .map((r) => ({
id: r.roleId.toString(),
text: r.name,
isAdmin: Boolean(r.isAdmin)
}));
initialResourceRoleIdsRef.current = new Set( initialResourceRoleIdsRef.current = new Set(
resourceSpecific.map((r) => r.id) resourceSpecific.map((r) => r.id)
); );
setCombinedRoles([...policyRoleItems, ...resourceSpecific]); setCombinedRoles(
[...policyRoleItems, ...resourceSpecific].filter(
(role) => !role.isAdmin
)
);
setResourceRolesInitialized(true); setResourceRolesInitialized(true);
}, [ }, [
isResourceOverlay, isResourceOverlay,
@@ -362,12 +377,27 @@ export function EditPolicyUsersRolesSectionForm({
{isResourceOverlay ? ( {isResourceOverlay ? (
<RolesSelector <RolesSelector
orgId={orgId} orgId={orgId}
selectedRoles={ selectedRoles={combinedRoles.filter(
combinedRoles (role) => !role.isAdmin
} )}
onSelectRoles={ onSelectRoles={(roles) => {
setCombinedRoles setCombinedRoles(
} roles
.map(
(role) => ({
...role,
isAdmin:
Boolean(
role.isAdmin
)
})
)
.filter(
(role) =>
!role.isAdmin
)
);
}}
disabled={isLoading} disabled={isLoading}
restrictAdminRole restrictAdminRole
lockedIds={ lockedIds={