diff --git a/backend/src/server/routes/v2/organization-router.ts b/backend/src/server/routes/v2/organization-router.ts index f87e7a6f0..49488776b 100644 --- a/backend/src/server/routes/v2/organization-router.ts +++ b/backend/src/server/routes/v2/organization-router.ts @@ -186,7 +186,7 @@ export const registerOrgRouter = async (server: FastifyZodProvider) => { }) } }, - onRequest: verifyAuth([AuthMode.JWT, AuthMode.API_KEY, AuthMode.IDENTITY_ACCESS_TOKEN]), + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), handler: async (req) => { if (req.auth.actor !== ActorType.USER) return; @@ -289,7 +289,7 @@ export const registerOrgRouter = async (server: FastifyZodProvider) => { }) } }, - onRequest: verifyAuth([AuthMode.JWT, AuthMode.API_KEY, AuthMode.IDENTITY_ACCESS_TOKEN]), + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), handler: async (req) => { const memberships = await server.services.org.listProjectMembershipsByOrgMembershipId({ actor: req.permission.type, diff --git a/backend/src/services/org/org-service.ts b/backend/src/services/org/org-service.ts index 3e30d8c52..289491e8d 100644 --- a/backend/src/services/org/org-service.ts +++ b/backend/src/services/org/org-service.ts @@ -379,6 +379,11 @@ export const orgServiceFactory = ({ const { permission } = await permissionService.getUserOrgPermission(userId, orgId, actorAuthMethod, actorOrgId); ForbiddenError.from(permission).throwUnlessCan(OrgPermissionActions.Edit, OrgPermissionSubjects.Member); + const [foundMembership] = await orgDAL.findMembership({ id: membershipId, orgId }); + if (!foundMembership) throw new NotFoundError({ message: "Failed to find organization membership" }); + if (foundMembership.userId === userId) + throw new BadRequestError({ message: "Cannot update own organization membership" }); + const isCustomRole = !Object.values(OrgMembershipRole).includes(role as OrgMembershipRole); if (role && isCustomRole) { const customRole = await orgRoleDAL.findOne({ slug: role, orgId }); @@ -400,10 +405,6 @@ export const orgServiceFactory = ({ return membership; } - if (isActive !== undefined) { - ForbiddenError.from(permission).throwUnlessCan(OrgPermissionActions.Delete, OrgPermissionSubjects.Member); - } - const [membership] = await orgDAL.updateMembership({ id: membershipId, orgId }, { role, roleId: null, isActive }); return membership; }; diff --git a/frontend/src/components/v2/DeleteActionModal/DeleteActionModal.tsx b/frontend/src/components/v2/DeleteActionModal/DeleteActionModal.tsx index 2657686de..76804c137 100644 --- a/frontend/src/components/v2/DeleteActionModal/DeleteActionModal.tsx +++ b/frontend/src/components/v2/DeleteActionModal/DeleteActionModal.tsx @@ -25,7 +25,7 @@ export const DeleteActionModal = ({ deleteKey, onDeleteApproved, title, - subTitle = "This action is irreversible!", + subTitle = "This action is irreversible.", buttonText = "Delete" }: Props): JSX.Element => { const [inputData, setInputData] = useState(""); @@ -86,7 +86,7 @@ export const DeleteActionModal = ({ - Type {deleteKey} to delete the resource + Type {deleteKey} to perform this action } className="mb-0" @@ -94,7 +94,7 @@ export const DeleteActionModal = ({ setInputData(e.target.value)} - placeholder="Type to delete..." + placeholder="Type confirm..." /> diff --git a/frontend/src/views/Org/MembersPage/components/OrgMembersTab/components/OrgMembersSection/OrgMembersTable.tsx b/frontend/src/views/Org/MembersPage/components/OrgMembersTab/components/OrgMembersSection/OrgMembersTable.tsx index ae75c5186..9212a5135 100644 --- a/frontend/src/views/Org/MembersPage/components/OrgMembersTab/components/OrgMembersSection/OrgMembersTable.tsx +++ b/frontend/src/views/Org/MembersPage/components/OrgMembersTab/components/OrgMembersSection/OrgMembersTable.tsx @@ -1,6 +1,6 @@ import { useCallback, useMemo, useState } from "react"; import { useRouter } from "next/router"; -import { faEllipsis,faMagnifyingGlass, faUsers } from "@fortawesome/free-solid-svg-icons"; +import { faEllipsis, faMagnifyingGlass, faUsers } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { twMerge } from "tailwind-merge"; diff --git a/frontend/src/views/Org/UserPage/UserPage.tsx b/frontend/src/views/Org/UserPage/UserPage.tsx index 7253d1c77..d27ba2365 100644 --- a/frontend/src/views/Org/UserPage/UserPage.tsx +++ b/frontend/src/views/Org/UserPage/UserPage.tsx @@ -25,7 +25,7 @@ import { } from "@app/hooks/api"; import { usePopUp } from "@app/hooks/usePopUp"; -import { UserDetailsSection, UserOrgMembershipModal,UserProjectsSection } from "./components"; +import { UserDetailsSection, UserOrgMembershipModal, UserProjectsSection } from "./components"; export const UserPage = withPermission( () => { @@ -161,9 +161,9 @@ export const UserPage = withPermission( : "" } onClick={async () => { - if (currentOrg?.authEnforced) { + if (currentOrg?.scimEnabled) { createNotification({ - text: "You cannot manage users from Infisical when org-level auth is enforced for your organization", + text: "You cannot manage users from Infisical when SCIM is enabled for your organization", type: "error" }); return; @@ -204,9 +204,9 @@ export const UserPage = withPermission( : "pointer-events-none cursor-not-allowed opacity-50" )} onClick={() => { - if (currentOrg?.authEnforced) { + if (currentOrg?.scimEnabled) { createNotification({ - text: "You cannot manage users from Infisical when org-level auth is enforced for your organization", + text: "You cannot manage users from Infisical when SCIM is enabled for your organization", type: "error" }); return;