65 lines
1.6 KiB
JavaScript
65 lines
1.6 KiB
JavaScript
import {defineStore} from 'pinia'
|
|
import {api} from "boot/axios";
|
|
|
|
export const useUserStore = defineStore('LoggedUser', {
|
|
state: () => ({
|
|
user: {},
|
|
accessToken: null
|
|
}),
|
|
actions: {
|
|
|
|
setAccessToken(token) {
|
|
console.log(token);
|
|
if (token) {
|
|
localStorage.setItem("accessToken", token);
|
|
}
|
|
this.accessToken = localStorage.getItem("accessToken");
|
|
},
|
|
getAccessToken() {
|
|
if (!this.accessToken) {
|
|
this.setAccessToken();
|
|
}
|
|
|
|
return this.accessToken;
|
|
},
|
|
|
|
async setupCredentials() {
|
|
// TODO: aktualne se vola s kazdym prechodem mezi routami, to je urcite zbytecne!
|
|
await api.get("/me").then(({data}) => {
|
|
this.user = data;
|
|
}).catch(e => {
|
|
console.log(e);
|
|
});
|
|
},
|
|
|
|
async register(formData) {
|
|
return api.post('/registration', formData).then(response => {
|
|
const registeredUser = response.data;
|
|
const isSuccess = response.status === 201
|
|
})
|
|
},
|
|
|
|
async login(formData) {
|
|
|
|
return api.post("/login", formData).then(response => {
|
|
const data = response.data;
|
|
console.log("data", data);
|
|
this.setAccessToken(data.access_token);
|
|
this.user = data.user;
|
|
})
|
|
|
|
// console.log("login", username, password);
|
|
// Object.assign(this.user, {
|
|
// id: 1,
|
|
// email: "michal@kvacek.cz",
|
|
// name: "Michal K.",
|
|
// accessToken: "abcdef",
|
|
// avatarImageUrl: "https://via.placeholder.com/50x50"
|
|
// });
|
|
},
|
|
logout() {
|
|
Object.assign(this.user, {});
|
|
}
|
|
}
|
|
})
|