Shaurya2020's picture
feat: lib/api.js axios wrapper with AES + JWT
719cebe verified
Raw History Blame Contribute Delete
860 Bytes
// Axios wrapper: JWT bearer + AES envelope (auto encrypt/decrypt).
import axios from 'axios';
import { encrypt, decrypt, aesEnabled } from './aes.js';
const api = axios.create({ baseURL: '', timeout: 15000 });
api.interceptors.request.use(cfg => {
const t = localStorage.getItem(cfg.baseURL?.includes('/admin') ? 'admin_token' : 'player_token');
if (t) cfg.headers.Authorization = `Bearer ${t}`;
if (cfg.data && aesEnabled) cfg.data = encrypt(cfg.data);
return cfg;
});
api.interceptors.response.use(res => {
if (aesEnabled && res.data) res.data = decrypt(res.data);
return res;
}, err => {
if (err.response?.status === 401) {
localStorage.removeItem('admin_token');
localStorage.removeItem('player_token');
if (typeof window !== 'undefined') window.location.href = '/';
}
return Promise.reject(err);
});
export default api;