Skip to content

Commit ef2b934

Browse files
authored
Merge pull request #3415 from sumitdaga/issue-3400
fix for issue #3400
2 parents 54cab03 + 176e2dc commit ef2b934

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

src/projects/list/components/Projects/ProjectsGridView.jsx

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,17 @@ import {
99
filterTopicAndPostChangedNotifications,
1010
filterFileAndLinkChangedNotifications,
1111
} from '../../../../routes/notifications/helpers/notifications'
12+
import { getProjectRoleForCurrentUser } from '../../../../helpers/projectHelper'
1213
import ProjectListTimeSortColHeader from './ProjectListTimeSortColHeader'
1314
import ProjectListFilterColHeader from './ProjectListFilterColHeader'
1415
import GridView from '../../../../components/Grid/GridView'
1516
import UserTooltip from '../../../../components/User/UserTooltip'
1617
import {
1718
PROJECTS_LIST_PER_PAGE, SORT_OPTIONS, PROJECT_STATUS_COMPLETED, DATE_TO_USER_FIELD_MAP, PHASE_STATUS_REVIEWED,
18-
PHASE_STATUS_ACTIVE, PROJECT_STATUS_ACTIVE, TOOLTIP_DEFAULT_DELAY
19+
PHASE_STATUS_ACTIVE, PROJECT_STATUS_ACTIVE, TOOLTIP_DEFAULT_DELAY,
20+
ROLE_ADMINISTRATOR, ROLE_CONNECT_ADMIN,
21+
PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_PROGRAM_MANAGER,
22+
PROJECT_ROLE_PROJECT_MANAGER, PROJECT_ROLE_SOLUTION_ARCHITECT,
1923
} from '../../../../config/constants'
2024
import { getProjectTemplateByKey } from '../../../../helpers/templates'
2125
import TextTruncate from 'react-text-truncate'
@@ -36,7 +40,7 @@ const EnhancedProjectStatus = editableProjectStatus(ProjectStatus)
3640
const ProjectsGridView = props => {
3741
const { projects, members, totalCount, criteria, pageNum, sortHandler, currentUser, onPageChange,
3842
error, isLoading, infiniteAutoload, setInfiniteAutoload, projectsStatus, onChangeStatus,
39-
applyFilters, projectTemplates, notifications, newProjectLink, setFilter, isCustomer, callInviteRequest,
43+
applyFilters, projectTemplates, notifications, newProjectLink, setFilter, callInviteRequest,
4044
isAcceptingInvite } = props
4145

4246
const currentSortField = _.get(criteria, 'sort', '')
@@ -237,7 +241,17 @@ const ProjectsGridView = props => {
237241
sortable: false,
238242
classes: 'item-status',
239243
renderText: item => {
240-
const canEdit = item.status !== PROJECT_STATUS_COMPLETED && !isCustomer
244+
const isSuperUser = _.intersection([ROLE_ADMINISTRATOR, ROLE_CONNECT_ADMIN], currentUser.roles).length > 0
245+
const userProjectRole = getProjectRoleForCurrentUser({ project: item, currentUserId: currentUser.userId })
246+
const statusEditRoles = [
247+
PROJECT_ROLE_COPILOT,
248+
PROJECT_ROLE_MANAGER,
249+
PROJECT_ROLE_PROGRAM_MANAGER,
250+
PROJECT_ROLE_PROJECT_MANAGER,
251+
PROJECT_ROLE_SOLUTION_ARCHITECT
252+
]
253+
const canEdit = item.status !== PROJECT_STATUS_COMPLETED && (isSuperUser || _.includes(statusEditRoles, userProjectRole))
254+
241255
const hasReviewedOrActivePhases = !!_.find(item.phases, (phase) => _.includes([PHASE_STATUS_REVIEWED, PHASE_STATUS_ACTIVE], phase.status))
242256
const isProjectActive = item.status === PROJECT_STATUS_ACTIVE
243257
const isV3Project = item.version === 'v3'

0 commit comments

Comments
 (0)