Ott 207 sending jwt (#33)

keep-around/af30b88d367751c9e05a735e4a0467a96238ef47
Mirlan 6 years ago committed by GitHub
parent 9669fe14d7
commit 9f766476c6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 8
      src/config/authKeys.tsx
  2. 6
      src/helpers/callApi/clearUserAuthInfo.tsx
  3. 8
      src/helpers/callApi/getRequestConfig.tsx
  4. 6
      src/helpers/callApi/index.tsx
  5. 15
      src/helpers/callApi/logoutIfUnauthorized.tsx
  6. 11
      src/helpers/callApi/removeCookie.tsx
  7. 6
      src/helpers/callApi/types.tsx
  8. 29
      src/requests/login.tsx

@ -1,7 +1 @@
export const AUTH_KEYS = { export const TOKEN_KEY = 'auth_token'
authUser: 'AuthUser',
backLocation: 'backLocation',
cookieToken: 'token',
headerToken: 'x-auth-token',
idToken: 'id_token',
}

@ -1,6 +0,0 @@
import { AUTH_KEYS } from 'config'
export const clearUserAuthInfo = () => {
localStorage.removeItem(AUTH_KEYS.idToken)
localStorage.removeItem(AUTH_KEYS.authUser)
}

@ -1,10 +1,10 @@
import { AUTH_KEYS } from 'config' import { TOKEN_KEY } from 'config'
import { readToken } from 'helpers' import { readToken } from 'helpers'
import { TRequestConfig } from './types' import type { RequestConfig } from './types'
export const getRequestConfig = ( export const getRequestConfig = (
config: TRequestConfig, config: RequestConfig,
signal?: AbortSignal, signal?: AbortSignal,
) => { ) => {
const requestConfig = { const requestConfig = {
@ -22,7 +22,7 @@ export const getRequestConfig = (
const token = readToken() const token = readToken()
if (token) { if (token) {
requestConfig.headers.set(AUTH_KEYS.headerToken, token) requestConfig.headers.set(TOKEN_KEY, token)
} }
return requestConfig return requestConfig

@ -1,4 +1,4 @@
import { TCallApi } from './types' import type { CallApiArgs } from './types'
import { parseJSON } from './parseJSON' import { parseJSON } from './parseJSON'
import { checkStatus } from './checkStatus' import { checkStatus } from './checkStatus'
import { getRequestConfig } from './getRequestConfig' import { getRequestConfig } from './getRequestConfig'
@ -8,7 +8,7 @@ export const callApiBase = ({
abortSignal, abortSignal,
config, config,
url, url,
}: TCallApi) => { }: CallApiArgs) => {
const requestConfig = getRequestConfig(config, abortSignal) const requestConfig = getRequestConfig(config, abortSignal)
// eslint-disable-next-line no-console // eslint-disable-next-line no-console
@ -25,7 +25,7 @@ export const callApi = ({
abortSignal, abortSignal,
config, config,
url, url,
}: TCallApi) => ( }: CallApiArgs) => (
callApiBase({ callApiBase({
abortSignal, abortSignal,
config, config,

@ -1,20 +1,11 @@
import { AUTH_KEYS, PAGES } from 'config' import { PAGES } from 'config'
import { removeToken } from 'helpers'
import { removeCookie } from './removeCookie'
import { clearUserAuthInfo } from './clearUserAuthInfo'
export const logoutIfUnauthorized = (error: Error) => { export const logoutIfUnauthorized = (error: Error) => {
if (error.message === 'Unauthorized') { if (error.message === 'Unauthorized') {
clearUserAuthInfo() removeToken()
removeCookie(AUTH_KEYS.cookieToken)
const { pathname } = window.location
if (pathname !== PAGES.login) {
localStorage.setItem(AUTH_KEYS.backLocation, pathname)
window.location.pathname = PAGES.login window.location.pathname = PAGES.login
} }
}
// eslint-disable-next-line no-console // eslint-disable-next-line no-console
console.error(error) console.error(error)

@ -1,11 +0,0 @@
export const removeCookie = (
name: string,
domain: string = '.instatscout.com',
) => {
document.cookie = `
${name}=;
expires='Thu, 01 Jan 1970 00:00:00 UTC';
path=/;
domain=${domain}
`
}

@ -1,11 +1,11 @@
export type TRequestConfig = { export type RequestConfig = {
body?: any, body?: any,
headers?: Headers, headers?: Headers,
method?: string, method?: string,
} }
export type TCallApi = { export type CallApiArgs = {
abortSignal?: AbortSignal, abortSignal?: AbortSignal,
config: TRequestConfig, config: RequestConfig,
url: string, url: string,
} }

@ -1,5 +1,11 @@
import { DATA_URL, PROCEDURES } from 'config' import {
import { callApi, writeToken } from 'helpers' DATA_URL,
PROCEDURES,
TOKEN_KEY,
} from 'config'
import { callApiBase } from 'helpers/callApi'
import { checkStatus } from 'helpers/callApi/checkStatus'
import { parseJSON } from 'helpers/callApi/parseJSON'
const proc = PROCEDURES.auth_user const proc = PROCEDURES.auth_user
@ -15,7 +21,6 @@ type StatusCodes = typeof statusCodes[keyof typeof statusCodes]
type Response = { type Response = {
_p_status: StatusCodes, _p_status: StatusCodes,
_p_token: string,
} }
type Args = { type Args = {
@ -37,15 +42,21 @@ export const login = async ({
}, },
} }
const response: Response = await callApi({ try {
const response = await callApiBase({
config, config,
url: DATA_URL, url: DATA_URL,
}) })
checkStatus(response)
if (response._p_status === statusCodes.SUCCESS) { const token = response.headers.get(TOKEN_KEY)
writeToken(response._p_token) const { _p_status }: Response = await parseJSON(response)
return Promise.resolve(response._p_token)
}
return Promise.reject(response._p_status) if (token && _p_status === statusCodes.SUCCESS) {
return Promise.resolve(token)
}
return Promise.reject(_p_status)
} catch (error) {
return Promise.reject()
}
} }

Loading…
Cancel
Save