Chamilo is a learning management system focused on ease of use and accessibility
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
chamilo-lms/assets/vue/store/security.js

64 lines
1.4 KiB

export default {
namespaced: true,
state: {
isLoading: false,
error: null,
isAuthenticated: false,
user: null,
},
getters: {
isLoading(state) {
return state.isLoading
},
error(state) {
return state.error
},
isAuthenticated(state) {
return state.isAuthenticated
},
isAdmin(state, getters) {
return getters.isAuthenticated && (getters.hasRole("ROLE_SUPER_ADMIN") || getters.hasRole("ROLE_ADMIN"))
},
isCourseAdmin(state, getters) {
if (getters.isAdmin) {
return true
}
return (
getters.isAuthenticated &&
getters.hasRole("ROLE_CURRENT_COURSE_SESSION_TEACHER") &&
getters.hasRole("ROLE_CURRENT_COURSE_TEACHER")
)
},
isCurrentTeacher(state, getters) {
if (!getters.isAuthenticated) {
return false
}
if (getters.hasRole("ROLE_SUPER_ADMIN") || getters.hasRole("ROLE_ADMIN")) {
return true
}
return getters.hasRole("ROLE_CURRENT_COURSE_TEACHER")
},
isBoss(state, getters) {
return getters.hasRole("ROLE_STUDENT_BOSS")
},
isStudent(state, getters) {
return getters.hasRole("ROLE_STUDENT")
},
getUser(state) {
return state.user
},
hasRole(state) {
return (role) => {
if (state.user.roles) {
return state.user.roles.indexOf(role) !== -1
}
return false
}
},
},
actions: {},
}