Skip to content
This repository was archived by the owner on Jul 10, 2019. It is now read-only.

Commit 48e68ed

Browse files
committed
feat: add token getter
1 parent bd4ced6 commit 48e68ed

File tree

2 files changed

+48
-6
lines changed

2 files changed

+48
-6
lines changed

src/store/auth.ts

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ export interface IState {
1717
* ログイン中かどうか
1818
*/
1919
loggedIn: boolean
20+
/**
21+
* ログイントークン
22+
*/
23+
token: string | null
2024
/**
2125
* ローディング
2226
*/
@@ -34,6 +38,7 @@ export interface IState {
3438
export const state = (): IState => ({
3539
authUser: null,
3640
loggedIn: false,
41+
token: null,
3742
busy: {
3843
register: false,
3944
login: false,
@@ -48,6 +53,9 @@ export const state = (): IState => ({
4853
export const getters = {
4954
isAuthenticated(state: IState): boolean {
5055
return !!state.loggedIn
56+
},
57+
getToken(state: IState): string | null {
58+
return state.token
5159
}
5260
}
5361

@@ -67,6 +75,12 @@ export const mutations = {
6775
updateLoginStatus(state: IState, status: boolean): void {
6876
state.loggedIn = status
6977
},
78+
/**
79+
* ログイントークンを更新する
80+
*/
81+
updateLoginToken(state: IState, token: string | null): void {
82+
state.token = token
83+
},
7084
/**
7185
* 処理中ステータスを更新する
7286
*/
@@ -117,11 +131,16 @@ export const actions = {
117131
cancelToken: cancelToken.getToken(payload)
118132
} as AxiosRequestConfig
119133
)
134+
const token = headers['access-token']
120135

121-
setToken(headers['access-token'])
136+
if (process.client && token && data.loggedIn) {
137+
setToken(token)
138+
}
122139

123140
// ログイン状態を更新
124141
commit('updateLoginStatus', data.loggedIn)
142+
// ログイントークンを更新
143+
commit('updateLoginToken', token)
125144
// ユーザー情報をストアに保存
126145
commit('SET_USER', data)
127146

@@ -162,10 +181,14 @@ export const actions = {
162181
} as AxiosRequestConfig
163182
)
164183

165-
unsetToken()
184+
if (process.client && !data.loggedIn) {
185+
unsetToken()
186+
}
166187

167188
// ログイン状態を更新
168189
commit('updateLoginStatus', data.loggedIn)
190+
// ログイントークンを更新
191+
commit('updateLoginToken', null)
169192

170193
return data
171194
} catch (err) {
@@ -198,13 +221,20 @@ export const actions = {
198221
cancelToken: cancelToken.getToken(payload)
199222
} as AxiosRequestConfig
200223
)
201-
202-
if (headers['access-token'] && data.loggedIn) {
203-
setToken(headers['access-token'])
224+
const token = headers['access-token']
225+
226+
if (process.client) {
227+
if (token && data.loggedIn) {
228+
setToken(token)
229+
} else if (!token || !data.loggedIn) {
230+
unsetToken()
231+
}
204232
}
205233

206234
// ログイン状態を更新
207235
commit('updateLoginStatus', data.loggedIn)
236+
// ログイントークンを更新
237+
commit('updateLoginToken', token)
208238

209239
return data
210240
} catch (err) {

src/store/index.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { ActionContext } from 'vuex'
22
import { ILoginCheckPayload } from '@/interface/User/ILoginCheck'
3+
import { setToken, unsetToken } from '@/utilities/'
34

45
/**
56
* store 用インターフェイス
@@ -58,14 +59,25 @@ export const actions = {
5859
await console.log('nuxtServerInit')
5960
commit('setIsServerInitCalled')
6061

62+
// ログインチェック
6163
await dispatch('auth/loginCheck', {} as ILoginCheckPayload)
6264
},
6365
/**
6466
* クライアント初期化時の処理
6567
*/
6668
// @ts-ignore
67-
nuxtClientInit({ commit }: ActionContext<any, any>, { app }): void {
69+
nuxtClientInit({ commit, getters }: ActionContext<any, any>, { app }): void {
6870
console.log('nuxtClientInit')
6971
commit('setIsClientInitCalled')
72+
73+
// nuxtServerInit でログインチェックした state を元に token を cookie にセットし直す
74+
const token = getters['auth/getToken']
75+
const loggedIn = getters['auth/isAuthenticated']
76+
console.log('token', getters['auth/getToken'], 'loggedIn:', loggedIn)
77+
if (token && loggedIn) {
78+
setToken(token)
79+
} else {
80+
unsetToken()
81+
}
7082
}
7183
}

0 commit comments

Comments
 (0)