Client - add logout

This commit is contained in:
Sam
2021-08-14 18:58:59 +02:00
parent 1041fc4cb8
commit 5ade82d61d
6 changed files with 38 additions and 1 deletions

View File

@ -52,4 +52,12 @@ export const actions: ActionTree<IUserState, IRootState> & IUserActions = {
})
.catch((error) => handleError(context, error))
},
[USER_STORE.ACTIONS.LOGOUT](
context: ActionContext<IUserState, IRootState>
): void {
localStorage.removeItem('authToken')
context.commit(USER_STORE.MUTATIONS.CLEAR_AUTH_USER_TOKEN)
context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGE)
router.push('/login')
},
}

View File

@ -1,6 +1,7 @@
export enum UserActions {
GET_USER_PROFILE = 'GET_USER_PROFILE',
LOGIN_OR_REGISTER = 'LOGIN_OR_REGISTER',
LOGOUT = 'LOGOUT',
}
export enum UserGetters {
@ -10,6 +11,7 @@ export enum UserGetters {
}
export enum UserMutations {
CLEAR_AUTH_USER_TOKEN = 'CLEAR_AUTH_USER_TOKEN',
UPDATE_AUTH_TOKEN = 'UPDATE_AUTH_TOKEN',
UPDATE_AUTH_USER_PROFILE = 'UPDATE_AUTH_USER_PROFILE',
}

View File

@ -38,10 +38,16 @@ export interface IUserState {
}
export interface IUserActions {
[USER_STORE.ACTIONS.GET_USER_PROFILE](
context: ActionContext<IUserState, IRootState>
): void
[USER_STORE.ACTIONS.LOGIN_OR_REGISTER](
context: ActionContext<IUserState, IRootState>,
data: ILoginOrRegisterData
): void
[USER_STORE.ACTIONS.LOGOUT](
context: ActionContext<IUserState, IRootState>
): void
}
export interface IUserGetters {

View File

@ -5,6 +5,10 @@ import { IAuthUserProfile, IUserState } from '@/store/modules/user/interfaces'
import { TUserMutations } from '@/store/modules/user/types'
export const mutations: MutationTree<IUserState> & TUserMutations = {
[USER_STORE.MUTATIONS.CLEAR_AUTH_USER_TOKEN](state: IUserState) {
state.authToken = null
state.authUserProfile = <IAuthUserProfile>{}
},
[USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN](
state: IUserState,
authToken: string

View File

@ -2,13 +2,19 @@ import { Store as VuexStore, CommitOptions, DispatchOptions } from 'vuex'
import { USER_STORE } from '@/store/constants'
import {
IAuthUserProfile,
IUserActions,
IUserGetters,
IUserState,
} from '@/store/modules/user/interfaces'
export type TUserMutations<S = IUserState> = {
[USER_STORE.MUTATIONS.CLEAR_AUTH_USER_TOKEN](state: S): void
[USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN](state: S, authToken: string): void
[USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE](
state: S,
authUserProfile: IAuthUserProfile
): void
}
export type TUserStoreModule<S = IUserState> = Omit<