fix(permissions): align workspace resource actions with role rules

This commit is contained in:
2026-04-28 10:02:37 +03:30
parent 9fceef3753
commit b1ad372474
8 changed files with 141 additions and 77 deletions

View File

@@ -285,10 +285,11 @@ export default function EditWorkspace() {
const canManageMembers = canWorkspace(myRole, WORKSPACE_MEMBERS_CHANGE_ROLE);
const isFirstOwner = currentUserId === workspaceOwnerId;
const roleOptions = (allowOwner: boolean) => [
...(allowOwner ? [{ value: "owner", label: t.workspace?.roles?.owner || "Owner" }] : []),
{ value: "admin", label: t.workspace?.roles?.admin || "Admin" },
const isOwner = myRole === "owner";
const roleOptions = (allowOwnerRole: boolean, allowAdminRole: boolean) => [
...(allowOwnerRole ? [{ value: "owner", label: t.workspace?.roles?.owner || "Owner" }] : []),
...(allowAdminRole ? [{ value: "admin", label: t.workspace?.roles?.admin || "Admin" }] : []),
{ value: "member", label: t.workspace?.roles?.member || "Member" },
{ value: "guest", label: t.workspace?.roles?.guest || "Guest" },
];
@@ -386,13 +387,13 @@ export default function EditWorkspace() {
<div className="flex items-center gap-2 w-full sm:w-auto mt-2 sm:mt-0">
<Select
value={newMemberRole}
onChange={(val) => setNewMemberRole(val as any)}
options={[
...roleOptions(isFirstOwner),
value={newMemberRole}
onChange={(val) => setNewMemberRole(val as any)}
options={[
...roleOptions(isFirstOwner, isOwner),
]}
className="flex-1 sm:flex-none"
buttonClassName="w-full sm:w-[110px] px-3 py-1.5 text-sm"
className="flex-1 sm:flex-none"
buttonClassName="w-full sm:w-[110px] px-3 py-1.5 text-sm"
/>
<Button
@@ -456,7 +457,7 @@ export default function EditWorkspace() {
<Select
value={m.role}
onChange={(val) => handleChangeRole(m.id, val)}
options={roleOptions(isFirstOwner)}
options={roleOptions(isFirstOwner, isOwner)}
buttonClassName="w-[110px] px-3 py-1.5 text-sm"
/>
) : (