Skip to content
Snippets Groups Projects
Commit 0f4050b6 authored by Ron Lucke's avatar Ron Lucke Committed by Jan-Hendrik Willms
Browse files

Biest #994

Closes #994 and #1551

Merge request studip/studip!999
parent 48fc07c3
No related branches found
No related tags found
No related merge requests found
......@@ -5,7 +5,7 @@ import CoursewareModule from './store/courseware/courseware.module';
import CoursewareStructureModule from './store/courseware/structure.module';
import axios from 'axios';
const mountApp = (STUDIP, createApp, element) => {
const mountApp = async (STUDIP, createApp, element) => {
const getHttpClient = () =>
axios.create({
baseURL: STUDIP.URLHelper.getURL(`jsonapi.php/v1`, {}, true),
......@@ -42,6 +42,7 @@ const mountApp = (STUDIP, createApp, element) => {
'folders',
'users',
'institutes',
'institute-memberships',
'semesters',
'sem-classes',
'sem-types',
......@@ -68,7 +69,7 @@ const mountApp = (STUDIP, createApp, element) => {
}
store.dispatch('setUserId', STUDIP.USER_ID);
store.dispatch('users/loadById', { id: STUDIP.USER_ID });
await store.dispatch('users/loadById', { id: STUDIP.USER_ID });
store.dispatch('setHttpClient', httpClient);
store.dispatch('coursewareContext', {
id: entry_id,
......
......@@ -9,7 +9,7 @@ import Vuex from 'vuex';
import axios from 'axios';
import { mapResourceModules } from '@elan-ev/reststate-vuex';
const mountApp = (STUDIP, createApp, element) => {
const mountApp = async (STUDIP, createApp, element) => {
const getHttpClient = () =>
axios.create({
baseURL: STUDIP.URLHelper.getURL(`jsonapi.php/v1`, {}, true),
......@@ -109,6 +109,7 @@ const mountApp = (STUDIP, createApp, element) => {
'status-groups',
'users',
'institutes',
'institute-memberships',
'semesters',
'sem-classes',
'sem-types',
......@@ -121,7 +122,7 @@ const mountApp = (STUDIP, createApp, element) => {
store.dispatch('setUrlHelper', STUDIP.URLHelper);
store.dispatch('setUserId', STUDIP.USER_ID);
store.dispatch('users/loadById', {id: STUDIP.USER_ID});
await store.dispatch('users/loadById', {id: STUDIP.USER_ID});
store.dispatch('setHttpClient', httpClient);
store.dispatch('coursewareContext', {
......
......@@ -6,7 +6,7 @@ import axios from 'axios';
import { mapResourceModules } from '@elan-ev/reststate-vuex';
const mountApp = (STUDIP, createApp, element) => {
const mountApp = async (STUDIP, createApp, element) => {
const getHttpClient = () =>
axios.create({
baseURL: STUDIP.URLHelper.getURL(`jsonapi.php/v1`, {}, true),
......@@ -41,6 +41,7 @@ const mountApp = (STUDIP, createApp, element) => {
'status-groups',
'users',
'institutes',
'institute-memberships',
'semesters',
'sem-classes',
'sem-types',
......@@ -69,6 +70,7 @@ const mountApp = (STUDIP, createApp, element) => {
store.dispatch('setUrlHelper', STUDIP.URLHelper);
store.dispatch('setUserId', STUDIP.USER_ID);
await store.dispatch('users/loadById', {id: STUDIP.USER_ID});
store.dispatch('setHttpClient', httpClient);
store.dispatch('coursewareContext', {
id: entry_id,
......
......@@ -1033,20 +1033,39 @@ export const actions = {
},
async loadTeacherStatus({ dispatch, rootGetters, state, commit, getters }, userId) {
let user = rootGetters['users/byId']({ id: userId });
if (!user) {
await dispatch('users/loadById', { id: userId });
user = rootGetters['users/byId']({ id: 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 membershipId = `${state.context.id}_${userId}`;
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';
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment