@openedx/frontend-app-admin-console 1.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. package/LICENSE +661 -0
  2. package/README.rst +164 -0
  3. package/dist/Main.d.ts +3 -0
  4. package/dist/Main.js +15 -0
  5. package/dist/Main.js.map +1 -0
  6. package/dist/app.d.ts +3 -0
  7. package/dist/app.js +10 -0
  8. package/dist/app.js.map +1 -0
  9. package/dist/authz-module/audit-user/index.d.ts +2 -0
  10. package/dist/authz-module/audit-user/index.js +191 -0
  11. package/dist/authz-module/audit-user/index.js.map +1 -0
  12. package/dist/authz-module/audit-user/messages.d.ts +58 -0
  13. package/dist/authz-module/audit-user/messages.js +60 -0
  14. package/dist/authz-module/audit-user/messages.js.map +1 -0
  15. package/dist/authz-module/authz-home/index.d.ts +2 -0
  16. package/dist/authz-module/authz-home/index.js +23 -0
  17. package/dist/authz-module/authz-home/index.js.map +1 -0
  18. package/dist/authz-module/authz-home/messages.d.ts +23 -0
  19. package/dist/authz-module/authz-home/messages.js +25 -0
  20. package/dist/authz-module/authz-home/messages.js.map +1 -0
  21. package/dist/authz-module/components/AddRoleButton.d.ts +6 -0
  22. package/dist/authz-module/components/AddRoleButton.js +22 -0
  23. package/dist/authz-module/components/AddRoleButton.js.map +1 -0
  24. package/dist/authz-module/components/AnchorButton.d.ts +2 -0
  25. package/dist/authz-module/components/AnchorButton.js +35 -0
  26. package/dist/authz-module/components/AnchorButton.js.map +1 -0
  27. package/dist/authz-module/components/AuthZLayout.d.ts +12 -0
  28. package/dist/authz-module/components/AuthZLayout.js +19 -0
  29. package/dist/authz-module/components/AuthZLayout.js.map +1 -0
  30. package/dist/authz-module/components/AuthZTitle.d.ts +20 -0
  31. package/dist/authz-module/components/AuthZTitle.js +22 -0
  32. package/dist/authz-module/components/AuthZTitle.js.map +1 -0
  33. package/dist/authz-module/components/ConfirmDeletionModal.d.ts +15 -0
  34. package/dist/authz-module/components/ConfirmDeletionModal.js +21 -0
  35. package/dist/authz-module/components/ConfirmDeletionModal.js.map +1 -0
  36. package/dist/authz-module/components/ErrorPage/index.d.ts +3 -0
  37. package/dist/authz-module/components/ErrorPage/index.js +59 -0
  38. package/dist/authz-module/components/ErrorPage/index.js.map +1 -0
  39. package/dist/authz-module/components/ErrorPage/messages.d.ts +53 -0
  40. package/dist/authz-module/components/ErrorPage/messages.js +55 -0
  41. package/dist/authz-module/components/ErrorPage/messages.js.map +1 -0
  42. package/dist/authz-module/components/PermissionTable.d.ts +9 -0
  43. package/dist/authz-module/components/PermissionTable.js +24 -0
  44. package/dist/authz-module/components/PermissionTable.js.map +1 -0
  45. package/dist/authz-module/components/RenderAdminRole.d.ts +5 -0
  46. package/dist/authz-module/components/RenderAdminRole.js +13 -0
  47. package/dist/authz-module/components/RenderAdminRole.js.map +1 -0
  48. package/dist/authz-module/components/RenderPermissionColumn.d.ts +6 -0
  49. package/dist/authz-module/components/RenderPermissionColumn.js +8 -0
  50. package/dist/authz-module/components/RenderPermissionColumn.js.map +1 -0
  51. package/dist/authz-module/components/RenderPermissionInLine.d.ts +6 -0
  52. package/dist/authz-module/components/RenderPermissionInLine.js +8 -0
  53. package/dist/authz-module/components/RenderPermissionInLine.js.map +1 -0
  54. package/dist/authz-module/components/ResourceTooltip.d.ts +11 -0
  55. package/dist/authz-module/components/ResourceTooltip.js +9 -0
  56. package/dist/authz-module/components/ResourceTooltip.js.map +1 -0
  57. package/dist/authz-module/components/RoleCard/constants.d.ts +14 -0
  58. package/dist/authz-module/components/RoleCard/constants.js +15 -0
  59. package/dist/authz-module/components/RoleCard/constants.js.map +1 -0
  60. package/dist/authz-module/components/RoleCard/messages.d.ts +73 -0
  61. package/dist/authz-module/components/RoleCard/messages.js +75 -0
  62. package/dist/authz-module/components/RoleCard/messages.js.map +1 -0
  63. package/dist/authz-module/components/TableCells.d.ts +29 -0
  64. package/dist/authz-module/components/TableCells.js +137 -0
  65. package/dist/authz-module/components/TableCells.js.map +1 -0
  66. package/dist/authz-module/components/TableControlBar/MultipleChoiceFilter.d.ts +3 -0
  67. package/dist/authz-module/components/TableControlBar/MultipleChoiceFilter.js +47 -0
  68. package/dist/authz-module/components/TableControlBar/MultipleChoiceFilter.js.map +1 -0
  69. package/dist/authz-module/components/TableControlBar/OrgFilter.d.ts +5 -0
  70. package/dist/authz-module/components/TableControlBar/OrgFilter.js +36 -0
  71. package/dist/authz-module/components/TableControlBar/OrgFilter.js.map +1 -0
  72. package/dist/authz-module/components/TableControlBar/RolesFilter.d.ts +4 -0
  73. package/dist/authz-module/components/TableControlBar/RolesFilter.js +29 -0
  74. package/dist/authz-module/components/TableControlBar/RolesFilter.js.map +1 -0
  75. package/dist/authz-module/components/TableControlBar/ScopesFilter.d.ts +4 -0
  76. package/dist/authz-module/components/TableControlBar/ScopesFilter.js +45 -0
  77. package/dist/authz-module/components/TableControlBar/ScopesFilter.js.map +1 -0
  78. package/dist/authz-module/components/TableControlBar/SearchFilter.d.ts +7 -0
  79. package/dist/authz-module/components/TableControlBar/SearchFilter.js +8 -0
  80. package/dist/authz-module/components/TableControlBar/SearchFilter.js.map +1 -0
  81. package/dist/authz-module/components/TableControlBar/TableControlBar.d.ts +5 -0
  82. package/dist/authz-module/components/TableControlBar/TableControlBar.js +99 -0
  83. package/dist/authz-module/components/TableControlBar/TableControlBar.js.map +1 -0
  84. package/dist/authz-module/components/TableControlBar/types.d.ts +18 -0
  85. package/dist/authz-module/components/TableControlBar/types.js +2 -0
  86. package/dist/authz-module/components/TableControlBar/types.js.map +1 -0
  87. package/dist/authz-module/components/TableFooter/TableFooter.d.ts +2 -0
  88. package/dist/authz-module/components/TableFooter/TableFooter.js +15 -0
  89. package/dist/authz-module/components/TableFooter/TableFooter.js.map +1 -0
  90. package/dist/authz-module/components/UserPermissions.d.ts +9 -0
  91. package/dist/authz-module/components/UserPermissions.js +56 -0
  92. package/dist/authz-module/components/UserPermissions.js.map +1 -0
  93. package/dist/authz-module/components/ViewMoreLink.d.ts +8 -0
  94. package/dist/authz-module/components/ViewMoreLink.js +8 -0
  95. package/dist/authz-module/components/ViewMoreLink.js.map +1 -0
  96. package/dist/authz-module/components/constants.d.ts +13 -0
  97. package/dist/authz-module/components/constants.js +80 -0
  98. package/dist/authz-module/components/constants.js.map +1 -0
  99. package/dist/authz-module/components/messages.d.ts +183 -0
  100. package/dist/authz-module/components/messages.js +185 -0
  101. package/dist/authz-module/components/messages.js.map +1 -0
  102. package/dist/authz-module/constants.d.ts +38 -0
  103. package/dist/authz-module/constants.js +77 -0
  104. package/dist/authz-module/constants.js.map +1 -0
  105. package/dist/authz-module/data/api.d.ts +109 -0
  106. package/dist/authz-module/data/api.js +107 -0
  107. package/dist/authz-module/data/api.js.map +1 -0
  108. package/dist/authz-module/data/hooks.d.ts +94 -0
  109. package/dist/authz-module/data/hooks.js +191 -0
  110. package/dist/authz-module/data/hooks.js.map +1 -0
  111. package/dist/authz-module/hooks/useCourseAuthoringFlag.d.ts +26 -0
  112. package/dist/authz-module/hooks/useCourseAuthoringFlag.js +86 -0
  113. package/dist/authz-module/hooks/useCourseAuthoringFlag.js.map +1 -0
  114. package/dist/authz-module/hooks/useQuerySettings.d.ts +27 -0
  115. package/dist/authz-module/hooks/useQuerySettings.js +72 -0
  116. package/dist/authz-module/hooks/useQuerySettings.js.map +1 -0
  117. package/dist/authz-module/hooks/useViewTeamPermissions.d.ts +5 -0
  118. package/dist/authz-module/hooks/useViewTeamPermissions.js +13 -0
  119. package/dist/authz-module/hooks/useViewTeamPermissions.js.map +1 -0
  120. package/dist/authz-module/index.d.ts +3 -0
  121. package/dist/authz-module/index.js +20 -0
  122. package/dist/authz-module/index.js.map +1 -0
  123. package/dist/authz-module/index.scss +131 -0
  124. package/dist/authz-module/messages.d.ts +48 -0
  125. package/dist/authz-module/messages.js +50 -0
  126. package/dist/authz-module/messages.js.map +1 -0
  127. package/dist/authz-module/role-assignation-wizard/AssignRoleWizard.d.ts +8 -0
  128. package/dist/authz-module/role-assignation-wizard/AssignRoleWizard.js +154 -0
  129. package/dist/authz-module/role-assignation-wizard/AssignRoleWizard.js.map +1 -0
  130. package/dist/authz-module/role-assignation-wizard/AssignRoleWizardPage.d.ts +2 -0
  131. package/dist/authz-module/role-assignation-wizard/AssignRoleWizardPage.js +39 -0
  132. package/dist/authz-module/role-assignation-wizard/AssignRoleWizardPage.js.map +1 -0
  133. package/dist/authz-module/role-assignation-wizard/components/DefineApplicationScopeStep.d.ts +8 -0
  134. package/dist/authz-module/role-assignation-wizard/components/DefineApplicationScopeStep.js +39 -0
  135. package/dist/authz-module/role-assignation-wizard/components/DefineApplicationScopeStep.js.map +1 -0
  136. package/dist/authz-module/role-assignation-wizard/components/HighlightedUsersInput.d.ts +11 -0
  137. package/dist/authz-module/role-assignation-wizard/components/HighlightedUsersInput.js +36 -0
  138. package/dist/authz-module/role-assignation-wizard/components/HighlightedUsersInput.js.map +1 -0
  139. package/dist/authz-module/role-assignation-wizard/components/OrgSection.d.ts +10 -0
  140. package/dist/authz-module/role-assignation-wizard/components/OrgSection.js +14 -0
  141. package/dist/authz-module/role-assignation-wizard/components/OrgSection.js.map +1 -0
  142. package/dist/authz-module/role-assignation-wizard/components/ScopeCheckboxItem.d.ts +8 -0
  143. package/dist/authz-module/role-assignation-wizard/components/ScopeCheckboxItem.js +5 -0
  144. package/dist/authz-module/role-assignation-wizard/components/ScopeCheckboxItem.js.map +1 -0
  145. package/dist/authz-module/role-assignation-wizard/components/ScopeFilterBar.d.ts +12 -0
  146. package/dist/authz-module/role-assignation-wizard/components/ScopeFilterBar.js +12 -0
  147. package/dist/authz-module/role-assignation-wizard/components/ScopeFilterBar.js.map +1 -0
  148. package/dist/authz-module/role-assignation-wizard/components/ScopeList.d.ts +20 -0
  149. package/dist/authz-module/role-assignation-wizard/components/ScopeList.js +30 -0
  150. package/dist/authz-module/role-assignation-wizard/components/ScopeList.js.map +1 -0
  151. package/dist/authz-module/role-assignation-wizard/components/SelectUsersAndRoleStep.d.ts +12 -0
  152. package/dist/authz-module/role-assignation-wizard/components/SelectUsersAndRoleStep.js +34 -0
  153. package/dist/authz-module/role-assignation-wizard/components/SelectUsersAndRoleStep.js.map +1 -0
  154. package/dist/authz-module/role-assignation-wizard/constants.d.ts +5 -0
  155. package/dist/authz-module/role-assignation-wizard/constants.js +6 -0
  156. package/dist/authz-module/role-assignation-wizard/constants.js.map +1 -0
  157. package/dist/authz-module/role-assignation-wizard/hooks/useScopeListData.d.ts +23 -0
  158. package/dist/authz-module/role-assignation-wizard/hooks/useScopeListData.js +112 -0
  159. package/dist/authz-module/role-assignation-wizard/hooks/useScopeListData.js.map +1 -0
  160. package/dist/authz-module/role-assignation-wizard/hooks/useScopePermissions.d.ts +10 -0
  161. package/dist/authz-module/role-assignation-wizard/hooks/useScopePermissions.js +54 -0
  162. package/dist/authz-module/role-assignation-wizard/hooks/useScopePermissions.js.map +1 -0
  163. package/dist/authz-module/role-assignation-wizard/messages.d.ts +243 -0
  164. package/dist/authz-module/role-assignation-wizard/messages.js +258 -0
  165. package/dist/authz-module/role-assignation-wizard/messages.js.map +1 -0
  166. package/dist/authz-module/role-assignation-wizard/utils.d.ts +5 -0
  167. package/dist/authz-module/role-assignation-wizard/utils.js +16 -0
  168. package/dist/authz-module/role-assignation-wizard/utils.js.map +1 -0
  169. package/dist/authz-module/roles-permissions/RolesPermissions.d.ts +2 -0
  170. package/dist/authz-module/roles-permissions/RolesPermissions.js +35 -0
  171. package/dist/authz-module/roles-permissions/RolesPermissions.js.map +1 -0
  172. package/dist/authz-module/roles-permissions/course/constants.d.ts +39 -0
  173. package/dist/authz-module/roles-permissions/course/constants.js +474 -0
  174. package/dist/authz-module/roles-permissions/course/constants.js.map +1 -0
  175. package/dist/authz-module/roles-permissions/index.d.ts +10 -0
  176. package/dist/authz-module/roles-permissions/index.js +15 -0
  177. package/dist/authz-module/roles-permissions/index.js.map +1 -0
  178. package/dist/authz-module/roles-permissions/library/constants.d.ts +18 -0
  179. package/dist/authz-module/roles-permissions/library/constants.js +193 -0
  180. package/dist/authz-module/roles-permissions/library/constants.js.map +1 -0
  181. package/dist/authz-module/roles-permissions/messages.d.ts +63 -0
  182. package/dist/authz-module/roles-permissions/messages.js +65 -0
  183. package/dist/authz-module/roles-permissions/messages.js.map +1 -0
  184. package/dist/authz-module/roles-permissions/utils.d.ts +41 -0
  185. package/dist/authz-module/roles-permissions/utils.js +70 -0
  186. package/dist/authz-module/roles-permissions/utils.js.map +1 -0
  187. package/dist/authz-module/team-members/TeamMembersTable.d.ts +5 -0
  188. package/dist/authz-module/team-members/TeamMembersTable.js +107 -0
  189. package/dist/authz-module/team-members/TeamMembersTable.js.map +1 -0
  190. package/dist/authz-module/team-members/messages.d.ts +33 -0
  191. package/dist/authz-module/team-members/messages.js +35 -0
  192. package/dist/authz-module/team-members/messages.js.map +1 -0
  193. package/dist/authz-module/utils.d.ts +24 -0
  194. package/dist/authz-module/utils.js +45 -0
  195. package/dist/authz-module/utils.js.map +1 -0
  196. package/dist/components/LoadingPage.d.ts +2 -0
  197. package/dist/components/LoadingPage.js +5 -0
  198. package/dist/components/LoadingPage.js.map +1 -0
  199. package/dist/components/ToastManager/ToastManagerContext.d.ts +24 -0
  200. package/dist/components/ToastManager/ToastManagerContext.js +91 -0
  201. package/dist/components/ToastManager/ToastManagerContext.js.map +1 -0
  202. package/dist/constants.d.ts +11 -0
  203. package/dist/constants.js +15 -0
  204. package/dist/constants.js.map +1 -0
  205. package/dist/data/api.d.ts +4 -0
  206. package/dist/data/api.js +21 -0
  207. package/dist/data/api.js.map +1 -0
  208. package/dist/data/hooks.d.ts +38 -0
  209. package/dist/data/hooks.js +69 -0
  210. package/dist/data/hooks.js.map +1 -0
  211. package/dist/data/types.d.ts +38 -0
  212. package/dist/data/types.js +2 -0
  213. package/dist/data/types.js.map +1 -0
  214. package/dist/data/utils.d.ts +6 -0
  215. package/dist/data/utils.js +11 -0
  216. package/dist/data/utils.js.map +1 -0
  217. package/dist/i18n/index.d.ts +1 -0
  218. package/dist/i18n/index.js +2 -0
  219. package/dist/i18n/index.js.map +1 -0
  220. package/dist/index.d.ts +3 -0
  221. package/dist/index.js +4 -0
  222. package/dist/index.js.map +1 -0
  223. package/dist/messages.d.ts +8 -0
  224. package/dist/messages.js +10 -0
  225. package/dist/messages.js.map +1 -0
  226. package/dist/providers.d.ts +3 -0
  227. package/dist/providers.js +4 -0
  228. package/dist/providers.js.map +1 -0
  229. package/dist/routes.d.ts +11 -0
  230. package/dist/routes.js +16 -0
  231. package/dist/routes.js.map +1 -0
  232. package/dist/style.scss +15 -0
  233. package/dist/types.d.ts +93 -0
  234. package/dist/types.js +2 -0
  235. package/dist/types.js.map +1 -0
  236. package/package.json +88 -0
@@ -0,0 +1,35 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useMemo, useState } from 'react';
3
+ import { useIntl } from '@openedx/frontend-base';
4
+ import { Alert, Button, ButtonGroup, Container, Hyperlink, } from '@openedx/paragon';
5
+ import { coursePermissions, courseResourceTypes, courseRolesWithPermissions, } from './course/constants';
6
+ import { libraryRolesWithPermissions, libraryPermissions, libraryResourceTypes, } from './library/constants';
7
+ import AnchorButton from '../components/AnchorButton';
8
+ import PermissionTable from '../components/PermissionTable';
9
+ import { buildPermissionMatrixByResource } from './utils';
10
+ import messages from './messages';
11
+ const RolesPermissions = () => {
12
+ const intl = useIntl();
13
+ const [active, setActive] = useState('courses');
14
+ const libraryPermissionsByResource = useMemo(() => {
15
+ const permissionsByResource = buildPermissionMatrixByResource({
16
+ roles: libraryRolesWithPermissions,
17
+ permissions: libraryPermissions,
18
+ resources: libraryResourceTypes,
19
+ intl,
20
+ });
21
+ return permissionsByResource;
22
+ }, [intl]);
23
+ const coursePermissionsByResource = useMemo(() => {
24
+ const permissionsByResource = buildPermissionMatrixByResource({
25
+ roles: courseRolesWithPermissions,
26
+ permissions: coursePermissions,
27
+ resources: courseResourceTypes,
28
+ intl,
29
+ });
30
+ return permissionsByResource;
31
+ }, [intl]);
32
+ return (_jsxs(Container, { className: "p-5", children: [_jsx(Container, { className: "pb-5", children: _jsxs(ButtonGroup, { size: "lg", className: "mb-2", children: [_jsx(Button, { onClick: () => setActive('courses'), variant: `${active === 'courses' ? 'primary' : 'outline-primary'}`, children: intl.formatMessage(messages['authz.tabs.permissionsRoles.courses.tab']) }), _jsx(Button, { onClick: () => setActive('libraries'), variant: `${active === 'libraries' ? 'primary' : 'outline-primary'}`, children: intl.formatMessage(messages['authz.tabs.permissionsRoles.libraries.tab']) })] }) }), active === 'courses' && (_jsxs("div", { className: "position-relative", children: [_jsx(PermissionTable, { permissionsTable: coursePermissionsByResource, roles: courseRolesWithPermissions, title: intl.formatMessage(messages['authz.tabs.permissionsRoles.courses.tab.title']) }), _jsx(Alert, { variant: "info", className: "mt-5", children: _jsxs("div", { className: "row align-items-center", children: [_jsxs("div", { className: "col col-7", children: [_jsx("p", { className: "text-primary font-weight-bold h4", children: intl.formatMessage(messages['authz.tabs.permissionsRoles.courses.alert.title']) }), _jsxs("span", { children: [_jsx("span", { className: "font-weight-bold", children: intl.formatMessage(messages['authz.tabs.permissionsRoles.courses.alert.note']) }), intl.formatMessage(messages['authz.tabs.permissionsRoles.courses.alert.description'])] })] }), _jsx("div", { className: "col col-5", children: _jsx(Hyperlink, { className: "d-block text-right h5 font-weight-normal", destination: "https://docs.openedx.org/en/latest/educators/references/course_development/course_team_roles.html", target: "_blank", showLaunchIcon: false, isInline: true, children: intl.formatMessage(messages['authz.tabs.permissionsRoles.courses.alert.link']) }) })] }) })] })), active === 'libraries' && (_jsx(PermissionTable, { permissionsTable: libraryPermissionsByResource, roles: libraryRolesWithPermissions, title: intl.formatMessage(messages['authz.tabs.permissionsRoles.libraries.tab.title']) })), _jsx(AnchorButton, {})] }));
33
+ };
34
+ export default RolesPermissions;
35
+ //# sourceMappingURL=RolesPermissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RolesPermissions.js","sourceRoot":"","sources":["../../../src/authz-module/roles-permissions/RolesPermissions.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useMemo, useState } from 'react';\nimport { useIntl } from '@openedx/frontend-base';\nimport {\n Alert,\n Button,\n ButtonGroup,\n Container, Hyperlink,\n} from '@openedx/paragon';\n\nimport {\n coursePermissions,\n courseResourceTypes,\n courseRolesWithPermissions,\n} from './course/constants';\nimport {\n libraryRolesWithPermissions,\n libraryPermissions,\n libraryResourceTypes,\n} from './library/constants';\nimport AnchorButton from '@src/authz-module/components/AnchorButton';\nimport PermissionTable from '@src/authz-module/components/PermissionTable';\n\nimport { buildPermissionMatrixByResource } from './utils';\n\nimport messages from './messages';\n\nconst RolesPermissions = () => {\n const intl = useIntl();\n const [active, setActive] = useState('courses');\n\n const libraryPermissionsByResource = useMemo(() => {\n const permissionsByResource = buildPermissionMatrixByResource({\n roles: libraryRolesWithPermissions,\n permissions: libraryPermissions,\n resources: libraryResourceTypes,\n intl,\n });\n\n return permissionsByResource;\n }, [intl]);\n\n const coursePermissionsByResource = useMemo(() => {\n const permissionsByResource = buildPermissionMatrixByResource({\n roles: courseRolesWithPermissions,\n permissions: coursePermissions,\n resources: courseResourceTypes,\n intl,\n });\n\n return permissionsByResource;\n }, [intl]);\n\n return (\n <Container className=\"p-5\">\n <Container className=\"pb-5\">\n <ButtonGroup size=\"lg\" className=\"mb-2\">\n <Button\n onClick={() => setActive('courses')}\n variant={`${active === 'courses' ? 'primary' : 'outline-primary'}`}\n >\n {intl.formatMessage(messages['authz.tabs.permissionsRoles.courses.tab']) }\n </Button>\n <Button\n onClick={() => setActive('libraries')}\n variant={`${active === 'libraries' ? 'primary' : 'outline-primary'}`}\n >\n {intl.formatMessage(messages['authz.tabs.permissionsRoles.libraries.tab']) }\n </Button>\n </ButtonGroup>\n </Container>\n {/* Courses */}\n { active === 'courses' && (\n <div className=\"position-relative\">\n <PermissionTable\n permissionsTable={coursePermissionsByResource}\n roles={courseRolesWithPermissions}\n title={intl.formatMessage(messages['authz.tabs.permissionsRoles.courses.tab.title'])}\n />\n <Alert\n variant=\"info\"\n className=\"mt-5\"\n >\n <div className=\"row align-items-center\">\n <div className=\"col col-7\">\n <p className=\"text-primary font-weight-bold h4\">{intl.formatMessage(messages['authz.tabs.permissionsRoles.courses.alert.title'])}</p>\n <span>\n <span className=\"font-weight-bold\">{intl.formatMessage(messages['authz.tabs.permissionsRoles.courses.alert.note'])}</span>\n {intl.formatMessage(messages['authz.tabs.permissionsRoles.courses.alert.description'])}\n </span>\n </div>\n <div className=\"col col-5\">\n <Hyperlink className=\"d-block text-right h5 font-weight-normal\" destination=\"https://docs.openedx.org/en/latest/educators/references/course_development/course_team_roles.html\" target=\"_blank\" showLaunchIcon={false} isInline>\n {intl.formatMessage(messages['authz.tabs.permissionsRoles.courses.alert.link'])}\n </Hyperlink>\n </div>\n </div>\n </Alert>\n </div>\n )}\n {/* Libraries */}\n { active === 'libraries' && (\n <PermissionTable\n permissionsTable={libraryPermissionsByResource}\n roles={libraryRolesWithPermissions}\n title={intl.formatMessage(messages['authz.tabs.permissionsRoles.libraries.tab.title'])}\n />\n )}\n <AnchorButton />\n </Container>\n );\n};\n\nexport default RolesPermissions;\n"]}
@@ -0,0 +1,39 @@
1
+ import { PermissionMetadata, ResourceMetadata, Role, RoleMetadata } from '../../../types';
2
+ export declare const CONTENT_COURSE_PERMISSIONS: {
3
+ VIEW_COURSE: string;
4
+ CREATE_COURSE: string;
5
+ EDIT_COURSE_CONTENT: string;
6
+ PUBLISH_COURSE_CONTENT: string;
7
+ VIEW_COURSE_LIBRARY_UPDATES: string;
8
+ MANAGE_COURSE_LIBRARY_UPDATES: string;
9
+ VIEW_COURSE_UPDATES: string;
10
+ MANAGE_COURSE_UPDATES: string;
11
+ VIEW_COURSE_PAGES_RESOURCES: string;
12
+ MANAGE_COURSE_PAGES_RESOURCES: string;
13
+ VIEW_COURSE_FILES: string;
14
+ CREATE_COURSE_FILES: string;
15
+ EDIT_COURSE_FILES: string;
16
+ DELETE_COURSE_FILES: string;
17
+ VIEW_COURSE_SCHEDULE_AND_DETAILS: string;
18
+ EDIT_COURSE_SCHEDULE: string;
19
+ EDIT_COURSE_DETAILS: string;
20
+ VIEW_COURSE_GRADING_SETTINGS: string;
21
+ EDIT_COURSE_GRADING_SETTINGS: string;
22
+ VIEW_COURSE_TEAM: string;
23
+ MANAGE_COURSE_TEAM: string;
24
+ VIEW_GROUP_CONFIGURATION: string;
25
+ MANAGE_COURSE_GROUP_CONFIGURATION: string;
26
+ MANAGE_COURSE_TAGS: string;
27
+ VIEW_COURSE_ADVANCED_SETTINGS: string;
28
+ MANAGE_COURSE_ADVANCED_SETTINGS: string;
29
+ VIEW_COURSE_CERTIFICATES: string;
30
+ MANAGE_COURSE_CERTIFICATES: string;
31
+ IMPORT_COURSE: string;
32
+ EXPORT_COURSE: string;
33
+ EXPORT_COURSE_TAGS: string;
34
+ VIEW_COURSE_CHECKLISTS: string;
35
+ };
36
+ export declare const courseResourceTypes: ResourceMetadata[];
37
+ export declare const coursePermissions: PermissionMetadata[];
38
+ export declare const courseRolesMetadata: RoleMetadata[];
39
+ export declare const courseRolesWithPermissions: Role[];
@@ -0,0 +1,474 @@
1
+ import { LibraryBooks, Article, Group, LocalOffer, BookOpen, Sync, Folder, Calendar, Download, DrawShapes, CheckCircle, RemoveRedEye, Plus, EditOutline, DownloadDone, Settings, Checklist, Delete, Upload, Award, } from '@openedx/paragon/icons';
2
+ export const CONTENT_COURSE_PERMISSIONS = {
3
+ VIEW_COURSE: 'courses.view_course',
4
+ CREATE_COURSE: 'courses.create_course',
5
+ EDIT_COURSE_CONTENT: 'courses.edit_course_content',
6
+ PUBLISH_COURSE_CONTENT: 'courses.publish_course_content',
7
+ VIEW_COURSE_LIBRARY_UPDATES: 'courses.view_library_updates',
8
+ MANAGE_COURSE_LIBRARY_UPDATES: 'courses.manage_library_updates',
9
+ VIEW_COURSE_UPDATES: 'courses.view_course_updates',
10
+ MANAGE_COURSE_UPDATES: 'courses.manage_course_updates',
11
+ VIEW_COURSE_PAGES_RESOURCES: 'courses.view_pages_and_resources',
12
+ MANAGE_COURSE_PAGES_RESOURCES: 'courses.manage_pages_and_resources',
13
+ VIEW_COURSE_FILES: 'courses.view_files',
14
+ CREATE_COURSE_FILES: 'courses.create_files',
15
+ EDIT_COURSE_FILES: 'courses.edit_files',
16
+ DELETE_COURSE_FILES: 'courses.delete_files',
17
+ VIEW_COURSE_SCHEDULE_AND_DETAILS: 'courses.view_schedule_and_details',
18
+ EDIT_COURSE_SCHEDULE: 'courses.edit_schedule',
19
+ EDIT_COURSE_DETAILS: 'courses.edit_details',
20
+ VIEW_COURSE_GRADING_SETTINGS: 'courses.view_grading_settings',
21
+ EDIT_COURSE_GRADING_SETTINGS: 'courses.edit_grading_settings',
22
+ VIEW_COURSE_TEAM: 'courses.view_course_team',
23
+ MANAGE_COURSE_TEAM: 'courses.manage_course_team',
24
+ VIEW_GROUP_CONFIGURATION: 'courses.view_group_configurations',
25
+ MANAGE_COURSE_GROUP_CONFIGURATION: 'courses.manage_group_configurations',
26
+ MANAGE_COURSE_TAGS: 'courses.manage_tags',
27
+ VIEW_COURSE_ADVANCED_SETTINGS: 'courses.view_advanced_settings',
28
+ MANAGE_COURSE_ADVANCED_SETTINGS: 'courses.manage_advanced_settings',
29
+ VIEW_COURSE_CERTIFICATES: 'courses.view_certificates',
30
+ MANAGE_COURSE_CERTIFICATES: 'courses.manage_certificates',
31
+ IMPORT_COURSE: 'courses.import_course',
32
+ EXPORT_COURSE: 'courses.export_course',
33
+ EXPORT_COURSE_TAGS: 'courses.export_tags',
34
+ VIEW_COURSE_CHECKLISTS: 'courses.view_checklists',
35
+ };
36
+ export const courseResourceTypes = [
37
+ {
38
+ key: 'course_access_content',
39
+ label: 'Course access & content',
40
+ description: 'Permissions related to accessing the course and managing core course content, including creating, editing, and publishing materials.',
41
+ icon: BookOpen,
42
+ },
43
+ {
44
+ key: 'course_library_updates',
45
+ label: 'Library updates',
46
+ description: 'Permissions for reviewing and managing updates made to content libraries connected to the course.',
47
+ icon: LibraryBooks,
48
+ },
49
+ {
50
+ key: 'course_updates_handouts',
51
+ label: 'Course updates & handouts',
52
+ description: 'Permissions for viewing and managing course updates and handouts that are visible to learners.',
53
+ icon: Sync,
54
+ },
55
+ {
56
+ key: 'course_pages_resources',
57
+ label: 'Pages & resources',
58
+ description: 'Permissions for viewing and managing course pages and additional learning resources.',
59
+ icon: Article,
60
+ },
61
+ {
62
+ key: 'course_files',
63
+ label: 'Files',
64
+ description: 'Permissions for viewing and managing files and assets uploaded to the course.',
65
+ icon: Folder,
66
+ },
67
+ {
68
+ key: 'course_schedule_details',
69
+ label: 'Schedule & details',
70
+ description: 'Permissions for viewing and editing the course schedule and course information.',
71
+ icon: Calendar,
72
+ },
73
+ {
74
+ key: 'course_grading',
75
+ label: 'Grading',
76
+ description: 'Permissions related to viewing and managing grading configuration and grading policies.',
77
+ icon: Award,
78
+ },
79
+ {
80
+ key: 'course_team_group',
81
+ label: 'Course team & groups',
82
+ description: 'Permissions for viewing and managing the course team, learner groups, and group configurations.',
83
+ icon: Group,
84
+ },
85
+ {
86
+ key: 'course_tags_taxonomies',
87
+ label: 'Tags',
88
+ description: 'Permissions for managing tags used to organize course content.',
89
+ icon: LocalOffer,
90
+ },
91
+ {
92
+ key: 'course_advanced_certificates',
93
+ label: 'Advanced & certificates',
94
+ description: 'Permissions for managing advanced course settings and course certificates.',
95
+ icon: CheckCircle,
96
+ },
97
+ {
98
+ key: 'course_import_export',
99
+ label: 'Import / export',
100
+ description: 'Permissions for importing and exporting course content and related data.',
101
+ icon: Download,
102
+ },
103
+ {
104
+ key: 'course_other',
105
+ label: 'Other',
106
+ description: 'Additional permissions not included in other categories, such as viewing checklists.',
107
+ icon: DrawShapes,
108
+ },
109
+ ];
110
+ export const coursePermissions = [
111
+ {
112
+ key: CONTENT_COURSE_PERMISSIONS.VIEW_COURSE,
113
+ resource: 'course_access_content',
114
+ description: 'See the course in the Studio home and access the course outline in read-only mode. Includes the "View Live" option to preview the course as a learner in the LMS.',
115
+ label: 'View course',
116
+ icon: RemoveRedEye,
117
+ },
118
+ {
119
+ key: CONTENT_COURSE_PERMISSIONS.CREATE_COURSE,
120
+ resource: 'course_access_content',
121
+ description: 'Create a new course in Studio.',
122
+ label: 'Create course',
123
+ icon: Plus,
124
+ },
125
+ {
126
+ key: CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_CONTENT,
127
+ resource: 'course_access_content',
128
+ description: 'Edit the course outline, units, and components.',
129
+ label: 'Edit course content',
130
+ icon: EditOutline,
131
+ },
132
+ {
133
+ key: CONTENT_COURSE_PERMISSIONS.PUBLISH_COURSE_CONTENT,
134
+ resource: 'course_access_content',
135
+ description: 'Make course content visible to learners.',
136
+ label: 'Publish course content',
137
+ icon: DownloadDone,
138
+ },
139
+ {
140
+ key: CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_LIBRARY_UPDATES,
141
+ resource: 'course_library_updates',
142
+ description: 'View pending updates from content libraries linked to this course.',
143
+ label: 'View library updates',
144
+ icon: RemoveRedEye,
145
+ },
146
+ {
147
+ key: CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_LIBRARY_UPDATES,
148
+ resource: 'course_library_updates',
149
+ description: 'Accept or reject pending updates from content libraries linked to this course.',
150
+ label: 'Manage library updates',
151
+ icon: Checklist,
152
+ },
153
+ {
154
+ key: CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_UPDATES,
155
+ resource: 'course_updates_handouts',
156
+ description: 'See course announcements and handouts visible to learners.',
157
+ label: 'View course updates',
158
+ icon: RemoveRedEye,
159
+ },
160
+ {
161
+ key: CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_UPDATES,
162
+ resource: 'course_updates_handouts',
163
+ description: 'Create, edit, and delete course announcements and handouts.',
164
+ label: 'Manage course updates',
165
+ icon: Settings,
166
+ },
167
+ {
168
+ key: CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_PAGES_RESOURCES,
169
+ resource: 'course_pages_resources',
170
+ description: 'See the Pages & Resources section in Studio.',
171
+ label: 'View pages & resources',
172
+ icon: RemoveRedEye,
173
+ },
174
+ {
175
+ key: CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_PAGES_RESOURCES,
176
+ resource: 'course_pages_resources',
177
+ description: 'Enable or disable course features such as Discussions, the Wiki, Notes, Calculator, and Live. Create and edit Textbooks and Custom pages, and manage their configurations.',
178
+ label: 'Manage pages & resources',
179
+ icon: Settings,
180
+ },
181
+ {
182
+ key: CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_FILES,
183
+ resource: 'course_files',
184
+ description: 'See the list of files and assets uploaded to the course.',
185
+ label: 'View files',
186
+ icon: RemoveRedEye,
187
+ },
188
+ {
189
+ key: CONTENT_COURSE_PERMISSIONS.CREATE_COURSE_FILES,
190
+ resource: 'course_files',
191
+ description: 'Upload new files and assets to the course.',
192
+ label: 'Create files',
193
+ icon: Plus,
194
+ },
195
+ {
196
+ key: CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_FILES,
197
+ resource: 'course_files',
198
+ description: 'Perform non-destructive actions on files, such as locking or unlocking them.',
199
+ label: 'Edit files',
200
+ icon: EditOutline,
201
+ },
202
+ {
203
+ key: CONTENT_COURSE_PERMISSIONS.DELETE_COURSE_FILES,
204
+ resource: 'course_files',
205
+ description: 'Permanently remove files and assets from the course.',
206
+ label: 'Delete files',
207
+ icon: Delete,
208
+ },
209
+ {
210
+ key: CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_SCHEDULE_AND_DETAILS,
211
+ resource: 'course_schedule_details',
212
+ description: 'See the course schedule (start and end dates, enrollment dates, and pacing settings) and course details (summary, pacing, and prerequisites).',
213
+ label: 'View schedule & details',
214
+ icon: RemoveRedEye,
215
+ },
216
+ {
217
+ key: CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_SCHEDULE,
218
+ resource: 'course_schedule_details',
219
+ description: 'Update course start and end dates, enrollment dates, and pacing settings.',
220
+ label: 'Edit schedule',
221
+ icon: EditOutline,
222
+ },
223
+ {
224
+ key: CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_DETAILS,
225
+ resource: 'course_schedule_details',
226
+ description: 'Update course information including the course summary, pacing, and prerequisites.',
227
+ label: 'Edit course details',
228
+ icon: EditOutline,
229
+ },
230
+ {
231
+ key: CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_GRADING_SETTINGS,
232
+ resource: 'course_grading',
233
+ description: 'See the grading configuration for the course, including assignment types and grading scale.',
234
+ label: 'View grading settings',
235
+ icon: RemoveRedEye,
236
+ },
237
+ {
238
+ key: CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_GRADING_SETTINGS,
239
+ resource: 'course_grading',
240
+ description: 'Update the grading configuration for the course, including assignment types and grading scale.',
241
+ label: 'Edit grading settings',
242
+ icon: EditOutline,
243
+ },
244
+ {
245
+ key: CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_TEAM,
246
+ resource: 'course_team_group',
247
+ description: 'See the list of users with a role assigned to this course.',
248
+ label: 'View course team',
249
+ icon: RemoveRedEye,
250
+ },
251
+ {
252
+ key: CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_TEAM,
253
+ resource: 'course_team_group',
254
+ description: 'Add, change, or remove role assignments for this course from the Roles and Permissions console.',
255
+ label: 'Manage course team',
256
+ icon: Settings,
257
+ },
258
+ {
259
+ key: CONTENT_COURSE_PERMISSIONS.VIEW_GROUP_CONFIGURATION,
260
+ resource: 'course_team_group',
261
+ description: 'See the list of content groups and their configurations for this course.',
262
+ label: 'View group configurations',
263
+ icon: RemoveRedEye,
264
+ },
265
+ {
266
+ key: CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_GROUP_CONFIGURATION,
267
+ resource: 'course_team_group',
268
+ description: 'Create and manage content groups used to target course content to specific learners.',
269
+ label: 'Manage group configurations',
270
+ icon: Settings,
271
+ },
272
+ {
273
+ key: CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_TAGS,
274
+ resource: 'course_tags_taxonomies',
275
+ description: 'Create, edit, and delete tags on this course.',
276
+ label: 'Manage tags',
277
+ icon: Settings,
278
+ },
279
+ {
280
+ key: CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_ADVANCED_SETTINGS,
281
+ resource: 'course_advanced_certificates',
282
+ description: 'Access the Advanced Settings page in Studio. This covers a wide range of technical course configurations, including proctoring, timed exams, LTI tools, enrollment limits, and custom display options.',
283
+ label: 'View advanced settings',
284
+ icon: RemoveRedEye,
285
+ },
286
+ {
287
+ key: CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_ADVANCED_SETTINGS,
288
+ resource: 'course_advanced_certificates',
289
+ description: 'Edit technical course configurations in the Advanced Settings page in Studio.',
290
+ label: 'Manage advanced settings',
291
+ icon: Settings,
292
+ },
293
+ {
294
+ key: CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_CERTIFICATES,
295
+ resource: 'course_advanced_certificates',
296
+ description: 'See the course certificate settings.',
297
+ label: 'View certificates',
298
+ icon: RemoveRedEye,
299
+ },
300
+ {
301
+ key: CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_CERTIFICATES,
302
+ resource: 'course_advanced_certificates',
303
+ description: 'Create and edit course certificates, including certificate design and eligibility settings.',
304
+ label: 'Manage certificates',
305
+ icon: Settings,
306
+ },
307
+ {
308
+ key: CONTENT_COURSE_PERMISSIONS.IMPORT_COURSE,
309
+ resource: 'course_import_export',
310
+ description: 'Import course content from a file. This is a high-privilege action that can overwrite most course content and settings.',
311
+ label: 'Import course',
312
+ icon: Download,
313
+ },
314
+ {
315
+ key: CONTENT_COURSE_PERMISSIONS.EXPORT_COURSE,
316
+ resource: 'course_import_export',
317
+ description: 'Download the course content as a file for backup or reuse in another platform.',
318
+ label: 'Export course',
319
+ icon: Upload,
320
+ },
321
+ {
322
+ key: CONTENT_COURSE_PERMISSIONS.EXPORT_COURSE_TAGS,
323
+ resource: 'course_import_export',
324
+ description: 'Download the tag data associated with this course.',
325
+ label: 'Export tags',
326
+ icon: Upload,
327
+ },
328
+ {
329
+ key: CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_CHECKLISTS,
330
+ resource: 'course_other',
331
+ description: 'See the course launch checklist in Studio.',
332
+ label: 'View checklists',
333
+ icon: RemoveRedEye,
334
+ },
335
+ ];
336
+ export const courseRolesMetadata = [
337
+ {
338
+ role: 'course_admin',
339
+ name: 'Course Admin',
340
+ description: 'Can manage the course team and all course settings.',
341
+ contextType: 'course',
342
+ },
343
+ {
344
+ role: 'course_staff',
345
+ name: 'Course Staff',
346
+ description: 'Can publish content and manage the course lifecycle in Studio.',
347
+ contextType: 'course',
348
+ },
349
+ {
350
+ role: 'course_editor',
351
+ name: 'Course Editor',
352
+ description: 'Can create and edit course content, but cannot publish or change critical course settings.',
353
+ contextType: 'course',
354
+ disabled: true,
355
+ },
356
+ {
357
+ role: 'course_auditor',
358
+ name: 'Course Auditor',
359
+ description: 'Can view course content and settings, but cannot make changes.',
360
+ contextType: 'course',
361
+ disabled: true,
362
+ },
363
+ ];
364
+ // Permission keys granted to each course role.
365
+ const COURSE_ROLE_PERMISSIONS = {
366
+ course_admin: [
367
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE,
368
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_LIBRARY_UPDATES,
369
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_UPDATES,
370
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_PAGES_RESOURCES,
371
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_FILES,
372
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_GRADING_SETTINGS,
373
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_CHECKLISTS,
374
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_TEAM,
375
+ CONTENT_COURSE_PERMISSIONS.VIEW_GROUP_CONFIGURATION,
376
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_SCHEDULE_AND_DETAILS,
377
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_ADVANCED_SETTINGS,
378
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_CERTIFICATES,
379
+ CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_CONTENT,
380
+ CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_LIBRARY_UPDATES,
381
+ CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_UPDATES,
382
+ CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_PAGES_RESOURCES,
383
+ CONTENT_COURSE_PERMISSIONS.CREATE_COURSE_FILES,
384
+ CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_FILES,
385
+ CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_GRADING_SETTINGS,
386
+ CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_GROUP_CONFIGURATION,
387
+ CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_DETAILS,
388
+ CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_TAGS,
389
+ CONTENT_COURSE_PERMISSIONS.PUBLISH_COURSE_CONTENT,
390
+ CONTENT_COURSE_PERMISSIONS.DELETE_COURSE_FILES,
391
+ CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_SCHEDULE,
392
+ CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_ADVANCED_SETTINGS,
393
+ CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_CERTIFICATES,
394
+ CONTENT_COURSE_PERMISSIONS.IMPORT_COURSE,
395
+ CONTENT_COURSE_PERMISSIONS.EXPORT_COURSE,
396
+ CONTENT_COURSE_PERMISSIONS.EXPORT_COURSE_TAGS,
397
+ CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_TEAM,
398
+ ],
399
+ course_staff: [
400
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE,
401
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_LIBRARY_UPDATES,
402
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_UPDATES,
403
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_PAGES_RESOURCES,
404
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_FILES,
405
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_GRADING_SETTINGS,
406
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_CHECKLISTS,
407
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_TEAM,
408
+ CONTENT_COURSE_PERMISSIONS.VIEW_GROUP_CONFIGURATION,
409
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_SCHEDULE_AND_DETAILS,
410
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_ADVANCED_SETTINGS,
411
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_CERTIFICATES,
412
+ CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_CONTENT,
413
+ CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_LIBRARY_UPDATES,
414
+ CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_UPDATES,
415
+ CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_PAGES_RESOURCES,
416
+ CONTENT_COURSE_PERMISSIONS.CREATE_COURSE_FILES,
417
+ CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_FILES,
418
+ CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_GRADING_SETTINGS,
419
+ CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_GROUP_CONFIGURATION,
420
+ CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_DETAILS,
421
+ CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_TAGS,
422
+ CONTENT_COURSE_PERMISSIONS.PUBLISH_COURSE_CONTENT,
423
+ CONTENT_COURSE_PERMISSIONS.DELETE_COURSE_FILES,
424
+ CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_SCHEDULE,
425
+ CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_ADVANCED_SETTINGS,
426
+ CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_CERTIFICATES,
427
+ CONTENT_COURSE_PERMISSIONS.IMPORT_COURSE,
428
+ CONTENT_COURSE_PERMISSIONS.EXPORT_COURSE,
429
+ CONTENT_COURSE_PERMISSIONS.EXPORT_COURSE_TAGS,
430
+ ],
431
+ course_editor: [
432
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE,
433
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_LIBRARY_UPDATES,
434
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_UPDATES,
435
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_PAGES_RESOURCES,
436
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_FILES,
437
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_GRADING_SETTINGS,
438
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_CHECKLISTS,
439
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_TEAM,
440
+ CONTENT_COURSE_PERMISSIONS.VIEW_GROUP_CONFIGURATION,
441
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_SCHEDULE_AND_DETAILS,
442
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_ADVANCED_SETTINGS,
443
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_CERTIFICATES,
444
+ CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_CONTENT,
445
+ CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_LIBRARY_UPDATES,
446
+ CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_UPDATES,
447
+ CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_PAGES_RESOURCES,
448
+ CONTENT_COURSE_PERMISSIONS.CREATE_COURSE_FILES,
449
+ CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_FILES,
450
+ CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_GRADING_SETTINGS,
451
+ CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_GROUP_CONFIGURATION,
452
+ CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_DETAILS,
453
+ CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_TAGS,
454
+ ],
455
+ course_auditor: [
456
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE,
457
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_LIBRARY_UPDATES,
458
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_UPDATES,
459
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_PAGES_RESOURCES,
460
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_FILES,
461
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_GRADING_SETTINGS,
462
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_CHECKLISTS,
463
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_TEAM,
464
+ CONTENT_COURSE_PERMISSIONS.VIEW_GROUP_CONFIGURATION,
465
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_SCHEDULE_AND_DETAILS,
466
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_ADVANCED_SETTINGS,
467
+ CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_CERTIFICATES,
468
+ ],
469
+ };
470
+ export const courseRolesWithPermissions = courseRolesMetadata.map((meta) => {
471
+ var _a;
472
+ return (Object.assign(Object.assign({}, meta), { scope: '', userCount: 1, permissions: (_a = COURSE_ROLE_PERMISSIONS[meta.role]) !== null && _a !== void 0 ? _a : [] }));
473
+ });
474
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/authz-module/roles-permissions/course/constants.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EACxC,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,WAAW,EACX,YAAY,EACZ,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,MAAM,EACN,MAAM,EACN,KAAK,GACN,MAAM,wBAAwB,CAAC;AAEhC,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,WAAW,EAAE,qBAAqB;IAClC,aAAa,EAAE,uBAAuB;IACtC,mBAAmB,EAAE,6BAA6B;IAClD,sBAAsB,EAAE,gCAAgC;IAExD,2BAA2B,EAAE,8BAA8B;IAC3D,6BAA6B,EAAE,gCAAgC;IAE/D,mBAAmB,EAAE,6BAA6B;IAClD,qBAAqB,EAAE,+BAA+B;IAEtD,2BAA2B,EAAE,kCAAkC;IAC/D,6BAA6B,EAAE,oCAAoC;IAEnE,iBAAiB,EAAE,oBAAoB;IACvC,mBAAmB,EAAE,sBAAsB;IAC3C,iBAAiB,EAAE,oBAAoB;IACvC,mBAAmB,EAAE,sBAAsB;IAE3C,gCAAgC,EAAE,mCAAmC;IACrE,oBAAoB,EAAE,uBAAuB;IAC7C,mBAAmB,EAAE,sBAAsB;IAE3C,4BAA4B,EAAE,+BAA+B;IAC7D,4BAA4B,EAAE,+BAA+B;IAE7D,gBAAgB,EAAE,0BAA0B;IAC5C,kBAAkB,EAAE,4BAA4B;IAChD,wBAAwB,EAAE,mCAAmC;IAC7D,iCAAiC,EAAE,qCAAqC;IAExE,kBAAkB,EAAE,qBAAqB;IAEzC,6BAA6B,EAAE,gCAAgC;IAC/D,+BAA+B,EAAE,kCAAkC;IACnE,wBAAwB,EAAE,2BAA2B;IACrD,0BAA0B,EAAE,6BAA6B;IAEzD,aAAa,EAAE,uBAAuB;IACtC,aAAa,EAAE,uBAAuB;IACtC,kBAAkB,EAAE,qBAAqB;IAEzC,sBAAsB,EAAE,yBAAyB;CAClD,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAuB;IACrD;QACE,GAAG,EAAE,uBAAuB;QAC5B,KAAK,EAAE,yBAAyB;QAChC,WAAW,EAAE,sIAAsI;QACnJ,IAAI,EAAE,QAAQ;KACf;IACD;QACE,GAAG,EAAE,wBAAwB;QAC7B,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,mGAAmG;QAChH,IAAI,EAAE,YAAY;KACnB;IACD;QACE,GAAG,EAAE,yBAAyB;QAC9B,KAAK,EAAE,2BAA2B;QAClC,WAAW,EAAE,gGAAgG;QAC7G,IAAI,EAAE,IAAI;KACX;IACD;QACE,GAAG,EAAE,wBAAwB;QAC7B,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,sFAAsF;QACnG,IAAI,EAAE,OAAO;KACd;IACD;QACE,GAAG,EAAE,cAAc;QACnB,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,+EAA+E;QAC5F,IAAI,EAAE,MAAM;KACb;IACD;QACE,GAAG,EAAE,yBAAyB;QAC9B,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,iFAAiF;QAC9F,IAAI,EAAE,QAAQ;KACf;IACD;QACE,GAAG,EAAE,gBAAgB;QACrB,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,yFAAyF;QACtG,IAAI,EAAE,KAAK;KACZ;IACD;QACE,GAAG,EAAE,mBAAmB;QACxB,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EAAE,iGAAiG;QAC9G,IAAI,EAAE,KAAK;KACZ;IACD;QACE,GAAG,EAAE,wBAAwB;QAC7B,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,gEAAgE;QAC7E,IAAI,EAAE,UAAU;KACjB;IACD;QACE,GAAG,EAAE,8BAA8B;QACnC,KAAK,EAAE,yBAAyB;QAChC,WAAW,EAAE,4EAA4E;QACzF,IAAI,EAAE,WAAW;KAClB;IACD;QACE,GAAG,EAAE,sBAAsB;QAC3B,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,0EAA0E;QACvF,IAAI,EAAE,QAAQ;KACf;IACD;QACE,GAAG,EAAE,cAAc;QACnB,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,sFAAsF;QACnG,IAAI,EAAE,UAAU;KACjB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAyB;IACrD;QACE,GAAG,EAAE,0BAA0B,CAAC,WAAW;QAC3C,QAAQ,EAAE,uBAAuB;QACjC,WAAW,EAAE,mKAAmK;QAChL,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,YAAY;KACnB;IACD;QACE,GAAG,EAAE,0BAA0B,CAAC,aAAa;QAC7C,QAAQ,EAAE,uBAAuB;QACjC,WAAW,EAAE,gCAAgC;QAC7C,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,IAAI;KACX;IACD;QACE,GAAG,EAAE,0BAA0B,CAAC,mBAAmB;QACnD,QAAQ,EAAE,uBAAuB;QACjC,WAAW,EAAE,iDAAiD;QAC9D,KAAK,EAAE,qBAAqB;QAC5B,IAAI,EAAE,WAAW;KAClB;IACD;QACE,GAAG,EAAE,0BAA0B,CAAC,sBAAsB;QACtD,QAAQ,EAAE,uBAAuB;QACjC,WAAW,EAAE,0CAA0C;QACvD,KAAK,EAAE,wBAAwB;QAC/B,IAAI,EAAE,YAAY;KACnB;IACD;QACE,GAAG,EAAE,0BAA0B,CAAC,2BAA2B;QAC3D,QAAQ,EAAE,wBAAwB;QAClC,WAAW,EAAE,oEAAoE;QACjF,KAAK,EAAE,sBAAsB;QAC7B,IAAI,EAAE,YAAY;KACnB;IACD;QACE,GAAG,EAAE,0BAA0B,CAAC,6BAA6B;QAC7D,QAAQ,EAAE,wBAAwB;QAClC,WAAW,EAAE,gFAAgF;QAC7F,KAAK,EAAE,wBAAwB;QAC/B,IAAI,EAAE,SAAS;KAChB;IAED;QACE,GAAG,EAAE,0BAA0B,CAAC,mBAAmB;QACnD,QAAQ,EAAE,yBAAyB;QACnC,WAAW,EAAE,4DAA4D;QACzE,KAAK,EAAE,qBAAqB;QAC5B,IAAI,EAAE,YAAY;KACnB;IACD;QACE,GAAG,EAAE,0BAA0B,CAAC,qBAAqB;QACrD,QAAQ,EAAE,yBAAyB;QACnC,WAAW,EAAE,6DAA6D;QAC1E,KAAK,EAAE,uBAAuB;QAC9B,IAAI,EAAE,QAAQ;KACf;IAED;QACE,GAAG,EAAE,0BAA0B,CAAC,2BAA2B;QAC3D,QAAQ,EAAE,wBAAwB;QAClC,WAAW,EAAE,8CAA8C;QAC3D,KAAK,EAAE,wBAAwB;QAC/B,IAAI,EAAE,YAAY;KACnB;IACD;QACE,GAAG,EAAE,0BAA0B,CAAC,6BAA6B;QAC7D,QAAQ,EAAE,wBAAwB;QAClC,WAAW,EAAE,4KAA4K;QACzL,KAAK,EAAE,0BAA0B;QACjC,IAAI,EAAE,QAAQ;KACf;IAED;QACE,GAAG,EAAE,0BAA0B,CAAC,iBAAiB;QACjD,QAAQ,EAAE,cAAc;QACxB,WAAW,EAAE,0DAA0D;QACvE,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,YAAY;KACnB;IACD;QACE,GAAG,EAAE,0BAA0B,CAAC,mBAAmB;QACnD,QAAQ,EAAE,cAAc;QACxB,WAAW,EAAE,4CAA4C;QACzD,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,IAAI;KACX;IACD;QACE,GAAG,EAAE,0BAA0B,CAAC,iBAAiB;QACjD,QAAQ,EAAE,cAAc;QACxB,WAAW,EAAE,8EAA8E;QAC3F,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,WAAW;KAClB;IACD;QACE,GAAG,EAAE,0BAA0B,CAAC,mBAAmB;QACnD,QAAQ,EAAE,cAAc;QACxB,WAAW,EAAE,sDAAsD;QACnE,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,MAAM;KACb;IAED;QACE,GAAG,EAAE,0BAA0B,CAAC,gCAAgC;QAChE,QAAQ,EAAE,yBAAyB;QACnC,WAAW,EAAE,+IAA+I;QAC5J,KAAK,EAAE,yBAAyB;QAChC,IAAI,EAAE,YAAY;KACnB;IACD;QACE,GAAG,EAAE,0BAA0B,CAAC,oBAAoB;QACpD,QAAQ,EAAE,yBAAyB;QACnC,WAAW,EAAE,2EAA2E;QACxF,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,WAAW;KAClB;IACD;QACE,GAAG,EAAE,0BAA0B,CAAC,mBAAmB;QACnD,QAAQ,EAAE,yBAAyB;QACnC,WAAW,EAAE,oFAAoF;QACjG,KAAK,EAAE,qBAAqB;QAC5B,IAAI,EAAE,WAAW;KAClB;IAED;QACE,GAAG,EAAE,0BAA0B,CAAC,4BAA4B;QAC5D,QAAQ,EAAE,gBAAgB;QAC1B,WAAW,EAAE,6FAA6F;QAC1G,KAAK,EAAE,uBAAuB;QAC9B,IAAI,EAAE,YAAY;KACnB;IACD;QACE,GAAG,EAAE,0BAA0B,CAAC,4BAA4B;QAC5D,QAAQ,EAAE,gBAAgB;QAC1B,WAAW,EAAE,gGAAgG;QAC7G,KAAK,EAAE,uBAAuB;QAC9B,IAAI,EAAE,WAAW;KAClB;IAED;QACE,GAAG,EAAE,0BAA0B,CAAC,gBAAgB;QAChD,QAAQ,EAAE,mBAAmB;QAC7B,WAAW,EAAE,4DAA4D;QACzE,KAAK,EAAE,kBAAkB;QACzB,IAAI,EAAE,YAAY;KACnB;IACD;QACE,GAAG,EAAE,0BAA0B,CAAC,kBAAkB;QAClD,QAAQ,EAAE,mBAAmB;QAC7B,WAAW,EAAE,iGAAiG;QAC9G,KAAK,EAAE,oBAAoB;QAC3B,IAAI,EAAE,QAAQ;KACf;IACD;QACE,GAAG,EAAE,0BAA0B,CAAC,wBAAwB;QACxD,QAAQ,EAAE,mBAAmB;QAC7B,WAAW,EAAE,0EAA0E;QACvF,KAAK,EAAE,2BAA2B;QAClC,IAAI,EAAE,YAAY;KACnB;IACD;QACE,GAAG,EAAE,0BAA0B,CAAC,iCAAiC;QACjE,QAAQ,EAAE,mBAAmB;QAC7B,WAAW,EAAE,sFAAsF;QACnG,KAAK,EAAE,6BAA6B;QACpC,IAAI,EAAE,QAAQ;KACf;IAED;QACE,GAAG,EAAE,0BAA0B,CAAC,kBAAkB;QAClD,QAAQ,EAAE,wBAAwB;QAClC,WAAW,EAAE,+CAA+C;QAC5D,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,QAAQ;KACf;IACD;QACE,GAAG,EAAE,0BAA0B,CAAC,6BAA6B;QAC7D,QAAQ,EAAE,8BAA8B;QACxC,WAAW,EAAE,wMAAwM;QACrN,KAAK,EAAE,wBAAwB;QAC/B,IAAI,EAAE,YAAY;KACnB;IACD;QACE,GAAG,EAAE,0BAA0B,CAAC,+BAA+B;QAC/D,QAAQ,EAAE,8BAA8B;QACxC,WAAW,EAAE,+EAA+E;QAC5F,KAAK,EAAE,0BAA0B;QACjC,IAAI,EAAE,QAAQ;KACf;IACD;QACE,GAAG,EAAE,0BAA0B,CAAC,wBAAwB;QACxD,QAAQ,EAAE,8BAA8B;QACxC,WAAW,EAAE,sCAAsC;QACnD,KAAK,EAAE,mBAAmB;QAC1B,IAAI,EAAE,YAAY;KACnB;IACD;QACE,GAAG,EAAE,0BAA0B,CAAC,0BAA0B;QAC1D,QAAQ,EAAE,8BAA8B;QACxC,WAAW,EAAE,6FAA6F;QAC1G,KAAK,EAAE,qBAAqB;QAC5B,IAAI,EAAE,QAAQ;KACf;IAED;QACE,GAAG,EAAE,0BAA0B,CAAC,aAAa;QAC7C,QAAQ,EAAE,sBAAsB;QAChC,WAAW,EAAE,yHAAyH;QACtI,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,QAAQ;KACf;IACD;QACE,GAAG,EAAE,0BAA0B,CAAC,aAAa;QAC7C,QAAQ,EAAE,sBAAsB;QAChC,WAAW,EAAE,gFAAgF;QAC7F,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,MAAM;KACb;IACD;QACE,GAAG,EAAE,0BAA0B,CAAC,kBAAkB;QAClD,QAAQ,EAAE,sBAAsB;QAChC,WAAW,EAAE,oDAAoD;QACjE,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,MAAM;KACb;IAED;QACE,GAAG,EAAE,0BAA0B,CAAC,sBAAsB;QACtD,QAAQ,EAAE,cAAc;QACxB,WAAW,EAAE,4CAA4C;QACzD,KAAK,EAAE,iBAAiB;QACxB,IAAI,EAAE,YAAY;KACnB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAmB;IACjD;QACE,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,qDAAqD;QAClE,WAAW,EAAE,QAAQ;KACtB;IACD;QACE,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,gEAAgE;QAC7E,WAAW,EAAE,QAAQ;KACtB;IACD;QACE,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,4FAA4F;QACzG,WAAW,EAAE,QAAQ;QACrB,QAAQ,EAAE,IAAI;KACf;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,gEAAgE;QAC7E,WAAW,EAAE,QAAQ;QACrB,QAAQ,EAAE,IAAI;KACf;CACF,CAAC;AAEF,+CAA+C;AAC/C,MAAM,uBAAuB,GAA6B;IACxD,YAAY,EAAE;QACZ,0BAA0B,CAAC,WAAW;QACtC,0BAA0B,CAAC,2BAA2B;QACtD,0BAA0B,CAAC,mBAAmB;QAC9C,0BAA0B,CAAC,2BAA2B;QACtD,0BAA0B,CAAC,iBAAiB;QAC5C,0BAA0B,CAAC,4BAA4B;QACvD,0BAA0B,CAAC,sBAAsB;QACjD,0BAA0B,CAAC,gBAAgB;QAC3C,0BAA0B,CAAC,wBAAwB;QACnD,0BAA0B,CAAC,gCAAgC;QAC3D,0BAA0B,CAAC,6BAA6B;QACxD,0BAA0B,CAAC,wBAAwB;QACnD,0BAA0B,CAAC,mBAAmB;QAC9C,0BAA0B,CAAC,6BAA6B;QACxD,0BAA0B,CAAC,qBAAqB;QAChD,0BAA0B,CAAC,6BAA6B;QACxD,0BAA0B,CAAC,mBAAmB;QAC9C,0BAA0B,CAAC,iBAAiB;QAC5C,0BAA0B,CAAC,4BAA4B;QACvD,0BAA0B,CAAC,iCAAiC;QAC5D,0BAA0B,CAAC,mBAAmB;QAC9C,0BAA0B,CAAC,kBAAkB;QAC7C,0BAA0B,CAAC,sBAAsB;QACjD,0BAA0B,CAAC,mBAAmB;QAC9C,0BAA0B,CAAC,oBAAoB;QAC/C,0BAA0B,CAAC,+BAA+B;QAC1D,0BAA0B,CAAC,0BAA0B;QACrD,0BAA0B,CAAC,aAAa;QACxC,0BAA0B,CAAC,aAAa;QACxC,0BAA0B,CAAC,kBAAkB;QAC7C,0BAA0B,CAAC,kBAAkB;KAC9C;IACD,YAAY,EAAE;QACZ,0BAA0B,CAAC,WAAW;QACtC,0BAA0B,CAAC,2BAA2B;QACtD,0BAA0B,CAAC,mBAAmB;QAC9C,0BAA0B,CAAC,2BAA2B;QACtD,0BAA0B,CAAC,iBAAiB;QAC5C,0BAA0B,CAAC,4BAA4B;QACvD,0BAA0B,CAAC,sBAAsB;QACjD,0BAA0B,CAAC,gBAAgB;QAC3C,0BAA0B,CAAC,wBAAwB;QACnD,0BAA0B,CAAC,gCAAgC;QAC3D,0BAA0B,CAAC,6BAA6B;QACxD,0BAA0B,CAAC,wBAAwB;QACnD,0BAA0B,CAAC,mBAAmB;QAC9C,0BAA0B,CAAC,6BAA6B;QACxD,0BAA0B,CAAC,qBAAqB;QAChD,0BAA0B,CAAC,6BAA6B;QACxD,0BAA0B,CAAC,mBAAmB;QAC9C,0BAA0B,CAAC,iBAAiB;QAC5C,0BAA0B,CAAC,4BAA4B;QACvD,0BAA0B,CAAC,iCAAiC;QAC5D,0BAA0B,CAAC,mBAAmB;QAC9C,0BAA0B,CAAC,kBAAkB;QAC7C,0BAA0B,CAAC,sBAAsB;QACjD,0BAA0B,CAAC,mBAAmB;QAC9C,0BAA0B,CAAC,oBAAoB;QAC/C,0BAA0B,CAAC,+BAA+B;QAC1D,0BAA0B,CAAC,0BAA0B;QACrD,0BAA0B,CAAC,aAAa;QACxC,0BAA0B,CAAC,aAAa;QACxC,0BAA0B,CAAC,kBAAkB;KAC9C;IACD,aAAa,EAAE;QACb,0BAA0B,CAAC,WAAW;QACtC,0BAA0B,CAAC,2BAA2B;QACtD,0BAA0B,CAAC,mBAAmB;QAC9C,0BAA0B,CAAC,2BAA2B;QACtD,0BAA0B,CAAC,iBAAiB;QAC5C,0BAA0B,CAAC,4BAA4B;QACvD,0BAA0B,CAAC,sBAAsB;QACjD,0BAA0B,CAAC,gBAAgB;QAC3C,0BAA0B,CAAC,wBAAwB;QACnD,0BAA0B,CAAC,gCAAgC;QAC3D,0BAA0B,CAAC,6BAA6B;QACxD,0BAA0B,CAAC,wBAAwB;QACnD,0BAA0B,CAAC,mBAAmB;QAC9C,0BAA0B,CAAC,6BAA6B;QACxD,0BAA0B,CAAC,qBAAqB;QAChD,0BAA0B,CAAC,6BAA6B;QACxD,0BAA0B,CAAC,mBAAmB;QAC9C,0BAA0B,CAAC,iBAAiB;QAC5C,0BAA0B,CAAC,4BAA4B;QACvD,0BAA0B,CAAC,iCAAiC;QAC5D,0BAA0B,CAAC,mBAAmB;QAC9C,0BAA0B,CAAC,kBAAkB;KAC9C;IACD,cAAc,EAAE;QACd,0BAA0B,CAAC,WAAW;QACtC,0BAA0B,CAAC,2BAA2B;QACtD,0BAA0B,CAAC,mBAAmB;QAC9C,0BAA0B,CAAC,2BAA2B;QACtD,0BAA0B,CAAC,iBAAiB;QAC5C,0BAA0B,CAAC,4BAA4B;QACvD,0BAA0B,CAAC,sBAAsB;QACjD,0BAA0B,CAAC,gBAAgB;QAC3C,0BAA0B,CAAC,wBAAwB;QACnD,0BAA0B,CAAC,gCAAgC;QAC3D,0BAA0B,CAAC,6BAA6B;QACxD,0BAA0B,CAAC,wBAAwB;KACpD;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAW,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;;IAAC,OAAA,iCAC/E,IAAI,KACP,KAAK,EAAE,EAAE,EACT,SAAS,EAAE,CAAC,EACZ,WAAW,EAAE,MAAA,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,mCAAI,EAAE,IACrD,CAAA;CAAA,CAAC,CAAC","sourcesContent":["import {\n PermissionMetadata, ResourceMetadata, Role, RoleMetadata,\n} from '@src/types';\nimport {\n LibraryBooks, Article, Group, LocalOffer,\n BookOpen,\n Sync,\n Folder,\n Calendar,\n Download,\n DrawShapes,\n CheckCircle,\n RemoveRedEye,\n Plus,\n EditOutline,\n DownloadDone,\n Settings,\n Checklist,\n Delete,\n Upload,\n Award,\n} from '@openedx/paragon/icons';\n\nexport const CONTENT_COURSE_PERMISSIONS = {\n VIEW_COURSE: 'courses.view_course',\n CREATE_COURSE: 'courses.create_course',\n EDIT_COURSE_CONTENT: 'courses.edit_course_content',\n PUBLISH_COURSE_CONTENT: 'courses.publish_course_content',\n\n VIEW_COURSE_LIBRARY_UPDATES: 'courses.view_library_updates',\n MANAGE_COURSE_LIBRARY_UPDATES: 'courses.manage_library_updates',\n\n VIEW_COURSE_UPDATES: 'courses.view_course_updates',\n MANAGE_COURSE_UPDATES: 'courses.manage_course_updates',\n\n VIEW_COURSE_PAGES_RESOURCES: 'courses.view_pages_and_resources',\n MANAGE_COURSE_PAGES_RESOURCES: 'courses.manage_pages_and_resources',\n\n VIEW_COURSE_FILES: 'courses.view_files',\n CREATE_COURSE_FILES: 'courses.create_files',\n EDIT_COURSE_FILES: 'courses.edit_files',\n DELETE_COURSE_FILES: 'courses.delete_files',\n\n VIEW_COURSE_SCHEDULE_AND_DETAILS: 'courses.view_schedule_and_details',\n EDIT_COURSE_SCHEDULE: 'courses.edit_schedule',\n EDIT_COURSE_DETAILS: 'courses.edit_details',\n\n VIEW_COURSE_GRADING_SETTINGS: 'courses.view_grading_settings',\n EDIT_COURSE_GRADING_SETTINGS: 'courses.edit_grading_settings',\n\n VIEW_COURSE_TEAM: 'courses.view_course_team',\n MANAGE_COURSE_TEAM: 'courses.manage_course_team',\n VIEW_GROUP_CONFIGURATION: 'courses.view_group_configurations',\n MANAGE_COURSE_GROUP_CONFIGURATION: 'courses.manage_group_configurations',\n\n MANAGE_COURSE_TAGS: 'courses.manage_tags',\n\n VIEW_COURSE_ADVANCED_SETTINGS: 'courses.view_advanced_settings',\n MANAGE_COURSE_ADVANCED_SETTINGS: 'courses.manage_advanced_settings',\n VIEW_COURSE_CERTIFICATES: 'courses.view_certificates',\n MANAGE_COURSE_CERTIFICATES: 'courses.manage_certificates',\n\n IMPORT_COURSE: 'courses.import_course',\n EXPORT_COURSE: 'courses.export_course',\n EXPORT_COURSE_TAGS: 'courses.export_tags',\n\n VIEW_COURSE_CHECKLISTS: 'courses.view_checklists',\n};\n\nexport const courseResourceTypes: ResourceMetadata[] = [\n {\n key: 'course_access_content',\n label: 'Course access & content',\n description: 'Permissions related to accessing the course and managing core course content, including creating, editing, and publishing materials.',\n icon: BookOpen,\n },\n {\n key: 'course_library_updates',\n label: 'Library updates',\n description: 'Permissions for reviewing and managing updates made to content libraries connected to the course.',\n icon: LibraryBooks,\n },\n {\n key: 'course_updates_handouts',\n label: 'Course updates & handouts',\n description: 'Permissions for viewing and managing course updates and handouts that are visible to learners.',\n icon: Sync,\n },\n {\n key: 'course_pages_resources',\n label: 'Pages & resources',\n description: 'Permissions for viewing and managing course pages and additional learning resources.',\n icon: Article,\n },\n {\n key: 'course_files',\n label: 'Files',\n description: 'Permissions for viewing and managing files and assets uploaded to the course.',\n icon: Folder,\n },\n {\n key: 'course_schedule_details',\n label: 'Schedule & details',\n description: 'Permissions for viewing and editing the course schedule and course information.',\n icon: Calendar,\n },\n {\n key: 'course_grading',\n label: 'Grading',\n description: 'Permissions related to viewing and managing grading configuration and grading policies.',\n icon: Award,\n },\n {\n key: 'course_team_group',\n label: 'Course team & groups',\n description: 'Permissions for viewing and managing the course team, learner groups, and group configurations.',\n icon: Group,\n },\n {\n key: 'course_tags_taxonomies',\n label: 'Tags',\n description: 'Permissions for managing tags used to organize course content.',\n icon: LocalOffer,\n },\n {\n key: 'course_advanced_certificates',\n label: 'Advanced & certificates',\n description: 'Permissions for managing advanced course settings and course certificates.',\n icon: CheckCircle,\n },\n {\n key: 'course_import_export',\n label: 'Import / export',\n description: 'Permissions for importing and exporting course content and related data.',\n icon: Download,\n },\n {\n key: 'course_other',\n label: 'Other',\n description: 'Additional permissions not included in other categories, such as viewing checklists.',\n icon: DrawShapes,\n },\n];\n\nexport const coursePermissions: PermissionMetadata[] = [\n {\n key: CONTENT_COURSE_PERMISSIONS.VIEW_COURSE,\n resource: 'course_access_content',\n description: 'See the course in the Studio home and access the course outline in read-only mode. Includes the \"View Live\" option to preview the course as a learner in the LMS.',\n label: 'View course',\n icon: RemoveRedEye,\n },\n {\n key: CONTENT_COURSE_PERMISSIONS.CREATE_COURSE,\n resource: 'course_access_content',\n description: 'Create a new course in Studio.',\n label: 'Create course',\n icon: Plus,\n },\n {\n key: CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_CONTENT,\n resource: 'course_access_content',\n description: 'Edit the course outline, units, and components.',\n label: 'Edit course content',\n icon: EditOutline,\n },\n {\n key: CONTENT_COURSE_PERMISSIONS.PUBLISH_COURSE_CONTENT,\n resource: 'course_access_content',\n description: 'Make course content visible to learners.',\n label: 'Publish course content',\n icon: DownloadDone,\n },\n {\n key: CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_LIBRARY_UPDATES,\n resource: 'course_library_updates',\n description: 'View pending updates from content libraries linked to this course.',\n label: 'View library updates',\n icon: RemoveRedEye,\n },\n {\n key: CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_LIBRARY_UPDATES,\n resource: 'course_library_updates',\n description: 'Accept or reject pending updates from content libraries linked to this course.',\n label: 'Manage library updates',\n icon: Checklist,\n },\n\n {\n key: CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_UPDATES,\n resource: 'course_updates_handouts',\n description: 'See course announcements and handouts visible to learners.',\n label: 'View course updates',\n icon: RemoveRedEye,\n },\n {\n key: CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_UPDATES,\n resource: 'course_updates_handouts',\n description: 'Create, edit, and delete course announcements and handouts.',\n label: 'Manage course updates',\n icon: Settings,\n },\n\n {\n key: CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_PAGES_RESOURCES,\n resource: 'course_pages_resources',\n description: 'See the Pages & Resources section in Studio.',\n label: 'View pages & resources',\n icon: RemoveRedEye,\n },\n {\n key: CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_PAGES_RESOURCES,\n resource: 'course_pages_resources',\n description: 'Enable or disable course features such as Discussions, the Wiki, Notes, Calculator, and Live. Create and edit Textbooks and Custom pages, and manage their configurations.',\n label: 'Manage pages & resources',\n icon: Settings,\n },\n\n {\n key: CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_FILES,\n resource: 'course_files',\n description: 'See the list of files and assets uploaded to the course.',\n label: 'View files',\n icon: RemoveRedEye,\n },\n {\n key: CONTENT_COURSE_PERMISSIONS.CREATE_COURSE_FILES,\n resource: 'course_files',\n description: 'Upload new files and assets to the course.',\n label: 'Create files',\n icon: Plus,\n },\n {\n key: CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_FILES,\n resource: 'course_files',\n description: 'Perform non-destructive actions on files, such as locking or unlocking them.',\n label: 'Edit files',\n icon: EditOutline,\n },\n {\n key: CONTENT_COURSE_PERMISSIONS.DELETE_COURSE_FILES,\n resource: 'course_files',\n description: 'Permanently remove files and assets from the course.',\n label: 'Delete files',\n icon: Delete,\n },\n\n {\n key: CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_SCHEDULE_AND_DETAILS,\n resource: 'course_schedule_details',\n description: 'See the course schedule (start and end dates, enrollment dates, and pacing settings) and course details (summary, pacing, and prerequisites).',\n label: 'View schedule & details',\n icon: RemoveRedEye,\n },\n {\n key: CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_SCHEDULE,\n resource: 'course_schedule_details',\n description: 'Update course start and end dates, enrollment dates, and pacing settings.',\n label: 'Edit schedule',\n icon: EditOutline,\n },\n {\n key: CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_DETAILS,\n resource: 'course_schedule_details',\n description: 'Update course information including the course summary, pacing, and prerequisites.',\n label: 'Edit course details',\n icon: EditOutline,\n },\n\n {\n key: CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_GRADING_SETTINGS,\n resource: 'course_grading',\n description: 'See the grading configuration for the course, including assignment types and grading scale.',\n label: 'View grading settings',\n icon: RemoveRedEye,\n },\n {\n key: CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_GRADING_SETTINGS,\n resource: 'course_grading',\n description: 'Update the grading configuration for the course, including assignment types and grading scale.',\n label: 'Edit grading settings',\n icon: EditOutline,\n },\n\n {\n key: CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_TEAM,\n resource: 'course_team_group',\n description: 'See the list of users with a role assigned to this course.',\n label: 'View course team',\n icon: RemoveRedEye,\n },\n {\n key: CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_TEAM,\n resource: 'course_team_group',\n description: 'Add, change, or remove role assignments for this course from the Roles and Permissions console.',\n label: 'Manage course team',\n icon: Settings,\n },\n {\n key: CONTENT_COURSE_PERMISSIONS.VIEW_GROUP_CONFIGURATION,\n resource: 'course_team_group',\n description: 'See the list of content groups and their configurations for this course.',\n label: 'View group configurations',\n icon: RemoveRedEye,\n },\n {\n key: CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_GROUP_CONFIGURATION,\n resource: 'course_team_group',\n description: 'Create and manage content groups used to target course content to specific learners.',\n label: 'Manage group configurations',\n icon: Settings,\n },\n\n {\n key: CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_TAGS,\n resource: 'course_tags_taxonomies',\n description: 'Create, edit, and delete tags on this course.',\n label: 'Manage tags',\n icon: Settings,\n },\n {\n key: CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_ADVANCED_SETTINGS,\n resource: 'course_advanced_certificates',\n description: 'Access the Advanced Settings page in Studio. This covers a wide range of technical course configurations, including proctoring, timed exams, LTI tools, enrollment limits, and custom display options.',\n label: 'View advanced settings',\n icon: RemoveRedEye,\n },\n {\n key: CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_ADVANCED_SETTINGS,\n resource: 'course_advanced_certificates',\n description: 'Edit technical course configurations in the Advanced Settings page in Studio.',\n label: 'Manage advanced settings',\n icon: Settings,\n },\n {\n key: CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_CERTIFICATES,\n resource: 'course_advanced_certificates',\n description: 'See the course certificate settings.',\n label: 'View certificates',\n icon: RemoveRedEye,\n },\n {\n key: CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_CERTIFICATES,\n resource: 'course_advanced_certificates',\n description: 'Create and edit course certificates, including certificate design and eligibility settings.',\n label: 'Manage certificates',\n icon: Settings,\n },\n\n {\n key: CONTENT_COURSE_PERMISSIONS.IMPORT_COURSE,\n resource: 'course_import_export',\n description: 'Import course content from a file. This is a high-privilege action that can overwrite most course content and settings.',\n label: 'Import course',\n icon: Download,\n },\n {\n key: CONTENT_COURSE_PERMISSIONS.EXPORT_COURSE,\n resource: 'course_import_export',\n description: 'Download the course content as a file for backup or reuse in another platform.',\n label: 'Export course',\n icon: Upload,\n },\n {\n key: CONTENT_COURSE_PERMISSIONS.EXPORT_COURSE_TAGS,\n resource: 'course_import_export',\n description: 'Download the tag data associated with this course.',\n label: 'Export tags',\n icon: Upload,\n },\n\n {\n key: CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_CHECKLISTS,\n resource: 'course_other',\n description: 'See the course launch checklist in Studio.',\n label: 'View checklists',\n icon: RemoveRedEye,\n },\n];\n\nexport const courseRolesMetadata: RoleMetadata[] = [\n {\n role: 'course_admin',\n name: 'Course Admin',\n description: 'Can manage the course team and all course settings.',\n contextType: 'course',\n },\n {\n role: 'course_staff',\n name: 'Course Staff',\n description: 'Can publish content and manage the course lifecycle in Studio.',\n contextType: 'course',\n },\n {\n role: 'course_editor',\n name: 'Course Editor',\n description: 'Can create and edit course content, but cannot publish or change critical course settings.',\n contextType: 'course',\n disabled: true,\n },\n {\n role: 'course_auditor',\n name: 'Course Auditor',\n description: 'Can view course content and settings, but cannot make changes.',\n contextType: 'course',\n disabled: true,\n },\n];\n\n// Permission keys granted to each course role.\nconst COURSE_ROLE_PERMISSIONS: Record<string, string[]> = {\n course_admin: [\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_LIBRARY_UPDATES,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_UPDATES,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_PAGES_RESOURCES,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_FILES,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_GRADING_SETTINGS,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_CHECKLISTS,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_TEAM,\n CONTENT_COURSE_PERMISSIONS.VIEW_GROUP_CONFIGURATION,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_SCHEDULE_AND_DETAILS,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_ADVANCED_SETTINGS,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_CERTIFICATES,\n CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_CONTENT,\n CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_LIBRARY_UPDATES,\n CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_UPDATES,\n CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_PAGES_RESOURCES,\n CONTENT_COURSE_PERMISSIONS.CREATE_COURSE_FILES,\n CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_FILES,\n CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_GRADING_SETTINGS,\n CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_GROUP_CONFIGURATION,\n CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_DETAILS,\n CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_TAGS,\n CONTENT_COURSE_PERMISSIONS.PUBLISH_COURSE_CONTENT,\n CONTENT_COURSE_PERMISSIONS.DELETE_COURSE_FILES,\n CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_SCHEDULE,\n CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_ADVANCED_SETTINGS,\n CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_CERTIFICATES,\n CONTENT_COURSE_PERMISSIONS.IMPORT_COURSE,\n CONTENT_COURSE_PERMISSIONS.EXPORT_COURSE,\n CONTENT_COURSE_PERMISSIONS.EXPORT_COURSE_TAGS,\n CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_TEAM,\n ],\n course_staff: [\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_LIBRARY_UPDATES,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_UPDATES,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_PAGES_RESOURCES,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_FILES,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_GRADING_SETTINGS,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_CHECKLISTS,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_TEAM,\n CONTENT_COURSE_PERMISSIONS.VIEW_GROUP_CONFIGURATION,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_SCHEDULE_AND_DETAILS,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_ADVANCED_SETTINGS,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_CERTIFICATES,\n CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_CONTENT,\n CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_LIBRARY_UPDATES,\n CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_UPDATES,\n CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_PAGES_RESOURCES,\n CONTENT_COURSE_PERMISSIONS.CREATE_COURSE_FILES,\n CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_FILES,\n CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_GRADING_SETTINGS,\n CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_GROUP_CONFIGURATION,\n CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_DETAILS,\n CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_TAGS,\n CONTENT_COURSE_PERMISSIONS.PUBLISH_COURSE_CONTENT,\n CONTENT_COURSE_PERMISSIONS.DELETE_COURSE_FILES,\n CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_SCHEDULE,\n CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_ADVANCED_SETTINGS,\n CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_CERTIFICATES,\n CONTENT_COURSE_PERMISSIONS.IMPORT_COURSE,\n CONTENT_COURSE_PERMISSIONS.EXPORT_COURSE,\n CONTENT_COURSE_PERMISSIONS.EXPORT_COURSE_TAGS,\n ],\n course_editor: [\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_LIBRARY_UPDATES,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_UPDATES,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_PAGES_RESOURCES,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_FILES,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_GRADING_SETTINGS,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_CHECKLISTS,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_TEAM,\n CONTENT_COURSE_PERMISSIONS.VIEW_GROUP_CONFIGURATION,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_SCHEDULE_AND_DETAILS,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_ADVANCED_SETTINGS,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_CERTIFICATES,\n CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_CONTENT,\n CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_LIBRARY_UPDATES,\n CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_UPDATES,\n CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_PAGES_RESOURCES,\n CONTENT_COURSE_PERMISSIONS.CREATE_COURSE_FILES,\n CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_FILES,\n CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_GRADING_SETTINGS,\n CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_GROUP_CONFIGURATION,\n CONTENT_COURSE_PERMISSIONS.EDIT_COURSE_DETAILS,\n CONTENT_COURSE_PERMISSIONS.MANAGE_COURSE_TAGS,\n ],\n course_auditor: [\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_LIBRARY_UPDATES,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_UPDATES,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_PAGES_RESOURCES,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_FILES,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_GRADING_SETTINGS,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_CHECKLISTS,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_TEAM,\n CONTENT_COURSE_PERMISSIONS.VIEW_GROUP_CONFIGURATION,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_SCHEDULE_AND_DETAILS,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_ADVANCED_SETTINGS,\n CONTENT_COURSE_PERMISSIONS.VIEW_COURSE_CERTIFICATES,\n ],\n};\n\nexport const courseRolesWithPermissions: Role[] = courseRolesMetadata.map((meta) => ({\n ...meta,\n scope: '',\n userCount: 1,\n permissions: COURSE_ROLE_PERMISSIONS[meta.role] ?? [],\n}));\n"]}
@@ -0,0 +1,10 @@
1
+ export { CONTENT_LIBRARY_PERMISSIONS, libraryResourceTypes, libraryPermissions, libraryRolesMetadata, libraryRolesWithPermissions, } from './library/constants';
2
+ export declare const LIBRARY_ROLE_KEYS: string;
3
+ export { CONTENT_COURSE_PERMISSIONS, courseResourceTypes, coursePermissions, courseRolesWithPermissions, courseRolesMetadata, } from './course/constants';
4
+ export declare const MANAGE_TEAM_PERMISSIONS: {
5
+ action: string;
6
+ }[];
7
+ export declare const VIEW_TEAM_PERMISSIONS: {
8
+ action: string;
9
+ }[];
10
+ export { buildPermissionMatrixByResource, getPermissionMetadata } from './utils';