diff --git a/docs/permissions.html b/docs/permissions.html index 44dfaff34..36b67dac9 100644 --- a/docs/permissions.html +++ b/docs/permissions.html @@ -232,6 +232,31 @@

+
+
+
+ Remove Copilots +
+
REMOVE_COPILOTS
+
Remove copilots form the project.
+
+
+
+ manager + account_manager + account_executive + project_manager + program_manager + solution_architect +
+ +
+ administrator + Connect Admin + Connect Copilot Manager +
+
+
diff --git a/src/components/TeamManagement/CopilotManagementDialog.js b/src/components/TeamManagement/CopilotManagementDialog.js index 4f96f2120..6f190fb47 100644 --- a/src/components/TeamManagement/CopilotManagementDialog.js +++ b/src/components/TeamManagement/CopilotManagementDialog.js @@ -92,6 +92,7 @@ class ProjectManagementDialog extends React.Component { onCancel, copilotTeamInvites = [], selectedMembers, processingInvites, } = this.props const canManageCopilots = hasPermission(PERMISSIONS.MANAGE_COPILOTS) + const canRemoveCopilots = hasPermission(PERMISSIONS.REMOVE_COPILOTS) const showSuggestions = hasPermission(PERMISSIONS.SEE_MEMBER_SUGGESTIONS) let i = 0 return ( @@ -138,7 +139,7 @@ class ProjectManagementDialog extends React.Component {
- {canManageCopilots &&
+ {(canManageCopilots || canRemoveCopilots) &&
{(currentUser.userId === member.userId) ? 'Leave' : 'Remove'}
}
@@ -169,7 +170,7 @@ class ProjectManagementDialog extends React.Component { { (!hasUserId) && {invite.email}}
- {canManageCopilots &&
+ {(canManageCopilots || canRemoveCopilots) &&
Remove Invited {moment(invite.createdAt).format('MMM D, YY')} diff --git a/src/components/TeamManagement/TeamManagement.jsx b/src/components/TeamManagement/TeamManagement.jsx index 9b94a0a6b..6a0e0f898 100644 --- a/src/components/TeamManagement/TeamManagement.jsx +++ b/src/components/TeamManagement/TeamManagement.jsx @@ -111,6 +111,7 @@ class TeamManagement extends React.Component { const customerTeamManageAction = hasPermission(PERMISSIONS.MANAGE_CUSTOMER_TEAM) const topcoderTeamManageAction = hasPermission(PERMISSIONS.MANAGE_TOPCODER_TEAM) const copilotTeamManageAction = hasPermission(PERMISSIONS.MANAGE_COPILOTS) + const copilotRemoveAction = hasPermission(PERMISSIONS.REMOVE_COPILOTS) const canRequestCopilot = hasPermission(PERMISSIONS.REQUEST_COPILOTS) const canJoinTopcoderTeam = !currentMember && hasPermission(PERMISSIONS.JOIN_TOPCODER_TEAM) @@ -191,7 +192,7 @@ class TeamManagement extends React.Component {
Copilot - {copilotTeamManageAction && + {(copilotTeamManageAction || copilotRemoveAction) && onShowCopilotDialog(true)}> Manage diff --git a/src/config/permissions.js b/src/config/permissions.js index f67a03065..ee0391173 100644 --- a/src/config/permissions.js +++ b/src/config/permissions.js @@ -228,6 +228,21 @@ export const PERMISSIONS = { ] }, + REMOVE_COPILOTS: { + meta: { + group: 'Project Members', + title: 'Remove Copilots', + description: 'Remove copilots form the project.', + }, + projectRoles: [ + ..._.difference(PROJECT_ALL, [PROJECT_ROLE_COPILOT, PROJECT_ROLE_CUSTOMER]) + ], + topcoderRoles: [ + ...TOPCODER_ADMINS, + ROLE_CONNECT_COPILOT_MANAGER + ] + }, + MANAGE_TOPCODER_TEAM: { meta: { group: 'Project Members',