@@ -6,6 +6,7 @@ export const userService = { | |||
logout, | |||
register, | |||
getAll, | |||
getMe, | |||
getById, | |||
getPolicyById, | |||
updatePolicyById, | |||
@@ -60,6 +61,10 @@ function getAll(messages, errors) { | |||
return fetch(`${config.apiUrl}/users`, util.getWithAuth()).then(util.handleCrudResponse(messages, errors)); | |||
} | |||
function getMe(messages, errors) { | |||
return fetch(`${config.apiUrl}/me`, util.getWithAuth()).then(util.handleCrudResponse(messages, errors)); | |||
} | |||
function getById(id, messages, errors) { | |||
return fetch(`${config.apiUrl}/users/${id}`, util.getWithAuth()).then(util.handleCrudResponse(messages, errors)); | |||
} | |||
@@ -28,6 +28,14 @@ const actions = { | |||
refreshUser({ commit }) { | |||
commit('refreshUser', JSON.parse(localStorage.getItem(util.USER_KEY))); | |||
}, | |||
checkSession({ commit }, { messages, errors }) { | |||
commit('checkSessionRequest'); | |||
userService.getMe(messages, errors) | |||
.then( | |||
user => commit('checkSessionSuccess', user), | |||
error => commit('checkSessionFailure', error) | |||
); | |||
}, | |||
login({ dispatch, commit }, { user, messages, errors }) { | |||
commit('loginRequest', { name: user.name }); | |||
userService.login(user.name, user.password, messages, errors) | |||
@@ -147,6 +155,18 @@ const mutations = { | |||
state.status.loggedIn = (user !== null); | |||
state.user = user; | |||
}, | |||
checkSessionRequest(state) {}, | |||
checkSessionSuccess(state, user) { | |||
if (user.token) { | |||
localStorage.setItem(util.USER_KEY, JSON.stringify(user)); | |||
state.user = user; | |||
} | |||
state.locale = (typeof user.locale !== 'undefined' && user.locale !== null ? user.locale : state.locale); | |||
}, | |||
checkSessionFailure(state, error) { | |||
state.user = null; | |||
state.status.loggedIn = false; | |||
}, | |||
loginRequest(state, user) { | |||
state.status.loggingIn = true; | |||
state.user = user; | |||
@@ -190,7 +210,6 @@ const mutations = { | |||
}, | |||
setLocaleRequest(state, locale) { | |||
console.log('setLocaleRequest: setting locale='+locale); | |||
state.status.settingLocale = true; | |||
state.locale = locale; | |||
const user = util.currentUser(); | |||
@@ -203,12 +222,10 @@ const mutations = { | |||
state.user = user; | |||
}, | |||
setLocaleSuccess(state, user) { | |||
console.log('setLocaleSuccess: user='+JSON.stringify(user)); | |||
state.locale = ''+state.locale; | |||
state.status.settingLocale = false; | |||
}, | |||
setLocaleFailure(state) { | |||
console.log('setLocaleFailure'); | |||
state.status.settingLocale = false; | |||
state.status = {}; | |||
}, | |||
@@ -260,7 +277,6 @@ const mutations = { | |||
}, | |||
sendAuthenticatorCodeSuccess(state, user) { | |||
state.status.authenticating = false; | |||
console.log("sendAuthenticatorCodeSuccess: user="+JSON.stringify(user)); | |||
state.actionStatus = { success: true, type: 'approve', result: user }; | |||
if (user.token) { | |||
state.user = user; | |||
@@ -280,7 +296,6 @@ const mutations = { | |||
}, | |||
resendVerificationCodeSuccess(state, policy) { | |||
state.status.sendingVerification = false; | |||
console.log("resendVerificationCodeSuccess: policy="+JSON.stringify(policy)); | |||
state.actionStatus = { success: true, type: 'verify', result: policy }; | |||
}, | |||
resendVerificationCodeFailure(state, error) { | |||
@@ -1,4 +1,4 @@ | |||
import { systemService } from '../_services'; | |||
import { systemService, userService } from '../_services'; | |||
import { account } from "./account.module"; | |||
import { router } from "../_helpers"; | |||
@@ -78,11 +78,6 @@ const actions = { | |||
error => commit('loadMessagesFailure', error) | |||
); | |||
}, | |||
reloadMessages({ commit }, locale) { | |||
for (let i=0; i<this.messageGroupsLoaded.length; i++) { | |||
this.loadMessages(this.messageGroupsLoaded[i], locale); | |||
} | |||
}, | |||
loadTimezones({ commit }) { | |||
commit('loadTimezonesRequest'); | |||
systemService.loadTimezones().then( | |||
@@ -189,15 +184,11 @@ const messageNotFoundHandler = { | |||
}; | |||
const mutations = { | |||
loadIsActivatedRequest(state) { | |||
console.log('loadIsActivatedRequest: starting'); | |||
}, | |||
loadIsActivatedRequest(state) {}, | |||
loadIsActivatedSuccess(state, activated) { | |||
console.log('loadIsActivatedSuccess: received '+activated); | |||
state.activated = activated; | |||
}, | |||
loadIsActivatedFailure(state, error) { | |||
console.log('loadIsActivatedFailure: failed: '+error); | |||
state.errors.activated = error; | |||
}, | |||
@@ -225,7 +216,6 @@ const mutations = { | |||
}, | |||
loadMessagesRequest(state) {}, | |||
loadMessagesSuccess(state, {group, messages}) { | |||
// console.log('loadMessages (group='+group+'), messages='+JSON.stringify(messages)); | |||
if (state.messageGroupsLoaded.indexOf(group) === -1) state.messageGroupsLoaded.push(group); | |||
state.messages = new Proxy(Object.assign({}, state.messages, messages), messageNotFoundHandler); | |||
if (messages.country_codes) { | |||
@@ -267,7 +257,6 @@ const mutations = { | |||
}, | |||
detectTimezoneRequest(state) {}, | |||
detectTimezoneSuccess(state, detectedTimezone) { | |||
// console.log('detectTimezoneSuccess: detectedTimezone='+JSON.stringify(detectedTimezone)); | |||
state.detectedTimezone = detectedTimezone; | |||
}, | |||
detectTimezoneFailure(state, error) { | |||
@@ -51,7 +51,7 @@ | |||
...mapState('system', ['messages']) | |||
}, | |||
created () { | |||
this.getAllNetworks(this.messages, this.errors); | |||
this.getAllNetworks({messages: this.messages, errors: this.errors}); | |||
}, | |||
methods: { | |||
...mapActions('networks', { | |||
@@ -15,13 +15,12 @@ | |||
<div v-if="showLocaleSelector"> | |||
<div class="form-group"> | |||
<label for="locale">{{messages.field_label_locale}}</label> | |||
<select v-if="this.locales && this.locales.length > 0" v-model="selectedLocale" name="locale" class="form-control"> | |||
<select @change="updateLocale()" v-if="this.locales && this.locales.length > 0" v-model="selectedLocale" name="locale" class="form-control"> | |||
<option value="detect">{{messages['locale_detect']}}</option> | |||
<option v-for="opt in this.locales" v-bind:value="opt">{{messages['locale_'+opt]}}</option> | |||
</select> | |||
<div v-if="errors.has('locale')" class="invalid-feedback">{{ errors.first('locale') }}</div> | |||
</div> | |||
<button @click="updateLocale" class="btn btn-primary">{{messages.button_label_set_locale}}</button> | |||
</div> | |||
</div> | |||
</div> | |||
@@ -41,7 +40,7 @@ export default { | |||
}, | |||
computed: { | |||
...mapState('account', ['status', 'user', 'locale']), | |||
...mapState('system', ['activated', 'configs', 'messages', 'menu']), | |||
...mapState('system', ['activated', 'configs', 'messages', 'messageGroupsLoaded', 'menu']), | |||
...mapGetters('system', ['menu']), | |||
...mapState({ | |||
alert: state => state.alert | |||
@@ -50,13 +49,21 @@ export default { | |||
}, | |||
methods: { | |||
...mapActions({ clearAlert: 'alert/clear' }), | |||
...mapActions('account', ['setLocale']), | |||
...mapActions('system', ['loadIsActivated', 'loadSystemConfigs', 'loadMessages', 'reloadMessages', 'loadTimezones']), | |||
...mapActions('account', ['setLocale', 'checkSession', 'logout']), | |||
...mapActions('system', ['loadIsActivated', 'loadSystemConfigs', 'loadMessages', 'loadTimezones']), | |||
toggleLocaleView() { this.showLocaleSelector = !this.showLocaleSelector; }, | |||
updateLocale() { | |||
if (this.selectedLocale) { | |||
console.log('updateLocale: this.selectedLocale='+this.selectedLocale); | |||
this.setLocale({locale: this.selectedLocale, messages: this.messages, errors: this.errors}); | |||
} | |||
}, | |||
reloadMessages() { | |||
if (this.selectedLocale) { | |||
for (let i = 0; i < this.messageGroupsLoaded.length; i++) { | |||
this.loadMessages(this.messageGroupsLoaded[i], this.selectedLocale); | |||
} | |||
} | |||
} | |||
}, | |||
watch: { | |||
@@ -69,18 +76,23 @@ export default { | |||
}, | |||
user (u) { | |||
if (typeof u === 'undefined' || u === null || typeof u.locale === 'undefined' || u.locale === null) { | |||
this.logout(); | |||
this.$router.replace('/logout'); | |||
return; | |||
} | |||
this.selectedLocale = u.locale; | |||
this.reloadMessages(this.selectedLocale); | |||
this.reloadMessages(); | |||
}, | |||
locale (loc) { | |||
this.selectedLocale = loc; | |||
this.reloadMessages(this.selectedLocale) | |||
this.reloadMessages() | |||
} | |||
}, | |||
created() { | |||
const user = util.currentUser(); | |||
if (user !== null && (typeof user.token !== 'undefined' && user.token !== null)) { | |||
this.checkSession({messages: this.messages, errors: this.errors}); | |||
} | |||
this.selectedLocale = (user !== null && typeof user.locale !== 'undefined' && user.locale !== null ? user.locale : 'detect'); | |||
this.loadIsActivated(); | |||
this.loadSystemConfigs(); // determine if we can show the registration link | |||