From 2c943919fab7c7ccc88b57a7d3d52c41597c5eff Mon Sep 17 00:00:00 2001 From: Aren Date: Tue, 16 Apr 2024 18:39:22 +0400 Subject: [PATCH] delet some stuf --- lib/TokenService.ts | 23 ------- lib/axiosInterceptor.ts | 126 +-------------------------------------- lib/jwtParser.ts | 9 --- lib/userAuthApiClient.ts | 31 ---------- models/AuthData.ts | 7 --- 5 files changed, 1 insertion(+), 195 deletions(-) delete mode 100644 lib/TokenService.ts delete mode 100644 lib/jwtParser.ts delete mode 100644 lib/userAuthApiClient.ts delete mode 100644 models/AuthData.ts diff --git a/lib/TokenService.ts b/lib/TokenService.ts deleted file mode 100644 index 395b88c..0000000 --- a/lib/TokenService.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { AuthData } from "@/models/AuthData"; -import { checkStorageIsAvailable } from "../helpers/storageAvailable"; - -class TokenService { - getAuthData(): (AuthData | undefined | null) { - return checkStorageIsAvailable('localStorage') ? (JSON.parse((window?.localStorage?.getItem("authData") || "null"))) : undefined; - } - setAuthData(data: any) { - checkStorageIsAvailable('localStorage') && localStorage.setItem("authData", JSON.stringify(data)); - } - getCodeNextTime(): Date | undefined { - return checkStorageIsAvailable('localStorage') ? JSON.parse((window?.localStorage?.getItem("codeNextTime") || "null")) : undefined; - } - setCodeNextTime(time: string) { - checkStorageIsAvailable('localStorage') && localStorage.setItem("codeNextTime", JSON.stringify(time)); - } - removeAuthData() { - checkStorageIsAvailable('localStorage') && localStorage.removeItem("authData"); - } -} - -let tokenService = new TokenService(); -export default tokenService; \ No newline at end of file diff --git a/lib/axiosInterceptor.ts b/lib/axiosInterceptor.ts index d2f2347..af47784 100644 --- a/lib/axiosInterceptor.ts +++ b/lib/axiosInterceptor.ts @@ -1,128 +1,4 @@ import axios from "axios"; -import { parseJwt } from "./jwtParser"; -import TokenService from "./TokenService"; -import { AuthRefreshFailedError } from './Errors/AuthRefreshFailedError'; - -type TokenStates = { - AccessTokenExpires: number; - RefreshTokenExpires: number; - RefreshingToken: boolean; -} - -const refreshTokenState: TokenStates = { - AccessTokenExpires: 0, - RefreshTokenExpires: 0, - RefreshingToken: false, -} - -export const InitializeAuthInstance = (baseURL?: string) => { - - const instance = axios.create({ - baseURL: baseURL || "", - headers: { - "Content-Type": "application/json", - }, - }); - - async function RefreshAccessToken(refresh_token: string): Promise { - try { - refreshTokenState.RefreshingToken = true - - const params = new URLSearchParams(); - params.append('client_id', 'layerswap_bridge_ui'); - params.append('grant_type', 'refresh_token'); - params.append('refresh_token', refresh_token); - - const rs = await instance.post("/connect/token", params, { headers: { 'Accept': "application/json, text/plain, */*", 'Content-Type': "application/x-www-form-urlencoded;charset=UTF-8", 'Access-Control-Allow-Origin': '*' } }); - const res = rs.data; - const { exp } = parseJwt(res.access_token) || {} - refreshTokenState.AccessTokenExpires = exp - TokenService.setAuthData(res) - return true - } - catch { - TokenService.removeAuthData() - return false - } - finally { - refreshTokenState.RefreshingToken = false - } - } - - instance.interceptors.request.use( - async (config) => { - const authData = TokenService.getAuthData() - let access_token = authData?.access_token; - let refresh_token = authData?.refresh_token; - - if (!refreshTokenState.AccessTokenExpires && access_token && refresh_token) { - const { exp } = parseJwt(access_token) || {} - if (exp) - refreshTokenState.AccessTokenExpires = exp - } - - if (refresh_token && !refreshTokenState.RefreshingToken && refreshTokenState.AccessTokenExpires < Math.floor(Date.now() * 0.001)) { - let couldRefresh = await RefreshAccessToken(refresh_token) - if (!couldRefresh) { - return Promise.reject(new AuthRefreshFailedError()); - } - } - - let token = TokenService.getAuthData()?.access_token; - const apiKey = process.env.NEXT_PUBLIC_API_KEY - - if (apiKey) { - config.headers["X-LS-APIKEY"] = apiKey - } else { - throw new Error("NEXT_PUBLIC_API_KEY is not set up in env vars") - } - - if (token) { - config.headers["Authorization"] = 'Bearer ' + token; - - } - return config; - }, - (error) => { - return Promise.reject(error); - } - ); - - instance.interceptors.response.use( - (res) => { - return res; - }, - async (err) => { - const originalConfig = err.config; - if (err?.response?.status === 401 || err?.response?.status === 403) { - if (!originalConfig._retry && !refreshTokenState.RefreshingToken) { - originalConfig._retry = true; - const config = { ...originalConfig } - let goToAuth = false; - try { - const refresh_token = TokenService.getAuthData()?.refresh_token - if (refresh_token) { - const couldRefreshToken = await RefreshAccessToken(refresh_token); - if (couldRefreshToken) { - return instance(config); - } - } - goToAuth = true; - } catch (_error) { - goToAuth = true; - } - - if (goToAuth) { - return Promise.reject(new AuthRefreshFailedError()); - } - } - } - return Promise.reject(err); - } - ); - - return instance; -} export const InitializeUnauthInstance = (baseURL?: string) => { @@ -153,4 +29,4 @@ export const InitializeUnauthInstance = (baseURL?: string) => { } -export default InitializeAuthInstance; \ No newline at end of file +export default InitializeUnauthInstance; \ No newline at end of file diff --git a/lib/jwtParser.ts b/lib/jwtParser.ts deleted file mode 100644 index 84cffef..0000000 --- a/lib/jwtParser.ts +++ /dev/null @@ -1,9 +0,0 @@ -export function parseJwt (token: string) { - var base64Url = token.split('.')[1]; - var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/'); - var jsonPayload = decodeURIComponent(Buffer.from(base64, 'base64').toString('latin1').split('').map(function(c) { - return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); - }).join('')); - - return JSON.parse(jsonPayload); -}; \ No newline at end of file diff --git a/lib/userAuthApiClient.ts b/lib/userAuthApiClient.ts deleted file mode 100644 index b7ba960..0000000 --- a/lib/userAuthApiClient.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { AuthConnectResponse, AuthGetCodeResponse } from "@/models/LayerSwapAuth"; -import axios from "axios"; - -export default class LayerSwapAuthApiClient { - static identityBaseEndpoint: string; - - async getCodeAsync(email: string): Promise { - return await axios.post(LayerSwapAuthApiClient.identityBaseEndpoint + '/api/auth/get_code', - { email }, - { headers: { 'Access-Control-Allow-Origin': '*' } }) - .then(res => res.data); - } - - async connectAsync(email: string, code: string): Promise { - const params = new URLSearchParams(); - params.append('client_id', 'layerswap_bridge_ui'); - params.append('grant_type', 'passwordless'); - params.append('email', email); - params.append('code', code); - - return await axios.post(LayerSwapAuthApiClient.identityBaseEndpoint + '/connect/token', params, { headers: { 'Access-Control-Allow-Origin': '*' } }).then(res => res.data); - } - - async guestConnectAsync(): Promise { - const params = new URLSearchParams(); - params.append('client_id', 'layerswap_bridge_ui'); - params.append('grant_type', 'credentialless'); - - return await axios.post(LayerSwapAuthApiClient.identityBaseEndpoint + '/connect/token', params, { headers: { 'Access-Control-Allow-Origin': '*' } }).then(res => res.data); - } -} diff --git a/models/AuthData.ts b/models/AuthData.ts deleted file mode 100644 index c34aeb0..0000000 --- a/models/AuthData.ts +++ /dev/null @@ -1,7 +0,0 @@ -export type AuthData = { - access_token?: string, - expires_in?: number, - refresh_token?: string, - scope?: string, - token_type?: string, -} \ No newline at end of file