73 lines
1.7 KiB
JavaScript
73 lines
1.7 KiB
JavaScript
import axiosIns from "@/plugins/axios"
|
|
import { defineStore } from "pinia"
|
|
|
|
export const useAuthStore = defineStore("auth", {
|
|
state: () => {
|
|
var access_token = localStorage.getItem("access_token")
|
|
if (!access_token) {
|
|
access_token = null
|
|
}
|
|
|
|
var role = localStorage.getItem("role")
|
|
if (!role) {
|
|
role = null
|
|
}
|
|
|
|
var user = JSON.parse(localStorage.getItem("user"))
|
|
if (!user) {
|
|
user = null
|
|
}
|
|
|
|
var profile = JSON.parse(localStorage.getItem("profile"))
|
|
if (!profile) {
|
|
profile = null
|
|
}
|
|
|
|
return {
|
|
access_token,
|
|
role,
|
|
user,
|
|
profile,
|
|
}
|
|
},
|
|
getters: {
|
|
isAuthenticated() {
|
|
return this.access_token !== null && this.access_token !== undefined
|
|
},
|
|
},
|
|
actions: {
|
|
saveData(access_token) {
|
|
localStorage.setItem("access_token", access_token)
|
|
this.access_token = access_token
|
|
},
|
|
deleteData() {
|
|
localStorage.removeItem("access_token")
|
|
localStorage.removeItem("user")
|
|
localStorage.removeItem("role")
|
|
this.access_token = null
|
|
this.user = null
|
|
this.role = null
|
|
this.profile = null
|
|
},
|
|
async getRoleUser() {
|
|
// pindahin
|
|
},
|
|
async getUser() {
|
|
if (!this.access_token) return
|
|
try {
|
|
const response = await axiosIns
|
|
.get("/api/v1/account/profile")
|
|
|
|
this.user = response.data.data.user
|
|
localStorage.setItem("user", JSON.stringify(this.user))
|
|
this.role = response.data.data.user.role
|
|
localStorage.setItem("role", this.role)
|
|
this.profile = response.data.data.profile
|
|
localStorage.setItem("profile", JSON.stringify(this.profile))
|
|
} catch (error) {
|
|
console.log(error)
|
|
}
|
|
},
|
|
},
|
|
})
|