diff --git a/src/_services/user.service.js b/src/_services/user.service.js index be50fc6..97fee85 100644 --- a/src/_services/user.service.js +++ b/src/_services/user.service.js @@ -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)); } diff --git a/src/_store/account.module.js b/src/_store/account.module.js index f543e09..3eb46c1 100644 --- a/src/_store/account.module.js +++ b/src/_store/account.module.js @@ -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) { diff --git a/src/_store/system.module.js b/src/_store/system.module.js index 249b2a2..3ea3ba9 100644 --- a/src/_store/system.module.js +++ b/src/_store/system.module.js @@ -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
-
{{ errors.first('locale') }}
- @@ -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