feat: add cookie management and HTTP client for user and admin authentication

This commit is contained in:
Ardeman
2025-02-25 08:51:08 +08:00
parent 0c38a775e3
commit c1bacacb49
7 changed files with 120 additions and 13 deletions
+13
View File
@@ -0,0 +1,13 @@
import { createCookie } from 'react-router'
import { ADMIN_COOKIES, USER_COOKIES } from '~/configs/storages'
export const userTokenCookie = createCookie(USER_COOKIES.token, {
secure: process.env.NODE_ENV === 'production',
path: '/news',
})
export const adminTokenCookie = createCookie(ADMIN_COOKIES.token, {
secure: process.env.NODE_ENV === 'production',
path: '/admin',
})
+31
View File
@@ -0,0 +1,31 @@
import xior, { merge } from 'xior'
const baseURL = import.meta.env.VITE_API_URL
const HttpClient = (token?: string) => {
const instance = xior.create({
baseURL,
})
instance.interceptors.request.use((config) => {
// eslint-disable-next-line no-console
console.info(`🚀requesting ${config.url}`)
return merge(config, {
headers: {
...(token && { Authorization: `Bearer ${token}` }),
},
})
})
instance.interceptors.response.use(
(response) => {
return response
},
(error) => {
return Promise.reject(error)
},
)
return instance
}
export default HttpClient
+11
View File
@@ -0,0 +1,11 @@
import { USER_COOKIES } from '~/configs/storages'
export const setUserLogoutHeaders = () => {
const responseHeaders = new Headers()
responseHeaders.append(
'Set-Cookie',
`${USER_COOKIES.token}=; Path=/news; Max-Age=0`,
)
return responseHeaders
}