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>
|
<delete-button v-show="showDeleteButton"></delete-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<shell-button v-show="user.perm.execute" />
|
<shell-button v-if="settings.execEnabled && user.perm.execute" />
|
||||||
<switch-button v-show="isListing"></switch-button>
|
<switch-button v-show="isListing"></switch-button>
|
||||||
<download-button v-show="showDownloadButton"></download-button>
|
<download-button v-show="showDownloadButton"></download-button>
|
||||||
<upload-button v-show="showUpload"></upload-button>
|
<upload-button v-show="showUpload"></upload-button>
|
||||||
@ -117,7 +117,8 @@ export default {
|
|||||||
'user',
|
'user',
|
||||||
'loading',
|
'loading',
|
||||||
'reload',
|
'reload',
|
||||||
'multiple'
|
'multiple',
|
||||||
|
'settings'
|
||||||
]),
|
]),
|
||||||
logoURL: () => logoURL,
|
logoURL: () => logoURL,
|
||||||
isMobile () {
|
isMobile () {
|
||||||
|
|||||||
@ -16,10 +16,12 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { mapState } from 'vuex'
|
||||||
export default {
|
export default {
|
||||||
name: 'permissions',
|
name: 'permissions',
|
||||||
props: ['perm'],
|
props: ['perm'],
|
||||||
computed: {
|
computed: {
|
||||||
|
...mapState([ 'settings' ]),
|
||||||
admin: {
|
admin: {
|
||||||
get () {
|
get () {
|
||||||
return this.perm.admin
|
return this.perm.admin
|
||||||
|
|||||||
@ -40,6 +40,7 @@ import Languages from './Languages'
|
|||||||
import Rules from './Rules'
|
import Rules from './Rules'
|
||||||
import Permissions from './Permissions'
|
import Permissions from './Permissions'
|
||||||
import Commands from './Commands'
|
import Commands from './Commands'
|
||||||
|
import { mapState } from 'vuex'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'user',
|
name: 'user',
|
||||||
@ -51,6 +52,7 @@ export default {
|
|||||||
},
|
},
|
||||||
props: [ 'user', 'isNew', 'isDefault' ],
|
props: [ 'user', 'isNew', 'isDefault' ],
|
||||||
computed: {
|
computed: {
|
||||||
|
...mapState([ 'settings' ]),
|
||||||
passwordPlaceholder () {
|
passwordPlaceholder () {
|
||||||
return this.isNew ? '' : this.$t('settings.avoidChanges')
|
return this.isNew ? '' : this.$t('settings.avoidChanges')
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import Vue from '@/utils/vue'
|
|||||||
import { recaptcha, loginPage } from '@/utils/constants'
|
import { recaptcha, loginPage } from '@/utils/constants'
|
||||||
import { login, validateLogin } from '@/utils/auth'
|
import { login, validateLogin } from '@/utils/auth'
|
||||||
import App from '@/App'
|
import App from '@/App'
|
||||||
|
import { settings } from '@/api'
|
||||||
|
|
||||||
sync(store, router)
|
sync(store, router)
|
||||||
|
|
||||||
@ -15,6 +16,7 @@ async function start () {
|
|||||||
} else {
|
} else {
|
||||||
await login('', '', '')
|
await login('', '', '')
|
||||||
}
|
}
|
||||||
|
store.commit('setSettings', await settings.get())
|
||||||
|
|
||||||
if (recaptcha) {
|
if (recaptcha) {
|
||||||
await new Promise (resolve => {
|
await new Promise (resolve => {
|
||||||
|
|||||||
@ -8,6 +8,7 @@ Vue.use(Vuex)
|
|||||||
|
|
||||||
const state = {
|
const state = {
|
||||||
user: null,
|
user: null,
|
||||||
|
settings: null,
|
||||||
req: {},
|
req: {},
|
||||||
oldReq: {},
|
oldReq: {},
|
||||||
clipboard: {
|
clipboard: {
|
||||||
|
|||||||
@ -45,6 +45,7 @@ const mutations = {
|
|||||||
i18n.default.locale = locale
|
i18n.default.locale = locale
|
||||||
state.user = value
|
state.user = value
|
||||||
},
|
},
|
||||||
|
setSettings: (state, value) => { state.settings = value },
|
||||||
setJWT: (state, value) => (state.jwt = value),
|
setJWT: (state, value) => (state.jwt = value),
|
||||||
multiple: (state, value) => (state.multiple = value),
|
multiple: (state, value) => (state.multiple = value),
|
||||||
addSelected: (state, value) => (state.selected.push(value)),
|
addSelected: (state, value) => (state.selected.push(value)),
|
||||||
|
|||||||
@ -7,7 +7,7 @@
|
|||||||
<sidebar></sidebar>
|
<sidebar></sidebar>
|
||||||
<main>
|
<main>
|
||||||
<router-view></router-view>
|
<router-view></router-view>
|
||||||
<shell v-if="isLogged && user.perm.execute" />
|
<shell v-if="isLogged && settings.execEnabled && user.perm.execute" />
|
||||||
</main>
|
</main>
|
||||||
<prompts></prompts>
|
<prompts></prompts>
|
||||||
</div>
|
</div>
|
||||||
@ -30,7 +30,7 @@ export default {
|
|||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapGetters([ 'isLogged', 'progress' ]),
|
...mapGetters([ 'isLogged', 'progress' ]),
|
||||||
...mapState([ 'user' ])
|
...mapState([ 'user', 'settings' ])
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
'$route': function () {
|
'$route': function () {
|
||||||
|
|||||||
@ -101,7 +101,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mapState } from 'vuex'
|
import { mapMutations, mapState } from 'vuex'
|
||||||
import { settings as api } from '@/api'
|
import { settings as api } from '@/api'
|
||||||
import UserForm from '@/components/settings/UserForm'
|
import UserForm from '@/components/settings/UserForm'
|
||||||
import Rules from '@/components/settings/Rules'
|
import Rules from '@/components/settings/Rules'
|
||||||
@ -137,6 +137,7 @@ export default {
|
|||||||
|
|
||||||
settings.shell = settings.shell.join(' ')
|
settings.shell = settings.shell.join(' ')
|
||||||
|
|
||||||
|
setSettings(original)
|
||||||
this.originalSettings = original
|
this.originalSettings = original
|
||||||
this.settings = settings
|
this.settings = settings
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
@ -144,6 +145,7 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
...mapMutations([ 'setSettings' ]),
|
||||||
capitalize (name, where = '_') {
|
capitalize (name, where = '_') {
|
||||||
if (where === 'caps') where = /(?=[A-Z])/
|
if (where === 'caps') where = /(?=[A-Z])/
|
||||||
let splitted = name.split(where)
|
let splitted = name.split(where)
|
||||||
@ -168,6 +170,7 @@ export default {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
await api.update(settings)
|
await api.update(settings)
|
||||||
|
this.setSettings(settings)
|
||||||
this.$showSuccess(this.$t('settings.settingsUpdated'))
|
this.$showSuccess(this.$t('settings.settingsUpdated'))
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$showError(e)
|
this.$showError(e)
|
||||||
|
|||||||
@ -48,8 +48,8 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mapMutations } from 'vuex'
|
import { mapMutations, mapState } from 'vuex'
|
||||||
import { users as api, settings } from '@/api'
|
import { users as api } from '@/api'
|
||||||
import UserForm from '@/components/settings/UserForm'
|
import UserForm from '@/components/settings/UserForm'
|
||||||
import deepClone from 'lodash.clonedeep'
|
import deepClone from 'lodash.clonedeep'
|
||||||
|
|
||||||
@ -69,6 +69,7 @@ export default {
|
|||||||
this.fetchData()
|
this.fetchData()
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
...mapState([ 'settings' ]),
|
||||||
isNew () {
|
isNew () {
|
||||||
return this.$route.path === '/settings/users/new'
|
return this.$route.path === '/settings/users/new'
|
||||||
}
|
}
|
||||||
@ -81,13 +82,12 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
...mapMutations([ 'closeHovers', 'showHover', 'setUser' ]),
|
...mapMutations([ 'closeHovers', 'showHover', 'setUser', 'setSettings' ]),
|
||||||
async fetchData () {
|
async fetchData () {
|
||||||
try {
|
try {
|
||||||
if (this.isNew) {
|
if (this.isNew) {
|
||||||
let { defaults } = await settings.get()
|
|
||||||
this.user = {
|
this.user = {
|
||||||
...defaults,
|
...this.settings.defaults,
|
||||||
username: '',
|
username: '',
|
||||||
passsword: '',
|
passsword: '',
|
||||||
rules: [],
|
rules: [],
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user