Skip to content

Commit e3d8d8d

Browse files
committed
refactor: add a teams manage variable
1 parent 4916b12 commit e3d8d8d

6 files changed

Lines changed: 17 additions & 34 deletions

File tree

src/authz-module/components/AddRoleButton.tsx

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { useNavigate } from 'react-router-dom';
66
import baseMessages from '@src/authz-module/messages';
77
import { buildWizardPath } from '@src/authz-module/constants';
88
import { useValidateUserPermissionsNonSuspense } from '@src/data/hooks';
9-
import { CONTENT_COURSE_PERMISSIONS, CONTENT_LIBRARY_PERMISSIONS } from '../roles-permissions';
9+
import { MANAGE_TEAM_PERMISSIONS } from '../roles-permissions';
1010

1111
interface AddRoleButtonProps {
1212
presetUsername?: string;
@@ -17,10 +17,7 @@ const AddRoleButton = ({ presetUsername, from }: AddRoleButtonProps) => {
1717
const intl = useIntl();
1818
const navigate = useNavigate();
1919

20-
const { data: permissionValidationResponse } = useValidateUserPermissionsNonSuspense([
21-
{ action: CONTENT_LIBRARY_PERMISSIONS.MANAGE_LIBRARY_TEAM },
22-
{ action: CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_TEAM },
23-
]);
20+
const { data: permissionValidationResponse } = useValidateUserPermissionsNonSuspense(MANAGE_TEAM_PERMISSIONS);
2421
const canAssignRole = permissionValidationResponse?.some((permission) => permission.allowed);
2522

2623
const handleClick = () => {

src/authz-module/components/TableControlBar/RolesFilter.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { useIntl } from '@edx/frontend-platform/i18n';
33
import { Person } from '@openedx/paragon/icons';
44
import { useValidateUserPermissionsNonSuspense } from '@src/data/hooks';
55
import { CONTENT_COURSE_PERMISSIONS, CONTENT_LIBRARY_PERMISSIONS } from '@src/authz-module/roles-permissions';
6+
import { CONTEXT_TYPES } from '@src/authz-module/constants';
67
import MultipleChoiceFilter from './MultipleChoiceFilter';
78
import { MultipleChoiceFilterProps } from './types';
89
import { getRolesFiltersOptions } from '../constants';
@@ -24,8 +25,8 @@ const RolesFilter = ({
2425
const contexts = new Set<string>();
2526
permissions?.forEach((p) => {
2627
if (!p.allowed) { return; }
27-
if (p.action === CONTENT_LIBRARY_PERMISSIONS.VIEW_LIBRARY_TEAM) { contexts.add('library'); }
28-
if (p.action === CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_TEAM) { contexts.add('course'); }
28+
if (p.action === CONTENT_LIBRARY_PERMISSIONS.VIEW_LIBRARY_TEAM) { contexts.add(CONTEXT_TYPES.LIBRARY); }
29+
if (p.action === CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_TEAM) { contexts.add(CONTEXT_TYPES.COURSE); }
2930
});
3031
return contexts;
3132
}, [permissions]);

src/authz-module/constants.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,9 @@ export const DEFAULT_FILTER_PAGE_SIZE = 5;
6767
export const ADMIN_ROLES = ['course_admin', 'library_admin'];
6868

6969
// Resource Type Definitions
70-
export const RESOURCE_TYPES = {
70+
export const CONTEXT_TYPES = {
7171
LIBRARY: 'library',
7272
COURSE: 'course',
7373
} as const;
7474

75-
export type ResourceType = typeof RESOURCE_TYPES[keyof typeof RESOURCE_TYPES];
75+
export type ResourceType = typeof CONTEXT_TYPES[keyof typeof CONTEXT_TYPES];

src/authz-module/role-assignation-wizard/AssignRoleWizardPage.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { ROUTES } from '../constants';
77
import messages from './messages';
88
import {
99
CONTENT_COURSE_PERMISSIONS, CONTENT_LIBRARY_PERMISSIONS, courseRolesMetadata, libraryRolesMetadata,
10+
MANAGE_TEAM_PERMISSIONS,
1011
} from '../roles-permissions';
1112

1213
const AssignRoleWizardPage = () => {
@@ -22,10 +23,7 @@ const AssignRoleWizardPage = () => {
2223
? `${ROUTES.HOME_PATH}/user/${presetUser}`
2324
: returnTo;
2425

25-
const { data: permissionValidationResponse } = useValidateUserPermissionsNonSuspense([
26-
{ action: CONTENT_LIBRARY_PERMISSIONS.MANAGE_LIBRARY_TEAM },
27-
{ action: CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_TEAM },
28-
]);
26+
const { data: permissionValidationResponse } = useValidateUserPermissionsNonSuspense(MANAGE_TEAM_PERMISSIONS);
2927

3028
const rolesAssignable = permissionValidationResponse?.flatMap((p) => {
3129
if (!p.allowed) { return []; }

src/authz-module/roles-permissions/RolesPermissions.test.tsx

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -16,27 +16,6 @@ jest.mock('./library/utils', () => ({
1616
]),
1717
}));
1818

19-
// Mock constants
20-
jest.mock('./course/constants', () => ({
21-
rolesObject: [
22-
{
23-
name: 'Course Admin', role: 'admin', permissions: [], userCount: 1,
24-
},
25-
],
26-
coursePermissions: [],
27-
courseResourceTypes: [],
28-
}));
29-
30-
jest.mock('./library/constants', () => ({
31-
rolesLibraryObject: [
32-
{
33-
name: 'Library Admin', role: 'admin', permissions: [], userCount: 1,
34-
},
35-
],
36-
libraryPermissions: [],
37-
libraryResourceTypes: [],
38-
}));
39-
4019
jest.mock('@openedx/paragon', () => ({
4120
...jest.requireActual('@openedx/paragon'),
4221
Hyperlink: ({ children, ...props }:

src/authz-module/roles-permissions/index.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import { CONTENT_COURSE_PERMISSIONS } from './course/constants';
2+
import { CONTENT_LIBRARY_PERMISSIONS } from './library/constants';
3+
14
export {
25
CONTENT_LIBRARY_PERMISSIONS,
36
libraryResourceTypes,
@@ -13,3 +16,8 @@ export {
1316
rolesObject,
1417
courseRolesMetadata,
1518
} from './course/constants';
19+
20+
export const MANAGE_TEAM_PERMISSIONS: { action: string }[] = [
21+
{ action: CONTENT_LIBRARY_PERMISSIONS.MANAGE_LIBRARY_TEAM },
22+
{ action: CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_TEAM },
23+
];

0 commit comments

Comments
 (0)