Wishlist/resources/store/user.js

102 lines
3.0 KiB
JavaScript
Raw Normal View History

2024-10-27 11:17:33 +03:00
import {defineStore} from 'pinia'
import axios from "axios";
2024-10-22 19:28:45 +03:00
export const useUserStore = defineStore('user', {
state: () => ({
user: null,
token: localStorage.getItem('auth_token') || null,
}),
2024-10-22 19:28:45 +03:00
actions: {
setUser(user) {
this.user = user;
},
setToken(token) {
this.token = token;
localStorage.setItem('auth_token', token);
2024-10-22 19:28:45 +03:00
},
2024-10-27 11:17:33 +03:00
checkUser() {
axios.get(
'/api/auth/user',
{
headers:
{
Authorization: `Bearer ${this.token}`,
token: this.token
}
}
).then((res) => {
this.setUser(res.data);
2024-10-27 11:17:33 +03:00
}).catch((error) => {
this.nullifyUser();
})
},
2024-10-27 11:17:33 +03:00
async login(email, password, rememberMe) {
await axios.post(
'/api/auth/login',
{
'email': email,
'password': password,
'remember_me': rememberMe
2024-10-27 11:17:33 +03:00
}).then((res) => {
this.setUser(res.data.user);
this.setToken(res.data.accessToken);
return true;
2024-10-27 11:17:33 +03:00
}).catch((error) => {
if (!error.response) {
return false;
}
return error.response.data.message;
})
},
2024-10-27 11:17:33 +03:00
async registration(login, email, password, repeatPassword) {
await axios.post(
'/api/auth/register',
2024-10-27 11:17:33 +03:00
{
'name': login,
'email': email,
'password': password,
'c_password': repeatPassword
}).then((res) => {
this.setUser(res.data.user);
this.setToken(res.data.accessToken);
return true;
2024-10-27 11:17:33 +03:00
}).catch((error) => {
if (!error.response) {
return false;
}
return error.response.data.message;
})
},
2024-10-27 11:17:33 +03:00
logout() {
axios.get('/api/auth/logout',
{
headers:
{
Authorization: `Bearer ${this.token}`,
token: this.token
}
}
);
this.nullifyUser();
},
2024-10-27 11:17:33 +03:00
nullifyUser() {
this.setUser(null);
this.setToken(null);
},
async getUsername(id){
let result = null;
await axios.get('/api/wish/username',
{
params:
{
user_id: id
}
}
).then((res) => {
result = res;
});
return result;
}
2024-10-22 19:28:45 +03:00
},
})