mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-07 18:27:36 +00:00
Added ability to change a role in an organization
This commit is contained in:
@@ -30,7 +30,7 @@ router.patch(
|
|||||||
'/:organizationId/memberships/:membershipId',
|
'/:organizationId/memberships/:membershipId',
|
||||||
param('organizationId').exists().trim(),
|
param('organizationId').exists().trim(),
|
||||||
param('membershipId').exists().trim(),
|
param('membershipId').exists().trim(),
|
||||||
body('role').exists().isString().trim().isIn([ADMIN, MEMBER]),
|
body('role').exists().isString().trim().isIn([OWNER, ADMIN, MEMBER]),
|
||||||
validateRequest,
|
validateRequest,
|
||||||
requireAuth({
|
requireAuth({
|
||||||
acceptedAuthModes: ['jwt', 'apiKey']
|
acceptedAuthModes: ['jwt', 'apiKey']
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ import { useEffect, useState } from 'react';
|
|||||||
import { useRouter } from 'next/router';
|
import { useRouter } from 'next/router';
|
||||||
import { faX } from '@fortawesome/free-solid-svg-icons';
|
import { faX } from '@fortawesome/free-solid-svg-icons';
|
||||||
|
|
||||||
|
import changeUserRoleInOrganization from '@app/pages/api/organization/changeUserRoleInOrganization';
|
||||||
import deleteUserFromOrganization from '@app/pages/api/organization/deleteUserFromOrganization';
|
import deleteUserFromOrganization from '@app/pages/api/organization/deleteUserFromOrganization';
|
||||||
import changeUserRoleInWorkspace from '@app/pages/api/workspace/changeUserRoleInWorkspace';
|
|
||||||
import deleteUserFromWorkspace from '@app/pages/api/workspace/deleteUserFromWorkspace';
|
import deleteUserFromWorkspace from '@app/pages/api/workspace/deleteUserFromWorkspace';
|
||||||
import getLatestFileKey from '@app/pages/api/workspace/getLatestFileKey';
|
import getLatestFileKey from '@app/pages/api/workspace/getLatestFileKey';
|
||||||
import uploadKeys from '@app/pages/api/workspace/uploadKeys';
|
import uploadKeys from '@app/pages/api/workspace/uploadKeys';
|
||||||
@@ -55,9 +55,9 @@ const UserTable = ({ userData, changeData, myUser, filter, resendInvite, isOrg }
|
|||||||
]);
|
]);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Update the rold of a certain user
|
// Update the role of a certain user
|
||||||
const handleRoleUpdate = (index: number, e: string) => {
|
const handleRoleUpdate = (index: number, e: string) => {
|
||||||
changeUserRoleInWorkspace(userData[index].membershipId, e);
|
changeUserRoleInOrganization(String(localStorage.getItem("orgData.id")), userData[index].membershipId, e);
|
||||||
changeData([
|
changeData([
|
||||||
...userData.slice(0, index),
|
...userData.slice(0, index),
|
||||||
...[
|
...[
|
||||||
@@ -145,9 +145,9 @@ const UserTable = ({ userData, changeData, myUser, filter, resendInvite, isOrg }
|
|||||||
</td>
|
</td>
|
||||||
<td className="pl-6 pr-10 py-2 border-mineshaft-700 border-t text-gray-300">
|
<td className="pl-6 pr-10 py-2 border-mineshaft-700 border-t text-gray-300">
|
||||||
<div className="justify-start h-full flex flex-row items-center">
|
<div className="justify-start h-full flex flex-row items-center">
|
||||||
{row.status === 'granted' &&
|
{row.status === 'accepted' &&
|
||||||
((myRole === 'admin' && row.role !== 'owner') || myRole === 'owner') &&
|
((myRole === 'admin' && row.role !== 'owner') || myRole === 'owner') &&
|
||||||
myUser !== row.email ? (
|
(myUser !== row.email) ? (
|
||||||
<Listbox
|
<Listbox
|
||||||
isSelected={row.role}
|
isSelected={row.role}
|
||||||
onChange={(e) => handleRoleUpdate(index, e)}
|
onChange={(e) => handleRoleUpdate(index, e)}
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
import SecurityClient from '@app/components/utilities/SecurityClient';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function change the access of a user in a certain organization
|
||||||
|
* @param {string} organizationId
|
||||||
|
* @param {string} membershipId
|
||||||
|
* @param {string} role
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
const changeUserRoleInOrganization = (organizationId: string, membershipId: string, role: string) =>
|
||||||
|
SecurityClient.fetchCall(`/api/v2/organizations/${organizationId}/memberships/${membershipId}`, {
|
||||||
|
method: 'PATCH',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
role
|
||||||
|
})
|
||||||
|
}).then(async (res) => {
|
||||||
|
if (res && res.status === 200) {
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
console.log('Failed to change the user role in an org');
|
||||||
|
return undefined;
|
||||||
|
});
|
||||||
|
|
||||||
|
export default changeUserRoleInOrganization;
|
||||||
Reference in New Issue
Block a user