current stand

This commit is contained in:
Myzel394 2023-02-01 19:55:10 +01:00
parent 6a9aa24e2d
commit 517b49a5c4
4 changed files with 25 additions and 1 deletions

View File

@ -99,6 +99,10 @@ const router = createBrowserRouter([
loader: getServerSettings,
element: <EnterDecryptionPassword />,
},
{
path: "/admin",
element: <EnterDecryptionPassword />,
},
],
},
],

View File

@ -1,7 +1,7 @@
import {ReactElement, useContext} from "react"
import {BiStats} from "react-icons/bi"
import {MdSettings} from "react-icons/md"
import {FaMask} from "react-icons/fa"
import {FaMask, FaServer} from "react-icons/fa"
import {Link as RouterLink, useLocation} from "react-router-dom"
import {useTranslation} from "react-i18next"
@ -16,6 +16,7 @@ export enum NavigationSection {
Aliases,
Reports,
Settings,
Admin,
}
export interface NavigationButtonProps {
@ -27,6 +28,7 @@ const SECTION_ICON_MAP: Record<NavigationSection, ReactElement> = {
[NavigationSection.Aliases]: <FaMask />,
[NavigationSection.Reports]: <Icon path={mdiTextBoxMultiple} size={0.8} />,
[NavigationSection.Settings]: <MdSettings />,
[NavigationSection.Admin]: <FaServer />,
}
const SECTION_TEXT_MAP: Record<NavigationSection, string> = {
@ -34,6 +36,7 @@ const SECTION_TEXT_MAP: Record<NavigationSection, string> = {
[NavigationSection.Aliases]: "components.NavigationButton.aliases",
[NavigationSection.Reports]: "components.NavigationButton.reports",
[NavigationSection.Settings]: "components.NavigationButton.settings",
[NavigationSection.Admin]: "components.NavigationButton.admin",
}
const PATH_SECTION_MAP: Record<string, NavigationSection> = {
@ -41,6 +44,7 @@ const PATH_SECTION_MAP: Record<string, NavigationSection> = {
aliases: NavigationSection.Aliases,
reports: NavigationSection.Reports,
settings: NavigationSection.Settings,
admin: NavigationSection.Admin,
}
export default function NavigationButton({section}: NavigationButtonProps): ReactElement {

15
src/routes/AdminRoute.tsx Normal file
View File

@ -0,0 +1,15 @@
import {ReactElement, useLayoutEffect} from "react";
import {useNavigateToNext, useUser} from "~/hooks";
export default function AdminRoute(): ReactElement {
const navigateToNext = useNavigateToNext();
const user = useUser();
useLayoutEffect(() => {
if (!user.isAdmin) {
navigateToNext();
}
}, [user.isAdmin, navigateToNext])
}

View File

@ -41,6 +41,7 @@ export interface ServerUser {
isDecrypted: false
encryptedPassword: string
salt: string
isAdmin: boolean
email: {
address: string
isVerified: boolean