add settings as global state

This commit is contained in:
Aiden McClelland 2020-09-21 14:10:37 -06:00
parent 0e1d9ea096
commit 075c411c91
9 changed files with 22 additions and 10 deletions

View File

@ -37,7 +37,7 @@
<delete-button v-show="showDeleteButton"></delete-button>
</div>
<shell-button v-show="user.perm.execute" />
<shell-button v-if="settings.execEnabled && user.perm.execute" />
<switch-button v-show="isListing"></switch-button>
<download-button v-show="showDownloadButton"></download-button>
<upload-button v-show="showUpload"></upload-button>
@ -117,7 +117,8 @@ export default {
'user',
'loading',
'reload',
'multiple'
'multiple',
'settings'
]),
logoURL: () => logoURL,
isMobile () {

View File

@ -16,10 +16,12 @@
</template>
<script>
import { mapState } from 'vuex'
export default {
name: 'permissions',
props: ['perm'],
computed: {
...mapState([ 'settings' ]),
admin: {
get () {
return this.perm.admin

View File

@ -40,6 +40,7 @@ import Languages from './Languages'
import Rules from './Rules'
import Permissions from './Permissions'
import Commands from './Commands'
import { mapState } from 'vuex'
export default {
name: 'user',
@ -51,6 +52,7 @@ export default {
},
props: [ 'user', 'isNew', 'isDefault' ],
computed: {
...mapState([ 'settings' ]),
passwordPlaceholder () {
return this.isNew ? '' : this.$t('settings.avoidChanges')
}

View File

@ -6,6 +6,7 @@ import Vue from '@/utils/vue'
import { recaptcha, loginPage } from '@/utils/constants'
import { login, validateLogin } from '@/utils/auth'
import App from '@/App'
import { settings } from '@/api'
sync(store, router)
@ -15,6 +16,7 @@ async function start () {
} else {
await login('', '', '')
}
store.commit('setSettings', await settings.get())
if (recaptcha) {
await new Promise (resolve => {

View File

@ -8,6 +8,7 @@ Vue.use(Vuex)
const state = {
user: null,
settings: null,
req: {},
oldReq: {},
clipboard: {

View File

@ -45,6 +45,7 @@ const mutations = {
i18n.default.locale = locale
state.user = value
},
setSettings: (state, value) => { state.settings = value },
setJWT: (state, value) => (state.jwt = value),
multiple: (state, value) => (state.multiple = value),
addSelected: (state, value) => (state.selected.push(value)),

View File

@ -7,7 +7,7 @@
<sidebar></sidebar>
<main>
<router-view></router-view>
<shell v-if="isLogged && user.perm.execute" />
<shell v-if="isLogged && settings.execEnabled && user.perm.execute" />
</main>
<prompts></prompts>
</div>
@ -30,7 +30,7 @@ export default {
},
computed: {
...mapGetters([ 'isLogged', 'progress' ]),
...mapState([ 'user' ])
...mapState([ 'user', 'settings' ])
},
watch: {
'$route': function () {

View File

@ -101,7 +101,7 @@
</template>
<script>
import { mapState } from 'vuex'
import { mapMutations, mapState } from 'vuex'
import { settings as api } from '@/api'
import UserForm from '@/components/settings/UserForm'
import Rules from '@/components/settings/Rules'
@ -137,6 +137,7 @@ export default {
settings.shell = settings.shell.join(' ')
setSettings(original)
this.originalSettings = original
this.settings = settings
} catch (e) {
@ -144,6 +145,7 @@ export default {
}
},
methods: {
...mapMutations([ 'setSettings' ]),
capitalize (name, where = '_') {
if (where === 'caps') where = /(?=[A-Z])/
let splitted = name.split(where)
@ -168,6 +170,7 @@ export default {
try {
await api.update(settings)
this.setSettings(settings)
this.$showSuccess(this.$t('settings.settingsUpdated'))
} catch (e) {
this.$showError(e)

View File

@ -48,8 +48,8 @@
</template>
<script>
import { mapMutations } from 'vuex'
import { users as api, settings } from '@/api'
import { mapMutations, mapState } from 'vuex'
import { users as api } from '@/api'
import UserForm from '@/components/settings/UserForm'
import deepClone from 'lodash.clonedeep'
@ -69,6 +69,7 @@ export default {
this.fetchData()
},
computed: {
...mapState([ 'settings' ]),
isNew () {
return this.$route.path === '/settings/users/new'
}
@ -81,13 +82,12 @@ export default {
}
},
methods: {
...mapMutations([ 'closeHovers', 'showHover', 'setUser' ]),
...mapMutations([ 'closeHovers', 'showHover', 'setUser', 'setSettings' ]),
async fetchData () {
try {
if (this.isNew) {
let { defaults } = await settings.get()
this.user = {
...defaults,
...this.settings.defaults,
username: '',
passsword: '',
rules: [],