HM-85. Внедрена авторизация на сайт (#44)

This commit is contained in:
Nikolay
2020-08-02 00:56:37 +03:00
committed by GitHub
parent edc493f0a2
commit 728e530d3d
12 changed files with 90 additions and 66 deletions

View File

@ -33,10 +33,18 @@ class AuthServiceApi {
*/
refresh = () => {
const refresh_token = tokenApi.getRefreshToken();
return axios.post(`${this.URL}${AUTH_ENDPOINTS.REFRESH}`, {refresh_token})
if (refresh_token) {
return axios.post(`${this.URL}${AUTH_ENDPOINTS.REFRESH}`, {refresh_token})
.then(({data: tokens}) => {
tokenApi.saveTokenPair(tokens);
})
.catch((e) => {
tokenApi.clearTokents();
throw e;
});
}
return Promise.reject(new Error('Не авторизован'));
}
}

View File

@ -26,64 +26,64 @@ class HttpApi {
* @param {string} url - адрес запроса
* @param {Object} body - тело запроса
*/
request = (method, url, body) => {
return httpAuthApi.request({method, url, body});
request = (method, url, body, config) => {
return httpAuthApi.request({...config, method, url, body});
}
/**
* @param {string} url - адрес запроса
* @param {Object<string, string>} query - параметры для передачи через query
*/
get = (url, query) => {
return this.request(GET, makeUrlWithQuery(url, query));
get = (url, query, config) => {
return this.request(GET, makeUrlWithQuery(url, query), null, config);
}
/**
* @param {string} url - адрес запроса
* @param {Object} body - тело запроса
*/
post = (url, body) => {
return this.request(POST, url, body);
post = (url, body, config) => {
return this.request(POST, url, body, config);
}
/**
* @param {string} url - адрес запроса
* @param {Object} body - тело запроса
*/
put = (url, body) => {
return this.request(PUT, url, body);
put = (url, body, config) => {
return this.request(PUT, url, body, config);
}
/**
* @param {string} url - адрес запроса
* @param {Object<string, string>} query - параметры для передачи через query
*/
delete = (url, query) => {
return this.request(DELETE, makeUrlWithQuery(url, query));
delete = (url, query, config) => {
return this.request(DELETE, makeUrlWithQuery(url, query), null, config);
}
/**
* @param {string} url - адрес запроса
* @param {Object<string, string>} query - параметры для передачи через query
*/
head = (url, query) => {
return this.request(HEAD, makeUrlWithQuery(url, query));
head = (url, query, config) => {
return this.request(HEAD, makeUrlWithQuery(url, query), null, config);
}
/**
* @param {string} url - адрес запроса
* @param {Object<string, string>} query - параметры для передачи через query
*/
options = (url, query) => {
return this.request(OPTIONS, makeUrlWithQuery(url, query));
options = (url, query, config) => {
return this.request(OPTIONS, makeUrlWithQuery(url, query), null, config);
}
/**
* @param {string} url - адрес запроса
* @param {Object} body - тело запроса
*/
path = (url, body) => {
return this.request(PATH, url, body);
path = (url, body, config) => {
return this.request(PATH, url, body, config);
}
}

View File

@ -90,6 +90,7 @@ class HttpAuthApi {
addTokenToRequest = (requestConfig) => ({
...requestConfig,
headers: {
...(requestConfig.headers ?? {}),
'Authorization': tokenApi.getAccessToken(),
},
})

View File

@ -16,7 +16,7 @@ class LocalStorageAPI {
* Возвращает распарсенный объект из Local Storage по ключу из конструктора
*/
request () {
const value = this.api.getItem(this.key) || '{}';
const value = this.api.getItem(this.key) || 'null';
return JSON.parse(value);
}

View File

@ -1,6 +1,6 @@
import axios from 'axios';
import {ENDPOINTS} from './consts';
import adminConfigsService from '../services/AdminConfigsService';
import http from './HttpAPI';
class StorageLogsApi {
constructor () {
@ -9,22 +9,22 @@ class StorageLogsApi {
}
requestServerLogs = async () => {
const {data} = await axios.get(`${this.URL}${ENDPOINTS.SERVER_LOGS}`);
const {data} = await http.get(`${this.URL}${ENDPOINTS.SERVER_LOGS}`);
return data;
}
requestClientLogs = async () => {
const {data} = await axios.get(`${this.URL}${ENDPOINTS.CLIENT_LOGS}`);
const {data} = await http.get(`${this.URL}${ENDPOINTS.CLIENT_LOGS}`);
return data;
}
deleteAllServerLogs = async () => {
const {data} = await axios.delete(`${this.URL}${ENDPOINTS.SERVER_LOGS}`);
const {data} = await http.delete(`${this.URL}${ENDPOINTS.SERVER_LOGS}`);
return data;
}
deleteAllClientLogs = async () => {
const {data} = await axios.delete(`${this.URL}${ENDPOINTS.CLIENT_LOGS}`);
const {data} = await http.delete(`${this.URL}${ENDPOINTS.CLIENT_LOGS}`);
return data;
}
}

View File

@ -1,7 +1,6 @@
import axios from 'axios';
import {ENDPOINTS} from './consts';
import adminConfigsService from '../services/AdminConfigsService';
import http from './HttpAPI';
/**
* @interface Store
@ -29,7 +28,7 @@ class StorageServiceApi {
* @returns {Promise<Store[]>} - Возвращает список всех api
*/
request = async () => {
const {data} = await axios.get(this.URL, this.OPTIONS);
const {data} = await http.get(this.URL, null, this.OPTIONS);
return data;
}
@ -39,7 +38,7 @@ class StorageServiceApi {
* @returns {Promise<Store>} - Возвращает api по указанному ключу
*/
find = async (key) => {
const {data} = await axios.get(`${this.URL}/${key}`, this.OPTIONS);
const {data} = await http.get(`${this.URL}/${key}`, null, this.OPTIONS);
return data;
}
@ -49,7 +48,7 @@ class StorageServiceApi {
* @returns {Promise<Store>} - Возвращает вновь созданный элемент
*/
create = async (createData) => {
const {data} = await axios.post(this.URL, createData, this.OPTIONS);
const {data} = await http.post(this.URL, createData, this.OPTIONS);
return data;
}
@ -59,7 +58,7 @@ class StorageServiceApi {
* @returns {Promise<Store>} - Возвращает обновленный элемент
*/
update = async (updateData) => {
const {data} = await axios.put(this.URL, updateData, this.OPTIONS);
const {data} = await http.put(this.URL, updateData, this.OPTIONS);
return data;
}
@ -69,7 +68,7 @@ class StorageServiceApi {
* @returns {Promise<Store>} - Возвращает удаленный элемент
*/
remove = async (key) => {
const {data} = await axios.delete(`${this.URL}/${key}`, this.OPTIONS);
const {data} = await http.delete(`${this.URL}/${key}`, null, this.OPTIONS);
return data;
}
}

View File

@ -33,14 +33,14 @@ class TokenApi {
* Возвращает токен авторизации
*/
getAccessToken = () => {
return this.localApi.request();
return this.sessionApi.request();
}
/**
* Возвращает токен ревреша авторизации
*/
getRefreshToken = () => {
return this.sessionApi.request();
return this.localApi.request();
}
/**

View File

@ -39,7 +39,7 @@ export const AUTH_SERVICE = 'http://api.auth.vigdorov.ru';
export const AUTH_ENDPOINTS = {
AUTH: '/auth',
REFRESH: '/refresh',
REFRESH: '/auth/refresh',
};
export const LOCAL_STORAGE_TYPE = {