diff --git a/src/pages/Assignment/Assignment.js b/src/pages/Assignment/Assignment.js index 02091768d..a5872b356 100644 --- a/src/pages/Assignment/Assignment.js +++ b/src/pages/Assignment/Assignment.js @@ -31,7 +31,7 @@ import { loggedInUserIdSelector } from '../../redux/selectors/auth'; import { isStudentOf, isSupervisorOf, - isLoggedAsSuperAdmin + isAdminOf } from '../../redux/selectors/users'; import Page from '../../components/layout/Page'; @@ -91,9 +91,9 @@ class Assignment extends Component { userId, loggedInUserId, init, - isSuperAdmin, isStudentOf, isSupervisorOf, + isAdminOf, canSubmit, runtimeEnvironments, exerciseSync, @@ -129,17 +129,19 @@ class Assignment extends Component { { resource: assignment, iconName: 'puzzle-piece', - breadcrumb: assignment => ( - { - text: ( - - ), - link: ({ EXERCISE_URI_FACTORY }) => - (isSuperAdmin || isSupervisorOf(assignment.groupId)) ? EXERCISE_URI_FACTORY(assignment.exerciseId) : '#' - }) + breadcrumb: assignment => ({ + text: ( + + ), + link: ({ EXERCISE_URI_FACTORY }) => + isAdminOf(assignment.groupId) || + isSupervisorOf(assignment.groupId) + ? EXERCISE_URI_FACTORY(assignment.exerciseId) + : '#' + }) }, { text: ( @@ -161,7 +163,8 @@ class Assignment extends Component {

} - {(isSuperAdmin || isSupervisorOf(assignment.groupId)) && + {(isSupervisorOf(assignment.groupId) || + isAdminOf(assignment.groupId)) && // includes superadmin

} - {(isSuperAdmin || isSupervisorOf(assignment.groupId)) && + {(isSupervisorOf(assignment.groupId) || + isAdminOf(assignment.groupId)) && // includes superadmin isStudentOf(loggedInUserId, groupId)(state), isSupervisorOf: groupId => isSupervisorOf(loggedInUserId, groupId)(state), + isAdminOf: groupId => isAdminOf(loggedInUserId, groupId)(state), canSubmit: canSubmitSolution(assignmentId)(state), submissions: getUserSubmissions(userId, assignmentId)(state) }; diff --git a/src/pages/EditAssignment/EditAssignment.js b/src/pages/EditAssignment/EditAssignment.js index 63ceee1f4..c40ac551b 100644 --- a/src/pages/EditAssignment/EditAssignment.js +++ b/src/pages/EditAssignment/EditAssignment.js @@ -26,16 +26,14 @@ import { getAssignment } from '../../redux/selectors/assignments'; import { canSubmitSolution } from '../../redux/selectors/canSubmit'; import { runtimeEnvironmentsSelector } from '../../redux/selectors/runtimeEnvironments'; import { isSubmitting } from '../../redux/selectors/submission'; -import { - isSupervisorOf, - isLoggedAsSuperAdmin -} from '../../redux/selectors/users'; +import { isSupervisorOf, isAdminOf } from '../../redux/selectors/users'; import { fetchRuntimeEnvironments } from '../../redux/modules/runtimeEnvironments'; import { isReady, getJsData } from '../../redux/helpers/resourceManager'; import { ResubmitAllSolutionsContainer } from '../../containers/ResubmitSolutionContainer'; import AssignmentSync from '../../components/Assignments/Assignment/AssignmentSync'; import withLinks from '../../hoc/withLinks'; +import { loggedInUserIdSelector } from '../../redux/selectors/auth'; class EditAssignment extends Component { componentWillMount = () => this.props.loadAsync(); @@ -62,25 +60,26 @@ class EditAssignment extends Component { pointsPercentualThreshold, ...rest }) => ({ - firstDeadline: moment.unix(firstDeadline), - secondDeadline: moment.unix(secondDeadline), - pointsPercentualThreshold: pointsPercentualThreshold * 100, - ...rest - }); + firstDeadline: moment.unix(firstDeadline), + secondDeadline: moment.unix(secondDeadline), + pointsPercentualThreshold: pointsPercentualThreshold * 100, + ...rest + }); render() { const { links: { ASSIGNMENT_DETAIL_URI_FACTORY, - GROUP_URI_FACTORY, - SUPERVISOR_STATS_URI_FACTORY, - EXERCISE_URI_FACTORY + GROUP_URI_FACTORY, + SUPERVISOR_STATS_URI_FACTORY, + EXERCISE_URI_FACTORY }, params: { assignmentId }, push, assignment, editAssignment, - isSuperAdmin, + isSupervisorOf, + isAdminOf, formValues, exerciseSync } = this.props; @@ -130,7 +129,8 @@ class EditAssignment extends Component { - {(isSuperAdmin || isSupervisorOf(assignment.groupId)) && + {(isAdminOf(assignment.groupId) || + isSupervisorOf(assignment.groupId)) &&

} - {(isSuperAdmin || isSupervisorOf(assignment.groupId)) && + {(isAdminOf(assignment.groupId) || + isSupervisorOf(assignment.groupId)) && { + const loggedInUserId = loggedInUserIdSelector(state); return { assignment: getAssignment(state)(assignmentId), runtimeEnvironments: runtimeEnvironmentsSelector(state), submitting: isSubmitting(state), - isSuperAdmin: isLoggedAsSuperAdmin(state), canSubmit: canSubmitSolution(assignmentId)(state), - formValues: getFormValues('editAssignment')(state) + formValues: getFormValues('editAssignment')(state), + isSupervisorOf: groupId => + isSupervisorOf(loggedInUserId, groupId)(state), + isAdminOf: groupId => isAdminOf(loggedInUserId, groupId)(state) }; }, (dispatch, { params: { assignmentId } }) => ({