refactor(account): 로그인 상태 필드 정리 및 role 저장
왜: userId/nickname/profileImage는 사용처가 없어 유지보수 단순화. 대신 권한 판별을 위해 role 필요.\n무엇: accountStore에서 세 필드 삭제, role 추가. isAuthenticated 동기화 수정. LOGIN/LOGOUT 로직 role 반영. Axios Authorization 유지.
This commit is contained in:
@@ -12,17 +12,13 @@ enhanceAccessToken();
|
|||||||
const accountStore = {
|
const accountStore = {
|
||||||
namespaced: true,
|
namespaced: true,
|
||||||
state: {
|
state: {
|
||||||
userId: '',
|
|
||||||
nickname: '',
|
|
||||||
accessToken: '',
|
accessToken: '',
|
||||||
profileImage: '',
|
role: '',
|
||||||
},
|
},
|
||||||
getters: {
|
getters: {
|
||||||
isAuthenticated(state) {
|
isAuthenticated(state) {
|
||||||
state.userId = state.userId || localStorage.userId
|
|
||||||
state.nickname = state.nickname || localStorage.nickname
|
|
||||||
state.profileImage = state.profileImage || localStorage.profileImage
|
|
||||||
state.accessToken = state.accessToken || localStorage.accessToken
|
state.accessToken = state.accessToken || localStorage.accessToken
|
||||||
|
state.role = state.role || localStorage.role
|
||||||
|
|
||||||
return state.accessToken !== undefined &&
|
return state.accessToken !== undefined &&
|
||||||
state.accessToken !== null &&
|
state.accessToken !== null &&
|
||||||
@@ -31,27 +27,19 @@ const accountStore = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
mutations: {
|
mutations: {
|
||||||
LOGIN(state, {userId, nickname, token, profileImage}) {
|
LOGIN(state, {token, role}) {
|
||||||
state.userId = userId
|
|
||||||
localStorage.userId = userId
|
|
||||||
|
|
||||||
state.nickname = nickname
|
|
||||||
localStorage.nickname = nickname
|
|
||||||
|
|
||||||
state.profileImage = profileImage
|
|
||||||
localStorage.profileImage = profileImage
|
|
||||||
|
|
||||||
state.accessToken = token
|
state.accessToken = token
|
||||||
localStorage.accessToken = token
|
localStorage.accessToken = token
|
||||||
|
|
||||||
|
state.role = role
|
||||||
|
localStorage.role = role
|
||||||
|
|
||||||
Vue.axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;
|
Vue.axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;
|
||||||
},
|
},
|
||||||
|
|
||||||
LOGOUT(state) {
|
LOGOUT(state) {
|
||||||
state.userId = ''
|
|
||||||
state.nickname = ''
|
|
||||||
state.profileImage = ''
|
|
||||||
state.accessToken = ''
|
state.accessToken = ''
|
||||||
|
state.role = ''
|
||||||
|
|
||||||
localStorage.clear()
|
localStorage.clear()
|
||||||
if (location.pathname === '/') {
|
if (location.pathname === '/') {
|
||||||
|
|||||||
Reference in New Issue
Block a user