diff options
| author | Ron Lucke <lucke@elan-ev.de> | 2023-12-14 10:13:46 +0100 |
|---|---|---|
| committer | Ron Lucke <lucke@elan-ev.de> | 2024-07-05 14:06:48 +0000 |
| commit | 8f8a28dcb03d859d409b31932aa084517124f408 (patch) | |
| tree | ee8c7a8df9e7d8504025fa6d4990b3dfbf91ec90 /resources/vue/store/courseware/courseware.module.js | |
| parent | 6dc273174983e648d602d4ad49d5667550bded9c (diff) | |
fix #889biest-889
Diffstat (limited to 'resources/vue/store/courseware/courseware.module.js')
| -rw-r--r-- | resources/vue/store/courseware/courseware.module.js | 75 |
1 files changed, 17 insertions, 58 deletions
diff --git a/resources/vue/store/courseware/courseware.module.js b/resources/vue/store/courseware/courseware.module.js index 784b750..237f12f 100644 --- a/resources/vue/store/courseware/courseware.module.js +++ b/resources/vue/store/courseware/courseware.module.js @@ -22,8 +22,8 @@ const getDefaultState = () => { userId: null, viewMode: 'read', dashboardViewMode: 'default', + coursePerms: null, userIsTeacher: false, - teacherStatusLoaded: false, showStructuralElementEditDialog: false, showStructuralElementAddDialog: false, @@ -184,8 +184,8 @@ const getters = { userIsTeacher(state) { return state.userIsTeacher; }, - teacherStatusLoaded(state) { - return state.teacherStatusLoaded; + coursePerms(state) { + return state.coursePerms; }, pluginManager(state) { return state.pluginManager; @@ -1290,63 +1290,19 @@ export const actions = { ); }, - async loadTeacherStatus({ dispatch, rootGetters, state, commit, getters }, userId) { - const user = rootGetters['users/byId']({ id: userId }); - - if (user.attributes.permission === 'root') { - commit('setUserIsTeacher', true); - return; - } - if (user.attributes.permission === 'admin') { - await dispatch('courses/loadById', { id: state.context.id }); - const course = rootGetters['courses/byId']({id: state.context.id }); - const instituteId = course.relationships.institute.data.id; - - const parent = { type: 'users', id: `${userId}` }; - const relationship = 'institute-memberships'; - const options = {}; - await dispatch('institute-memberships/loadRelated', { parent, relationship, options }, { root: true }); - const instituteMemberships = rootGetters['institute-memberships/all']; - const instituteMembership = instituteMemberships.filter(membership => membership.relationships.institute.data.id === instituteId); - - if (instituteMembership.length > 0 && instituteMembership[0].attributes.permission === 'admin') { - commit('setUserIsTeacher', true); - return; - } - } - - const membershipId = `${state.context.id}_${userId}`; - try { - await dispatch('course-memberships/loadById', { id: membershipId }); - } catch (error) { - console.error(`Could not find course membership for ${membershipId}.`); - commit('setUserIsTeacher', false); - - return false; - } - const membership = rootGetters['course-memberships/byId']({ id: membershipId }); - if (membership) { - let editingLevel = 'tutor'; - if (getters.courseware.attributes) { - editingLevel = getters.courseware.attributes['editing-permission-level']; - } - const membershipPermission = membership.attributes.permission; + setCoursePerms({ commit }, perms) { + commit('setCoursePerms', perms); + }, - let isTeacher = false; - if (editingLevel === 'dozent') { - isTeacher = membershipPermission === 'dozent'; - } else if (editingLevel === 'tutor') { - isTeacher = membershipPermission === 'dozent' || membershipPermission === 'tutor'; - } - commit('setUserIsTeacher', isTeacher); + setUserIsTeacher({ commit }, isTeacher) { + commit('setUserIsTeacher', isTeacher); + }, - return true; - } else { - console.error(`Could not find course membership for ${membershipId}.`); - commit('setUserIsTeacher', false); + loadTeacherStatus({ commit, getters }) { + const editingLevel = getters.courseware.attributes['editing-permission-level']; + const isTeacher = getters.coursePerms[editingLevel]; - return false; - } + commit('setUserIsTeacher', isTeacher); }, loadFeedback({ dispatch }, blockId) { @@ -1623,10 +1579,13 @@ export const mutations = { }, setUserIsTeacher(state, isTeacher) { - state.teacherStatusLoaded = true; state.userIsTeacher = isTeacher; }, + setCoursePerms(state, perms) { + state.coursePerms = perms; + }, + setPluginManager(state, pluginManager) { state.pluginManager = pluginManager; }, |
