46 lines
1.4 KiB
JavaScript
46 lines
1.4 KiB
JavaScript
import axios from 'axios';
|
|
|
|
import {AUTH_SERVICE, AUTH_ENDPOINTS} from './consts';
|
|
import tokenApi from './TokenAPI';
|
|
|
|
/**
|
|
* Api для выполнения запросов авторизации
|
|
* @class AuthServiceApi
|
|
*/
|
|
class AuthServiceApi {
|
|
constructor () {
|
|
this.URL = AUTH_SERVICE;
|
|
}
|
|
|
|
/**
|
|
* Выполняет запрос авторизации и если он успешен, то добавляет токены в память
|
|
* @param {string} login - логин пользователя
|
|
* @param {string} password - пароль пользователя
|
|
* @returns {Promise<void>}
|
|
*/
|
|
auth = (login, password) => {
|
|
return axios.post(`${this.URL}${AUTH_ENDPOINTS.AUTH}`, {
|
|
login,
|
|
password,
|
|
}).then(({data: tokens}) => {
|
|
tokenApi.saveTokenPair(tokens);
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Пытается реврешнуть пару токенов и в случае успеха обновляет их в памяти
|
|
* @returns {Promise<void>}
|
|
*/
|
|
refresh = () => {
|
|
const refresh_token = tokenApi.getRefreshToken();
|
|
return axios.post(`${this.URL}${AUTH_ENDPOINTS.REFRESH}`, {refresh_token})
|
|
.then(({data: tokens}) => {
|
|
tokenApi.saveTokenPair(tokens);
|
|
});
|
|
}
|
|
}
|
|
|
|
const authServiceApi = new AuthServiceApi();
|
|
|
|
export default authServiceApi;
|