Merge pull request #43 from edx/jhynes/microba-1822_fix-access

fix: use `originalUserIsStaff` to gate bulk email tool over `isStaff`
This commit is contained in:
Justin Hynes
2022-06-01 14:30:10 -04:00
committed by GitHub
5 changed files with 12 additions and 11 deletions

View File

@@ -19,7 +19,7 @@ export default function BulkEmailTool() {
return (
<CourseMetadataContext.Consumer>
{(courseMetadata) => (courseMetadata.isStaff ? (
{(courseMetadata) => (courseMetadata.originalUserIsStaff ? (
<div>
<NavigationTabs courseId={courseId} tabData={courseMetadata.tabs} />
<div>

View File

@@ -3,6 +3,7 @@
*/
import React from 'react';
import { Factory } from 'rosie';
import { camelCaseObject } from '@edx/frontend-platform';
import {
render, screen, cleanup, initializeMockApp,
} from '../../../setupTest';
@@ -36,15 +37,15 @@ describe('BulkEmailTool', () => {
*/
function buildCourseMetadata(cohortData, courseData) {
const {
org, number, title, tabs, is_staff: isStaff,
} = courseData;
org, number, title, tabs, originalUserIsStaff,
} = camelCaseObject(courseData);
const { cohorts } = cohortData;
return {
org,
number,
title,
isStaff,
originalUserIsStaff,
tabs: [...tabs],
cohorts: cohorts.map(({ name }) => name),
};
@@ -78,7 +79,7 @@ describe('BulkEmailTool', () => {
test('BulkEmailTool renders error page on no staff user', async () => {
const cohorts = { cohorts: [] };
const courseInfo = Factory.build('courseMetadata', { is_staff: false });
const courseInfo = Factory.build('courseMetadata', { original_user_is_staff: false });
const courseMetadata = buildCourseMetadata(cohorts, courseInfo);
renderBulkEmailTool(courseMetadata);
// verify error page is displayed for user without staff permissions

View File

@@ -31,7 +31,7 @@ export default function PageContainer(props) {
org: '',
number: '',
title: '',
isStaff: false,
originalUserIsStaff: false,
tabs: [],
cohorts: [],
});
@@ -39,7 +39,7 @@ export default function PageContainer(props) {
}
const {
org, number, title, tabs, is_staff: isStaff,
org, number, title, tabs, originalUserIsStaff,
} = metadataResponse;
const { cohorts } = cohortsResponse;
@@ -47,7 +47,7 @@ export default function PageContainer(props) {
org,
number,
title,
isStaff,
originalUserIsStaff,
tabs: [...tabs],
cohorts: cohorts.map(({ name }) => name),
});

View File

@@ -6,7 +6,7 @@ export default Factory.define('courseMetadata')
.option('host', 'http://localhost:18000')
.attrs({
is_staff: true,
original_user_is_staff: false,
original_user_is_staff: true,
number: 'DemoX',
org: 'edX',
title: 'Demonstration Course',

View File

@@ -1,4 +1,4 @@
import { getConfig } from '@edx/frontend-platform';
import { camelCaseObject, getConfig } from '@edx/frontend-platform';
import { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth';
const courseHomeBaseUrl = `${getConfig().LMS_BASE_URL}/api/course_home/v1/course_metadata`;
@@ -6,7 +6,7 @@ const courseHomeBaseUrl = `${getConfig().LMS_BASE_URL}/api/course_home/v1/course
export async function getCourseHomeCourseMetadata(courseId) {
const courseHomeMetadataUrl = `${courseHomeBaseUrl}/${courseId}`;
const { data } = await getAuthenticatedHttpClient().get(courseHomeMetadataUrl);
return data;
return camelCaseObject(data);
}
export async function getCohorts(courseId) {