11.18save TODO reload Header Login status

This commit is contained in:
minseokkang
2022-11-18 17:58:59 +09:00
parent ebd42df504
commit 9471351943
5 changed files with 51 additions and 13 deletions

View File

@@ -19,16 +19,16 @@
<!-- Add "active" class when you're on that page" --> <!-- Add "active" class when you're on that page" -->
<router-link to="/" class="nav-link active" active-class="active">Home</router-link> <router-link to="/" class="nav-link active" active-class="active">Home</router-link>
</li> </li>
<li class="nav-item"> <li class="nav-item" v-if="isLogin">
<router-link to="/article" class="nav-link" active-class="active">New Article</router-link> <router-link to="/article" class="nav-link" active-class="active">New Article</router-link>
</li> </li>
<li class="nav-item"> <li class="nav-item" v-if="isLogin">
<router-link to="/settings" class="nav-link" active-class="active"><i class="ion-gear-a"></i>Settings</router-link> <router-link to="/settings" class="nav-link" active-class="active"><i class="ion-gear-a"></i>Settings</router-link>
</li> </li>
<li class="nav-item"> <li class="nav-item" v-if="!isLogin">
<router-link to="/login" class="nav-link" active-class="active">Sign in</router-link> <router-link to="/login" class="nav-link" active-class="active">Sign in</router-link>
</li> </li>
<li class="nav-item"> <li class="nav-item" v-if="!isLogin">
<router-link to="/register" class="nav-link" active-class="active">Sign up</router-link> <router-link to="/register" class="nav-link" active-class="active">Sign up</router-link>
</li> </li>
</ul> </ul>
@@ -39,8 +39,31 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { onMounted, ref } from "vue";
import { useStore } from "vuex";
export default { export default {
name: "TheHeader" name: "TheHeader",
setup(){
const store = useStore();
const token = ref("");
const username = ref("");
const isLogin = ref(false);
onMounted(()=> {
console.log("mounted!", isLogin.value);
if(store.state.token == ""){
isLogin.value = false;
}else{
isLogin.value = true;
}
})
return { isLogin}
}
} }
</script> </script>

View File

@@ -12,9 +12,6 @@ export default createStore({
}, },
setToken(state, token){ setToken(state, token){
state.token = token; state.token = token;
},
getToken(state){
return state.token
} }
}, },
actions: { actions: {
@@ -24,6 +21,12 @@ export default createStore({
localStorage.setItem("username", user.username); localStorage.setItem("username", user.username);
localStorage.setItem("token", user.token); localStorage.setItem("token", user.token);
}, },
LOGOUT({commit}){
commit("setUsername","");
commit("setToken","");
localStorage.removeItem("username");
localStorage.removeItem("token");
},
}, },
} }
) )

View File

@@ -58,7 +58,7 @@ export default {
}) })
.then(response => { .then(response => {
store.dispatch("LOGIN",response.data.user); store.dispatch("LOGIN",response.data.user);
router.push("/"); router.push({name:"Home"});
}) })
.catch(error =>{ .catch(error =>{
const code = error.response.data.errors.code; const code = error.response.data.errors.code;

View File

@@ -84,9 +84,11 @@ export default {
user user
}) })
.then(response => { .then(response => {
store.dispatch("LOGIN",response.data.user); store.dispatch("LOGIN",response.data.user)
allHideError(); .then(()=>{
router.push("/"); allHideError();
router.push({name: "Home"});
});
}) })
.catch(error =>{ .catch(error =>{
const code = error.response.data.errors.code; const code = error.response.data.errors.code;

View File

@@ -30,6 +30,10 @@
</button> </button>
</fieldset> </fieldset>
</form> </form>
<hr>
<button class="btn btn-outline-danger" @click="logout">
Or click here to logout.
</button>
</div> </div>
</div> </div>
@@ -84,6 +88,12 @@ export default {
}) })
} }
const logout = () =>{
store.dispatch("LOGOUT").then(()=>{
router.push({name: "Home"});
})
}
onMounted(() => { onMounted(() => {
axios.get(url+'/api/user',{ axios.get(url+'/api/user',{
@@ -100,7 +110,7 @@ export default {
//TODO 예외처리 //TODO 예외처리
}) })
}) })
return {user, password, url, token, getUser, updateUser}; return {user, password, url, token, getUser, updateUser, logout};
} }
} }
</script> </script>