mirror of
https://github.com/Myzel394/kleckrelay-website.git
synced 2025-06-20 00:05:26 +02:00
added ReservedAliasesForm.tsx
This commit is contained in:
parent
517b49a5c4
commit
fde7705850
@ -279,6 +279,9 @@
|
|||||||
"LogoutRoute": {
|
"LogoutRoute": {
|
||||||
"title": "Log out",
|
"title": "Log out",
|
||||||
"description": "We are logging you out..."
|
"description": "We are logging you out..."
|
||||||
|
},
|
||||||
|
"AdminRoute": {
|
||||||
|
"title": "Site configuration"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -287,7 +290,8 @@
|
|||||||
"overview": "Overview",
|
"overview": "Overview",
|
||||||
"aliases": "Aliases",
|
"aliases": "Aliases",
|
||||||
"reports": "Reports",
|
"reports": "Reports",
|
||||||
"settings": "Settings"
|
"settings": "Settings",
|
||||||
|
"admin": "Admin"
|
||||||
},
|
},
|
||||||
"AuthenticateRoute": {
|
"AuthenticateRoute": {
|
||||||
"signup": "Sign up",
|
"signup": "Sign up",
|
||||||
|
@ -24,6 +24,7 @@ import SettingsRoute from "~/routes/SettingsRoute"
|
|||||||
import SignupRoute from "~/routes/SignupRoute"
|
import SignupRoute from "~/routes/SignupRoute"
|
||||||
import VerifyEmailRoute from "~/routes/VerifyEmailRoute"
|
import VerifyEmailRoute from "~/routes/VerifyEmailRoute"
|
||||||
|
|
||||||
|
import AdminRoute from "~/routes/AdminRoute"
|
||||||
import I18nHandler from "./I18nHandler"
|
import I18nHandler from "./I18nHandler"
|
||||||
import "./init-i18n"
|
import "./init-i18n"
|
||||||
|
|
||||||
@ -101,7 +102,7 @@ const router = createBrowserRouter([
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/admin",
|
path: "/admin",
|
||||||
element: <EnterDecryptionPassword />,
|
element: <AdminRoute />,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
19
src/apis/get-admin-users.ts
Normal file
19
src/apis/get-admin-users.ts
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
import {client} from "~/constants/axios-client"
|
||||||
|
|
||||||
|
export interface GetAdminUsersResponse {
|
||||||
|
users: Array<{
|
||||||
|
id: string
|
||||||
|
email: {
|
||||||
|
id: string
|
||||||
|
address: string
|
||||||
|
}
|
||||||
|
}>
|
||||||
|
}
|
||||||
|
|
||||||
|
export default async function getAdminUsers(): Promise<GetAdminUsersResponse> {
|
||||||
|
const {data} = await client.get(`${import.meta.env.VITE_SERVER_BASE_URL}/v1/admin/users`, {
|
||||||
|
withCredentials: true,
|
||||||
|
})
|
||||||
|
|
||||||
|
return data
|
||||||
|
}
|
23
src/apis/get-reserved-aliases.ts
Normal file
23
src/apis/get-reserved-aliases.ts
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
import {GetPageData, PaginationResult, ReservedAlias} from "~/server-types"
|
||||||
|
import {client} from "~/constants/axios-client"
|
||||||
|
|
||||||
|
export interface GetReservedAliasesData extends GetPageData {
|
||||||
|
query?: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export default async function getReservedAliases({
|
||||||
|
query,
|
||||||
|
size,
|
||||||
|
page,
|
||||||
|
}: GetReservedAliasesData = {}): Promise<PaginationResult<ReservedAlias>> {
|
||||||
|
const {data} = await client.get(`${import.meta.env.VITE_SERVER_BASE_URL}/v1/reserved-alias/`, {
|
||||||
|
withCredentials: true,
|
||||||
|
params: {
|
||||||
|
query,
|
||||||
|
size,
|
||||||
|
page,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
return data
|
||||||
|
}
|
@ -38,3 +38,7 @@ export * from "./delete-report"
|
|||||||
export {default as deleteReport} from "./delete-report"
|
export {default as deleteReport} from "./delete-report"
|
||||||
export * from "./get-me"
|
export * from "./get-me"
|
||||||
export {default as getMe} from "./get-me"
|
export {default as getMe} from "./get-me"
|
||||||
|
export * from "./get-admin-users"
|
||||||
|
export {default as getAdminUsers} from "./get-admin-users"
|
||||||
|
export * from "./get-reserved-aliases"
|
||||||
|
export {default as getReservedAliases} from "./get-reserved-aliases"
|
||||||
|
17
src/route-widgets/AdminPage/ReservedAliasesForm.tsx
Normal file
17
src/route-widgets/AdminPage/ReservedAliasesForm.tsx
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
import {ReactElement} from "react"
|
||||||
|
import {AxiosError} from "axios"
|
||||||
|
|
||||||
|
import {useQuery} from "@tanstack/react-query"
|
||||||
|
|
||||||
|
import {GetAdminUsersResponse, getAdminUsers} from "~/apis"
|
||||||
|
|
||||||
|
export interface ReservedAliasesFormProps {}
|
||||||
|
|
||||||
|
export default function ReservedAliasesForm({}: ReservedAliasesFormProps): ReactElement {
|
||||||
|
const {data: {users} = {}} = useQuery<GetAdminUsersResponse, AxiosError>(
|
||||||
|
["getAdminUsers"],
|
||||||
|
getAdminUsers,
|
||||||
|
)
|
||||||
|
|
||||||
|
console.log(users)
|
||||||
|
}
|
@ -1,15 +1,26 @@
|
|||||||
import {ReactElement, useLayoutEffect} from "react";
|
import {ReactElement, useLayoutEffect} from "react"
|
||||||
import {useNavigateToNext, useUser} from "~/hooks";
|
import {useTranslation} from "react-i18next"
|
||||||
|
|
||||||
|
import {SimplePageBuilder} from "~/components"
|
||||||
|
import {useNavigateToNext, useUser} from "~/hooks"
|
||||||
|
import ReservedAliasesForm from "~/route-widgets/AdminPage/ReservedAliasesForm"
|
||||||
|
import ReservedAliasesList from "~/route-widgets/AdminPage/ReservedAliasesList"
|
||||||
|
|
||||||
export default function AdminRoute(): ReactElement {
|
export default function AdminRoute(): ReactElement {
|
||||||
const navigateToNext = useNavigateToNext();
|
const {t} = useTranslation()
|
||||||
const user = useUser();
|
const navigateToNext = useNavigateToNext()
|
||||||
|
const user = useUser()
|
||||||
useLayoutEffect(() => {
|
|
||||||
if (!user.isAdmin) {
|
|
||||||
navigateToNext();
|
|
||||||
}
|
|
||||||
}, [user.isAdmin, navigateToNext])
|
|
||||||
|
|
||||||
|
useLayoutEffect(() => {
|
||||||
|
if (!user.isAdmin) {
|
||||||
|
navigateToNext()
|
||||||
|
}
|
||||||
|
}, [user.isAdmin, navigateToNext])
|
||||||
|
|
||||||
|
return (
|
||||||
|
<SimplePageBuilder.Page title={t("routes.AdminRoute.title")}>
|
||||||
|
<ReservedAliasesList />
|
||||||
|
<ReservedAliasesForm />
|
||||||
|
</SimplePageBuilder.Page>
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
@ -101,6 +101,16 @@ export interface Alias {
|
|||||||
prefExpandUrlShorteners: boolean | null
|
prefExpandUrlShorteners: boolean | null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface ReservedAlias {
|
||||||
|
id: string
|
||||||
|
domain: string
|
||||||
|
local: string
|
||||||
|
users: Array<{
|
||||||
|
id: string
|
||||||
|
email: string
|
||||||
|
}>
|
||||||
|
}
|
||||||
|
|
||||||
export interface AliasNote {
|
export interface AliasNote {
|
||||||
version: "1.0"
|
version: "1.0"
|
||||||
data: {
|
data: {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user