Add default org and project-level no access roles

This commit is contained in:
Tuan Dang
2023-11-26 17:02:03 +07:00
parent 4e050cfe7a
commit 63df0dba64
21 changed files with 84 additions and 38 deletions
@@ -28,7 +28,7 @@ export type MachineMembershipOrg = {
_id: string;
machineIdentity: MachineIdentity;
organization: string;
role: "admin" | "member" | "viewer" | "custom";
role: "admin" | "member" | "viewer" | "no-access" | "custom";
customRole?: TRole<string>;
createdAt: string;
updatedAt: string;
@@ -38,7 +38,7 @@ export type MachineMembership = {
_id: string;
machineIdentity: MachineIdentity;
organization: string;
role: "admin" | "member" | "viewer" | "custom";
role: "admin" | "member" | "viewer" | "no-access" | "custom";
customRole?: TRole<string>;
createdAt: string;
updatedAt: string;
+1 -1
View File
@@ -44,7 +44,7 @@ export type OrgUser = {
};
inviteEmail: string;
organization: string;
role: "owner" | "admin" | "member" | "custom";
role: "owner" | "admin" | "member" | "no-access" | "custom";
status: "invited" | "accepted" | "verified" | "completed";
deniedPermissions: any[];
customRole: string;
@@ -25,7 +25,14 @@ export const MembersPage = withPermission(
<Tabs defaultValue={TabSections.Member}>
<TabList>
<Tab value={TabSections.Member}>People</Tab>
<Tab value={TabSections.MachineIdentities}>Machine Identities</Tab>
<Tab value={TabSections.MachineIdentities}>
<div className="flex items-center">
<p>Machine Identities</p>
<div className="ml-2 rounded-md text-yellow text-sm inline-block bg-yellow/20 px-1.5 pb-[0.03rem] pt-[0.04rem] opacity-80 hover:opacity-100 cursor-default">
Beta
</div>
</div>
</Tab>
<Tab value={TabSections.Roles}>Organization Roles</Tab>
</TabList>
<TabPanel value={TabSections.Member}>
@@ -94,7 +94,7 @@ export const OrgRoleTable = ({
{isRolesLoading && <TableSkeleton columns={4} innerKey="org-roles" />}
{(roles as TRole<undefined>[])?.map((role) => {
const { _id: id, name, slug } = role;
const isNonMutatable = ["owner", "admin", "member"].includes(slug);
const isNonMutatable = ["owner", "admin", "member", "no-access"].includes(slug);
return (
<Tr key={`role-list-${id}`}>
@@ -30,7 +30,14 @@ export const MembersPage = withProjectPermission(
<Tabs defaultValue={TabSections.Member}>
<TabList>
<Tab value={TabSections.Member}>People</Tab>
<Tab value={TabSections.MachineIdentities}>Machine Identities</Tab>
<Tab value={TabSections.MachineIdentities}>
<div className="flex items-center">
<p>Machine Identities</p>
<div className="ml-2 rounded-md text-yellow text-sm inline-block bg-yellow/20 px-1.5 pb-[0.03rem] pt-[0.04rem] opacity-80 hover:opacity-100 cursor-default">
Beta
</div>
</div>
</Tab>
<Tab value={TabSections.ServiceTokens}>Service Tokens</Tab>
<Tab value={TabSections.Roles}>Project Roles</Tab>
</TabList>
@@ -188,7 +188,7 @@ export const MachineIdentityTable = ({
{!isLoading && data && data?.length === 0 && (
<Tr>
<Td colSpan={7}>
<EmptyState title="No machine identities have been added to this project" icon={faServer} />
<EmptyState title="No MIs have been added to this project" icon={faServer} />
</Td>
</Tr>
)}
@@ -101,7 +101,7 @@ export const ProjectRoleList = ({ onSelectRole }: Props) => {
{isRolesLoading && <TableSkeleton columns={4} innerKey="org-roles" />}
{(roles as TRole<string>[])?.map((role) => {
const { _id: id, name, slug } = role;
const isNonMutatable = ["admin", "member", "viewer"].includes(slug);
const isNonMutatable = ["admin", "member", "viewer", "no-access"].includes(slug);
return (
<Tr key={`role-list-${id}`}>