add settings as global state
This commit is contained in:
parent
0e1d9ea096
commit
075c411c91
@ -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 () {
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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')
|
||||
}
|
||||
|
||||
@ -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 => {
|
||||
|
||||
@ -8,6 +8,7 @@ Vue.use(Vuex)
|
||||
|
||||
const state = {
|
||||
user: null,
|
||||
settings: null,
|
||||
req: {},
|
||||
oldReq: {},
|
||||
clipboard: {
|
||||
|
||||
@ -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)),
|
||||
|
||||
@ -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 () {
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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: [],
|
||||
|
||||
Loading…
Reference in New Issue
Block a user