Refactor setUserToken into two methods
This refactors `setUserToken` into `accountCookie`, which just returns a cookie if it exists, and `setHeaders`, which sets the Axios header defaults. Then, we update the calls in all the required files.
This commit is contained in:
parent
714acbed35
commit
d32293995b
10 changed files with 31 additions and 24 deletions
|
|
@ -5,7 +5,7 @@ import { useTranslation } from 'react-i18next'
|
||||||
import axios, { AxiosError, AxiosResponse } from 'axios'
|
import axios, { AxiosError, AxiosResponse } from 'axios'
|
||||||
|
|
||||||
import api from '~utils/api'
|
import api from '~utils/api'
|
||||||
import setUserToken from '~utils/setUserToken'
|
import { setHeaders } from '~utils/userToken'
|
||||||
import { accountState } from '~utils/accountState'
|
import { accountState } from '~utils/accountState'
|
||||||
|
|
||||||
import Button from '~components/Button'
|
import Button from '~components/Button'
|
||||||
|
|
@ -147,7 +147,7 @@ const LoginModal = (props: Props) => {
|
||||||
setCookie('account', cookieObj, { path: '/', expires: expiresAt })
|
setCookie('account', cookieObj, { path: '/', expires: expiresAt })
|
||||||
|
|
||||||
// Set Axios default headers
|
// Set Axios default headers
|
||||||
setUserToken()
|
setHeaders()
|
||||||
}
|
}
|
||||||
|
|
||||||
function storeUserInfo(response: AxiosResponse) {
|
function storeUserInfo(response: AxiosResponse) {
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import { useTranslation } from 'next-i18next'
|
||||||
import { AxiosResponse } from 'axios'
|
import { AxiosResponse } from 'axios'
|
||||||
|
|
||||||
import api from '~utils/api'
|
import api from '~utils/api'
|
||||||
import setUserToken from '~utils/setUserToken'
|
import { setHeaders } from '~utils/userToken'
|
||||||
import { accountState } from '~utils/accountState'
|
import { accountState } from '~utils/accountState'
|
||||||
|
|
||||||
import Button from '~components/Button'
|
import Button from '~components/Button'
|
||||||
|
|
@ -103,7 +103,7 @@ const SignupModal = (props: Props) => {
|
||||||
setCookie('account', cookieObj, { path: '/', expires: expiresAt })
|
setCookie('account', cookieObj, { path: '/', expires: expiresAt })
|
||||||
|
|
||||||
// Set Axios default headers
|
// Set Axios default headers
|
||||||
setUserToken()
|
setHeaders()
|
||||||
}
|
}
|
||||||
|
|
||||||
function fetchUserInfo(id: string) {
|
function fetchUserInfo(id: string) {
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import api from '~utils/api'
|
||||||
import extractFilters from '~utils/extractFilters'
|
import extractFilters from '~utils/extractFilters'
|
||||||
import fetchLatestVersion from '~utils/fetchLatestVersion'
|
import fetchLatestVersion from '~utils/fetchLatestVersion'
|
||||||
import organizeRaids from '~utils/organizeRaids'
|
import organizeRaids from '~utils/organizeRaids'
|
||||||
import setUserToken from '~utils/setUserToken'
|
import { setHeaders } from '~utils/userToken'
|
||||||
import useDidMountEffect from '~utils/useDidMountEffect'
|
import useDidMountEffect from '~utils/useDidMountEffect'
|
||||||
import { appState } from '~utils/appState'
|
import { appState } from '~utils/appState'
|
||||||
import { elements, allElement } from '~data/elements'
|
import { elements, allElement } from '~data/elements'
|
||||||
|
|
@ -329,7 +329,7 @@ export const getServerSidePaths = async () => {
|
||||||
// prettier-ignore
|
// prettier-ignore
|
||||||
export const getServerSideProps = async ({ req, res, locale, query }: { req: NextApiRequest, res: NextApiResponse, locale: string, query: { [index: string]: string } }) => {
|
export const getServerSideProps = async ({ req, res, locale, query }: { req: NextApiRequest, res: NextApiResponse, locale: string, query: { [index: string]: string } }) => {
|
||||||
// Set headers for server-side requests
|
// Set headers for server-side requests
|
||||||
setUserToken(req, res)
|
setHeaders(req, res)
|
||||||
|
|
||||||
// Fetch latest version
|
// Fetch latest version
|
||||||
const version = await fetchLatestVersion()
|
const version = await fetchLatestVersion()
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import type { AppProps } from 'next/app'
|
||||||
import Layout from '~components/Layout'
|
import Layout from '~components/Layout'
|
||||||
|
|
||||||
import { accountState } from '~utils/accountState'
|
import { accountState } from '~utils/accountState'
|
||||||
import setUserToken from '~utils/setUserToken'
|
import { setHeaders } from '~utils/userToken'
|
||||||
|
|
||||||
import '../styles/globals.scss'
|
import '../styles/globals.scss'
|
||||||
import { ToastProvider, Viewport } from '@radix-ui/react-toast'
|
import { ToastProvider, Viewport } from '@radix-ui/react-toast'
|
||||||
|
|
@ -23,9 +23,9 @@ function MyApp({ Component, pageProps }: AppProps) {
|
||||||
}
|
}
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setUserToken()
|
|
||||||
|
|
||||||
if (accountCookie) {
|
if (accountCookie) {
|
||||||
|
setHeaders()
|
||||||
console.log(`Logged in as user "${cookieData.account.username}"`)
|
console.log(`Logged in as user "${cookieData.account.username}"`)
|
||||||
|
|
||||||
accountState.account.authorized = true
|
accountState.account.authorized = true
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import { useTranslation } from 'next-i18next'
|
||||||
import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
|
import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
|
||||||
|
|
||||||
import { AboutTabs } from '~utils/enums'
|
import { AboutTabs } from '~utils/enums'
|
||||||
import setUserToken from '~utils/setUserToken'
|
import { setHeaders } from '~utils/userToken'
|
||||||
|
|
||||||
import AboutPage from '~components/AboutPage'
|
import AboutPage from '~components/AboutPage'
|
||||||
import UpdatesPage from '~components/UpdatesPage'
|
import UpdatesPage from '~components/UpdatesPage'
|
||||||
|
|
@ -160,7 +160,7 @@ export const getServerSidePaths = async () => {
|
||||||
// prettier-ignore
|
// prettier-ignore
|
||||||
export const getServerSideProps = async ({ req, res, locale, query }: { req: NextApiRequest, res: NextApiResponse, locale: string, query: { [index: string]: string } }) => {
|
export const getServerSideProps = async ({ req, res, locale, query }: { req: NextApiRequest, res: NextApiResponse, locale: string, query: { [index: string]: string } }) => {
|
||||||
// Set headers for server-side requests
|
// Set headers for server-side requests
|
||||||
setUserToken(req, res)
|
setHeaders(req, res)
|
||||||
|
|
||||||
// Fetch and organize raids
|
// Fetch and organize raids
|
||||||
return {
|
return {
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import NewHead from '~components/NewHead'
|
||||||
import api from '~utils/api'
|
import api from '~utils/api'
|
||||||
import fetchLatestVersion from '~utils/fetchLatestVersion'
|
import fetchLatestVersion from '~utils/fetchLatestVersion'
|
||||||
import organizeRaids from '~utils/organizeRaids'
|
import organizeRaids from '~utils/organizeRaids'
|
||||||
import setUserToken from '~utils/setUserToken'
|
import { accountCookie, setHeaders } from '~utils/userToken'
|
||||||
import { appState, initialAppState } from '~utils/appState'
|
import { appState, initialAppState } from '~utils/appState'
|
||||||
import { groupWeaponKeys } from '~utils/groupWeaponKeys'
|
import { groupWeaponKeys } from '~utils/groupWeaponKeys'
|
||||||
|
|
||||||
|
|
@ -119,8 +119,8 @@ export const getServerSidePaths = async () => {
|
||||||
|
|
||||||
// prettier-ignore
|
// prettier-ignore
|
||||||
export const getServerSideProps = async ({ req, res, locale, query }: { req: NextApiRequest, res: NextApiResponse, locale: string, query: { [index: string]: string } }) => {
|
export const getServerSideProps = async ({ req, res, locale, query }: { req: NextApiRequest, res: NextApiResponse, locale: string, query: { [index: string]: string } }) => {
|
||||||
// Set headers for server-side requests
|
// Set headers for API calls
|
||||||
setUserToken(req, res)
|
setHeaders(req, res)
|
||||||
|
|
||||||
// Fetch latest version
|
// Fetch latest version
|
||||||
const version = await fetchLatestVersion()
|
const version = await fetchLatestVersion()
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import api from '~utils/api'
|
||||||
import elementEmoji from '~utils/elementEmoji'
|
import elementEmoji from '~utils/elementEmoji'
|
||||||
import fetchLatestVersion from '~utils/fetchLatestVersion'
|
import fetchLatestVersion from '~utils/fetchLatestVersion'
|
||||||
import organizeRaids from '~utils/organizeRaids'
|
import organizeRaids from '~utils/organizeRaids'
|
||||||
import setUserToken from '~utils/setUserToken'
|
import { setHeaders } from '~utils/userToken'
|
||||||
import { appState } from '~utils/appState'
|
import { appState } from '~utils/appState'
|
||||||
import { groupWeaponKeys } from '~utils/groupWeaponKeys'
|
import { groupWeaponKeys } from '~utils/groupWeaponKeys'
|
||||||
|
|
||||||
|
|
@ -108,7 +108,7 @@ export const getServerSidePaths = async () => {
|
||||||
// prettier-ignore
|
// prettier-ignore
|
||||||
export const getServerSideProps = async ({ req, res, locale, query }: { req: NextApiRequest, res: NextApiResponse, locale: string, query: { [index: string]: string } }) => {
|
export const getServerSideProps = async ({ req, res, locale, query }: { req: NextApiRequest, res: NextApiResponse, locale: string, query: { [index: string]: string } }) => {
|
||||||
// Set headers for server-side requests
|
// Set headers for server-side requests
|
||||||
setUserToken(req, res)
|
setHeaders(req, res)
|
||||||
|
|
||||||
// Fetch latest version
|
// Fetch latest version
|
||||||
const version = await fetchLatestVersion()
|
const version = await fetchLatestVersion()
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
|
||||||
import clonedeep from 'lodash.clonedeep'
|
import clonedeep from 'lodash.clonedeep'
|
||||||
|
|
||||||
import api from '~utils/api'
|
import api from '~utils/api'
|
||||||
import setUserToken from '~utils/setUserToken'
|
import { setHeaders } from '~utils/userToken'
|
||||||
import extractFilters from '~utils/extractFilters'
|
import extractFilters from '~utils/extractFilters'
|
||||||
import fetchLatestVersion from '~utils/fetchLatestVersion'
|
import fetchLatestVersion from '~utils/fetchLatestVersion'
|
||||||
import organizeRaids from '~utils/organizeRaids'
|
import organizeRaids from '~utils/organizeRaids'
|
||||||
|
|
@ -363,7 +363,7 @@ export const getServerSidePaths = async () => {
|
||||||
// prettier-ignore
|
// prettier-ignore
|
||||||
export const getServerSideProps = async ({ req, res, locale, query }: { req: NextApiRequest, res: NextApiResponse, locale: string, query: { [index: string]: string } }) => {
|
export const getServerSideProps = async ({ req, res, locale, query }: { req: NextApiRequest, res: NextApiResponse, locale: string, query: { [index: string]: string } }) => {
|
||||||
// Set headers for server-side requests
|
// Set headers for server-side requests
|
||||||
setUserToken(req, res)
|
setHeaders(req, res)
|
||||||
|
|
||||||
// Fetch latest version
|
// Fetch latest version
|
||||||
const version = await fetchLatestVersion()
|
const version = await fetchLatestVersion()
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
|
||||||
import clonedeep from 'lodash.clonedeep'
|
import clonedeep from 'lodash.clonedeep'
|
||||||
|
|
||||||
import api from '~utils/api'
|
import api from '~utils/api'
|
||||||
import setUserToken from '~utils/setUserToken'
|
import { setHeaders } from '~utils/userToken'
|
||||||
import extractFilters from '~utils/extractFilters'
|
import extractFilters from '~utils/extractFilters'
|
||||||
import fetchLatestVersion from '~utils/fetchLatestVersion'
|
import fetchLatestVersion from '~utils/fetchLatestVersion'
|
||||||
import organizeRaids from '~utils/organizeRaids'
|
import organizeRaids from '~utils/organizeRaids'
|
||||||
|
|
@ -363,7 +363,7 @@ export const getServerSidePaths = async () => {
|
||||||
// prettier-ignore
|
// prettier-ignore
|
||||||
export const getServerSideProps = async ({ req, res, locale, query }: { req: NextApiRequest, res: NextApiResponse, locale: string, query: { [index: string]: string } }) => {
|
export const getServerSideProps = async ({ req, res, locale, query }: { req: NextApiRequest, res: NextApiResponse, locale: string, query: { [index: string]: string } }) => {
|
||||||
// Set headers for server-side requests
|
// Set headers for server-side requests
|
||||||
setUserToken(req, res)
|
setHeaders(req, res)
|
||||||
|
|
||||||
// Fetch latest version
|
// Fetch latest version
|
||||||
const version = await fetchLatestVersion()
|
const version = await fetchLatestVersion()
|
||||||
|
|
|
||||||
|
|
@ -2,17 +2,24 @@ import axios from 'axios'
|
||||||
import { getCookie } from 'cookies-next'
|
import { getCookie } from 'cookies-next'
|
||||||
import type { NextApiRequest, NextApiResponse } from 'next'
|
import type { NextApiRequest, NextApiResponse } from 'next'
|
||||||
|
|
||||||
export default (
|
export const accountCookie = (
|
||||||
req: NextApiRequest | undefined = undefined,
|
req: NextApiRequest | undefined = undefined,
|
||||||
res: NextApiResponse | undefined = undefined
|
res: NextApiResponse | undefined = undefined
|
||||||
) => {
|
) => {
|
||||||
// Set up cookies
|
|
||||||
const options = req && res ? { req, res } : {}
|
const options = req && res ? { req, res } : {}
|
||||||
const cookie = getCookie('account', options)
|
const cookie = getCookie('account', options)
|
||||||
|
return cookie ? cookie : undefined
|
||||||
|
}
|
||||||
|
|
||||||
|
export const setHeaders = (
|
||||||
|
req: NextApiRequest | undefined = undefined,
|
||||||
|
res: NextApiResponse | undefined = undefined
|
||||||
|
) => {
|
||||||
|
const cookie = accountCookie(req, res)
|
||||||
if (cookie) {
|
if (cookie) {
|
||||||
axios.defaults.headers.common['Authorization'] = `Bearer ${
|
const parsed = JSON.parse(cookie as string)
|
||||||
JSON.parse(cookie as string).token
|
if (parsed.token)
|
||||||
}`
|
axios.defaults.headers.common['Authorization'] = `Bearer ${parsed.token}`
|
||||||
} else {
|
} else {
|
||||||
delete axios.defaults.headers.common['Authorization']
|
delete axios.defaults.headers.common['Authorization']
|
||||||
}
|
}
|
||||||
Loading…
Reference in a new issue