浏览代码

logout user if session is invalid, fix reloadMessages

pull/1/head
Jonathan Cobb 4 年前
父节点
当前提交
dcbc8ba6df
共有 5 个文件被更改,包括 47 次插入26 次删除
  1. +5
    -0
      src/_services/user.service.js
  2. +20
    -5
      src/_store/account.module.js
  3. +2
    -13
      src/_store/system.module.js
  4. +1
    -1
      src/account/NetworksPage.vue
  5. +19
    -7
      src/app/App.vue

+ 5
- 0
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));
}


+ 20
- 5
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) {


+ 2
- 13
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<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) {


+ 1
- 1
src/account/NetworksPage.vue 查看文件

@@ -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', {


+ 19
- 7
src/app/App.vue 查看文件

@@ -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


正在加载...
取消
保存