fix: scim improvements and ui fixes

This commit is contained in:
Daniel Hougaard
2025-03-25 07:12:56 +04:00
parent 5fe3c9868f
commit 4b9f409ea5
3 changed files with 33 additions and 5 deletions
+8 -1
View File
@@ -583,6 +583,8 @@ export const scimServiceFactory = ({
const serverCfg = await getServerCfg(); const serverCfg = await getServerCfg();
await userDAL.transaction(async (tx) => { await userDAL.transaction(async (tx) => {
const { role, roleId } = await getDefaultOrgMembershipRole(org.defaultMembershipRole);
await userAliasDAL.update( await userAliasDAL.update(
{ {
orgId, orgId,
@@ -594,10 +596,15 @@ export const scimServiceFactory = ({
}, },
tx tx
); );
await orgMembershipDAL.updateById( await orgMembershipDAL.updateById(
membership.id, membership.id,
{ {
isActive: active isActive: active,
...(active && {
role,
roleId
})
}, },
tx tx
); );
@@ -258,7 +258,7 @@ export const OrgMembersTable = ({ handlePopUpOpen, setCompleteInviteLinks }: Pro
</Th> </Th>
<Th className="w-1/3"> <Th className="w-1/3">
<div className="flex items-center"> <div className="flex items-center">
Email Username
<IconButton <IconButton
variant="plain" variant="plain"
className={`ml-2 ${orderBy === OrgMembersOrderBy.Email ? "" : "opacity-30"}`} className={`ml-2 ${orderBy === OrgMembersOrderBy.Email ? "" : "opacity-30"}`}
@@ -478,7 +478,7 @@ export const OrgMembersTable = ({ handlePopUpOpen, setCompleteInviteLinks }: Pro
onClick={(e) => { onClick={(e) => {
e.stopPropagation(); e.stopPropagation();
if (currentOrg?.scimEnabled) { if (currentOrg?.scimEnabled && isActive) {
createNotification({ 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 org-level auth is enforced for your organization",
type: "error" type: "error"
@@ -94,8 +94,29 @@ export const AddMemberModal = ({ popUp, handlePopUpToggle }: Props) => {
}); });
} else { } else {
const inviteeEmails = selectedMembers const inviteeEmails = selectedMembers
.map((member) => member?.user.username as string) .map((member) => {
.filter(Boolean); if (!member) return null;
if (member.user.email) {
return member.user.email;
}
if (member.user.username) {
return member.user.username;
}
return null;
})
.filter(Boolean) as string[];
if (inviteeEmails.length !== selectedMembers.length) {
createNotification({
text: "Failed to add users to project. One or more users were invalid.",
type: "error"
});
return;
}
if (inviteeEmails.length || newInvitees.length) { if (inviteeEmails.length || newInvitees.length) {
await addMembersToProject({ await addMembersToProject({
inviteeEmails: [...inviteeEmails, ...newInvitees], inviteeEmails: [...inviteeEmails, ...newInvitees],