Add new vue-based frontend
This commit is contained in:
32
packages/sshecret-frontend/src/api/interceptors.ts
Normal file
32
packages/sshecret-frontend/src/api/interceptors.ts
Normal file
@ -0,0 +1,32 @@
|
||||
import { client } from '@/client/client.gen'
|
||||
import { useAuthTokenStore } from '@/store/auth.ts'
|
||||
|
||||
|
||||
client.instance.interceptors.response.use(
|
||||
response => response,
|
||||
async error => {
|
||||
|
||||
const originalRequest = error.config
|
||||
console.log(originalRequest)
|
||||
if (originalRequest.url.includes("/refresh")) {
|
||||
const auth = useAuthTokenStore()
|
||||
auth.logout()
|
||||
return Promise.reject("Refresh failed - logged out")
|
||||
}
|
||||
if (error.response?.status === 401 && !originalRequest._retry) {
|
||||
originalRequest._retry = true
|
||||
console.log("Got 401")
|
||||
const auth = useAuthTokenStore()
|
||||
if (auth.isLoggedIn) {
|
||||
const refreshed = await auth.refresh()
|
||||
if (refreshed) {
|
||||
return client.instance.request(error.config)
|
||||
}
|
||||
auth.logout()
|
||||
return Promise.reject("Could not refresh token")
|
||||
}
|
||||
return Promise.reject("Could not refresh token")
|
||||
}
|
||||
return Promise.reject("Could not refresh token")
|
||||
}
|
||||
)
|
||||
14
packages/sshecret-frontend/src/api/types.ts
Normal file
14
packages/sshecret-frontend/src/api/types.ts
Normal file
@ -0,0 +1,14 @@
|
||||
export type PageRequest = {
|
||||
offset: number;
|
||||
limit: number;
|
||||
}
|
||||
|
||||
export enum SshecretObjectType {
|
||||
Client = "Client",
|
||||
ClientSecret = "ClientSecret",
|
||||
}
|
||||
|
||||
export type SshecretObject = {
|
||||
objectType: SshecretObjectType,
|
||||
id: string,
|
||||
}
|
||||
Reference in New Issue
Block a user