Files
storage-service-ui/src/api/AuthServiceAPI.js

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;