mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-08 03:27:38 +00:00
improvements: address feedback
This commit is contained in:
@@ -1,9 +1,9 @@
|
|||||||
import { OrgMembershipRole } from "@app/db/schemas";
|
import { OrgMembershipRole } from "@app/db/schemas";
|
||||||
import { TFeatureSet } from "@app/ee/services/license/license-types";
|
import { TFeatureSet } from "@app/ee/services/license/license-types";
|
||||||
import { BadRequestError } from "@app/lib/errors";
|
import { BadRequestError, NotFoundError } from "@app/lib/errors";
|
||||||
import { TOrgRoleDALFactory } from "@app/services/org/org-role-dal";
|
import { TOrgRoleDALFactory } from "@app/services/org/org-role-dal";
|
||||||
|
|
||||||
const RESERVED_ORG_ROLES = Object.values(OrgMembershipRole).filter((role) => role !== "custom");
|
const RESERVED_ORG_ROLE_SLUGS = Object.values(OrgMembershipRole).filter((role) => role !== "custom");
|
||||||
|
|
||||||
// this is only for updating an org
|
// this is only for updating an org
|
||||||
export const getDefaultOrgMembershipRoleForUpdateOrg = async ({
|
export const getDefaultOrgMembershipRoleForUpdateOrg = async ({
|
||||||
@@ -17,19 +17,17 @@ export const getDefaultOrgMembershipRoleForUpdateOrg = async ({
|
|||||||
orgRoleDAL: TOrgRoleDALFactory;
|
orgRoleDAL: TOrgRoleDALFactory;
|
||||||
plan: TFeatureSet;
|
plan: TFeatureSet;
|
||||||
}) => {
|
}) => {
|
||||||
const isCustomRole = !RESERVED_ORG_ROLES.includes(membershipRoleSlug as OrgMembershipRole);
|
const isCustomRole = !RESERVED_ORG_ROLE_SLUGS.includes(membershipRoleSlug as OrgMembershipRole);
|
||||||
|
|
||||||
if (isCustomRole) {
|
if (isCustomRole) {
|
||||||
// verify rbac enabled
|
|
||||||
if (!plan?.rbac)
|
if (!plan?.rbac)
|
||||||
throw new BadRequestError({
|
throw new BadRequestError({
|
||||||
message:
|
message:
|
||||||
"Failed to set custom default role due to plan RBAC restriction. Upgrade plan to set custom default org membership role."
|
"Failed to set custom default role due to plan RBAC restriction. Upgrade plan to set custom default org membership role."
|
||||||
});
|
});
|
||||||
|
|
||||||
// check that custom role exists
|
|
||||||
const customRole = await orgRoleDAL.findOne({ slug: membershipRoleSlug, orgId });
|
const customRole = await orgRoleDAL.findOne({ slug: membershipRoleSlug, orgId });
|
||||||
if (!customRole) throw new BadRequestError({ name: "UpdateOrg", message: "Organization role not found" });
|
if (!customRole) throw new NotFoundError({ name: "UpdateOrg", message: "Organization role not found" });
|
||||||
|
|
||||||
// use ID for default role
|
// use ID for default role
|
||||||
return customRole.id;
|
return customRole.id;
|
||||||
@@ -43,7 +41,7 @@ export const getDefaultOrgMembershipRoleForUpdateOrg = async ({
|
|||||||
export const getDefaultOrgMembershipRoleDto = async (
|
export const getDefaultOrgMembershipRoleDto = async (
|
||||||
defaultOrgMembershipRole: string // can either be ID or reserved slug
|
defaultOrgMembershipRole: string // can either be ID or reserved slug
|
||||||
) => {
|
) => {
|
||||||
const isCustomRole = !RESERVED_ORG_ROLES.includes(defaultOrgMembershipRole as OrgMembershipRole);
|
const isCustomRole = !RESERVED_ORG_ROLE_SLUGS.includes(defaultOrgMembershipRole as OrgMembershipRole);
|
||||||
|
|
||||||
if (isCustomRole)
|
if (isCustomRole)
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -139,7 +139,6 @@ export const orgRoleServiceFactory = ({ orgRoleDAL, orgDAL, permissionService }:
|
|||||||
message: "Failed to find organization"
|
message: "Failed to find organization"
|
||||||
});
|
});
|
||||||
|
|
||||||
// prevent deletion of custom role if set as default org membership role
|
|
||||||
if (org.defaultMembershipRole === roleId)
|
if (org.defaultMembershipRole === roleId)
|
||||||
throw new BadRequestError({
|
throw new BadRequestError({
|
||||||
message: "Cannot delete default org membership role. Please re-assign and try again."
|
message: "Cannot delete default org membership role. Please re-assign and try again."
|
||||||
|
|||||||
+1
-1
@@ -84,7 +84,7 @@ export const AddOrgMemberModal = ({
|
|||||||
resolver: zodResolver(addMemberFormSchema)
|
resolver: zodResolver(addMemberFormSchema)
|
||||||
});
|
});
|
||||||
|
|
||||||
// set initial form role based off org default role
|
// set initial form role based off org default role
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (organizationRoles) {
|
if (organizationRoles) {
|
||||||
reset({
|
reset({
|
||||||
|
|||||||
@@ -80,7 +80,8 @@ export const OrgRoleTable = () => {
|
|||||||
|
|
||||||
if (isCustomRole && subscription && !subscription?.rbac) {
|
if (isCustomRole && subscription && !subscription?.rbac) {
|
||||||
handlePopUpOpen("upgradePlan", {
|
handlePopUpOpen("upgradePlan", {
|
||||||
description: "You can assign custom roles to members if you upgrade your Infisical plan."
|
description:
|
||||||
|
"You can set the default org role to a custom value if you upgrade your Infisical plan."
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -135,7 +135,7 @@ export const OrgNameChangeSection = (): JSX.Element => {
|
|||||||
name="defaultMembershipRole"
|
name="defaultMembershipRole"
|
||||||
render={({ field: { value, onChange }, fieldState: { error } }) => (
|
render={({ field: { value, onChange }, fieldState: { error } }) => (
|
||||||
<FormControl
|
<FormControl
|
||||||
helperText="Users joining your org will be assigned this role unless otherwise specified"
|
helperText="Users joining your organization will be assigned this role unless otherwise specified."
|
||||||
isError={Boolean(error)}
|
isError={Boolean(error)}
|
||||||
errorText={error?.message}
|
errorText={error?.message}
|
||||||
className="max-w-md"
|
className="max-w-md"
|
||||||
|
|||||||
Reference in New Issue
Block a user