filegator/frontend/store.js
Gopalakrishna Palem 7e0f460d9e
Fix: for LDAP auth when user credentials are invalid (#407)
* Fix: for LDAP auth when user credentials are invalid

* Fix: for LDAP auth when user credentials are invalid
2023-11-30 15:03:37 +01:00

99 lines
2.2 KiB
JavaScript

import Vue from 'vue'
import Vuex from 'vuex'
import shared from './mixins/shared'
import _ from 'lodash'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
initialized: false,
config: [],
user: {
role: 'guest',
permissions: [],
name: '',
username: ''
},
cwd: {
location: '/',
content: [],
},
tree: {},
},
getters: {
hasPermissions: (state) => (permissions) => {
if (_.isArray(permissions)) {
return _.intersection(state.user?.permissions, permissions).length == permissions.length
}
return _.find(state.user?.permissions, p => p == permissions) ? true : false
}
},
mutations: {
initialize(state) {
state.initialized = true
this.commit('resetCwd')
this.commit('resetTree')
this.commit('destroyUser')
},
resetCwd(state) {
state.cwd = {
location: '/',
content: [],
}
},
resetTree(state) {
state.tree = {
path: '/',
name: shared.methods.lang('Home'),
children: [],
}
},
setConfig(state, data) {
state.config = data
},
setUser(state, data) {
state.user = data
},
destroyUser(state) {
state.user = {
role: 'guest',
permissions: [],
name: '',
username: '',
}
},
setCwd(state, data) {
state.cwd.location = data.location
state.cwd.content = []
_.forEach(_.sortBy(data.content, [function(o) { return _.toLower(o.type) }]), (o) => {
state.cwd.content.push(o)
})
},
updateTreeNode(state, data) {
let traverse = function (object) {
for (let property in object) {
if (object.hasOwnProperty(property)) {
if (property === 'path' && object[property] === data.path) {
Object.assign(object, {
path: data.path,
children: data.children,
})
return
}
if (typeof object[property] === 'object') {
traverse(object[property])
}
}
}
}
traverse(state.tree)
},
},
actions: {
}
})