125 lines
3.2 KiB
JavaScript
125 lines
3.2 KiB
JavaScript
import StoreService from './store.service';
|
|
import axios from 'axios';
|
|
|
|
export default class ApiService extends StoreService {
|
|
storeNs = 'user';
|
|
|
|
constructor(context) {
|
|
super(context);
|
|
}
|
|
|
|
/**
|
|
* @param params
|
|
* @returns {Promise<AxiosResponse<T>>}
|
|
*/
|
|
async checkConnectionDatabase(params) {
|
|
return await axios.post('setup/database', params);
|
|
}
|
|
|
|
async finishSetup(params) {
|
|
return await axios.put('setup/save', params);
|
|
}
|
|
|
|
token() {
|
|
return this.context.getters['token'];
|
|
}
|
|
|
|
checkApiAuth() {
|
|
return axios
|
|
.get('/auth/me', { ignoreCancel: true })
|
|
.then(({ data }) => {
|
|
this.context.dispatch('setLoggedInStatus', true);
|
|
this.context.dispatch('setUser', data.data);
|
|
|
|
return Promise.resolve();
|
|
})
|
|
.catch(() => {
|
|
localStorage.removeItem('access_token');
|
|
this.context.dispatch('forceUserExit');
|
|
|
|
return Promise.reject();
|
|
});
|
|
}
|
|
|
|
setUserData(user) {
|
|
this.context.dispatch('setUser', user);
|
|
}
|
|
|
|
setUserToken(token) {
|
|
if (token) {
|
|
localStorage.setItem('access_token', token);
|
|
} else {
|
|
localStorage.removeItem('access_token');
|
|
}
|
|
|
|
this.context.dispatch('setToken', token);
|
|
}
|
|
|
|
setLoggedInStatus(status = true) {
|
|
this.context.dispatch('setLoggedInStatus', status);
|
|
}
|
|
|
|
isLoggedIn() {
|
|
return this.context.getters.loggedIn;
|
|
}
|
|
|
|
attemptLogin(credentials) {
|
|
return axios
|
|
.post('/auth/login', credentials, { ignoreCancel: true })
|
|
.then(({ data }) => {
|
|
this.setUserToken(data.data.access_token);
|
|
this.setUserData(data.data.user);
|
|
this.setLoggedInStatus();
|
|
|
|
return Promise.resolve(data);
|
|
})
|
|
.catch(response => {
|
|
return Promise.reject(response);
|
|
});
|
|
}
|
|
|
|
attemptDesktopLogin(token) {
|
|
const instance = axios.create();
|
|
|
|
instance.defaults.headers.common['Authorization'] = `desktop ${token}`;
|
|
|
|
return instance
|
|
.put('/auth/desktop-key', {}, { ignoreCancel: true })
|
|
.then(({ data }) => {
|
|
this.setUserToken(data.access_token);
|
|
this.setUserData(data.user);
|
|
this.setLoggedInStatus();
|
|
|
|
return Promise.resolve(data);
|
|
})
|
|
.catch(response => {
|
|
return Promise.reject(response);
|
|
});
|
|
}
|
|
|
|
logout() {
|
|
return axios.post('/auth/logout').then(() => {
|
|
this.context.dispatch('forceUserExit');
|
|
});
|
|
}
|
|
|
|
async getCompanyData() {
|
|
const { data } = await axios.get('/company-settings', { ignoreCancel: true });
|
|
|
|
this.context.dispatch('setCompanyData', data.data);
|
|
|
|
return data.data;
|
|
}
|
|
|
|
async status() {
|
|
try {
|
|
const { data } = await axios.get('/status', { ignoreCancel: true });
|
|
return data.data;
|
|
} catch (e) {
|
|
return { cattr: false };
|
|
}
|
|
}
|
|
|
|
serverUrl = axios.defaults.baseURL;
|
|
}
|