fix: hide admin settings tabs for members

Co-authored-by: naiba/CloudCode <hi+cloudcode@nai.ba>
This commit is contained in:
naiba
2026-05-16 00:46:15 +08:00
committed by GitHub
co-authored by naiba/CloudCode
parent f4696421ec
commit 2010d80914
3 changed files with 37 additions and 32 deletions
+29 -24
View File
@@ -55,6 +55,7 @@ export default function Header() {
const { t } = useTranslation() const { t } = useTranslation()
const { logout } = useAuth() const { logout } = useAuth()
const profile = useMainStore((store) => store.profile) const profile = useMainStore((store) => store.profile)
const isAdmin = profile?.role === 0
const location = useLocation() const location = useLocation()
const isDesktop = useMediaQuery("(min-width: 890px)") const isDesktop = useMediaQuery("(min-width: 890px)")
@@ -142,18 +143,20 @@ export default function Header() {
{t("Profile")} {t("Profile")}
</div> </div>
</DropdownMenuItem> </DropdownMenuItem>
<DropdownMenuItem {isAdmin && (
onClick={() => { <DropdownMenuItem
setDropdownOpen(false) onClick={() => {
navigate("/dashboard/settings") setDropdownOpen(false)
}} navigate("/dashboard/settings")
className="cursor-pointer" }}
> className="cursor-pointer"
<div className="flex items-center gap-2 w-full"> >
<Settings /> <div className="flex items-center gap-2 w-full">
{t("Settings")} <Settings />
</div> {t("Settings")}
</DropdownMenuItem> </div>
</DropdownMenuItem>
)}
</DropdownMenuGroup> </DropdownMenuGroup>
<DropdownMenuSeparator /> <DropdownMenuSeparator />
<DropdownMenuItem <DropdownMenuItem
@@ -334,18 +337,20 @@ export default function Header() {
{t("Profile")} {t("Profile")}
</div> </div>
</DropdownMenuItem> </DropdownMenuItem>
<DropdownMenuItem {isAdmin && (
onClick={() => { <DropdownMenuItem
setDropdownOpen(false) onClick={() => {
navigate("/dashboard/settings") setDropdownOpen(false)
}} navigate("/dashboard/settings")
className="cursor-pointer" }}
> className="cursor-pointer"
<div className="flex items-center gap-2 w-full"> >
<Settings /> <div className="flex items-center gap-2 w-full">
{t("Settings")} <Settings />
</div> {t("Settings")}
</DropdownMenuItem> </div>
</DropdownMenuItem>
)}
</DropdownMenuGroup> </DropdownMenuGroup>
<DropdownMenuSeparator /> <DropdownMenuSeparator />
<DropdownMenuItem onClick={logout} className="cursor-pointer"> <DropdownMenuItem onClick={logout} className="cursor-pointer">
+6 -6
View File
@@ -20,14 +20,14 @@ export const SettingsTab = ({ className }: { className?: string }) => {
<TabsTrigger value="/dashboard/settings/user" asChild> <TabsTrigger value="/dashboard/settings/user" asChild>
<Link to="/dashboard/settings/user">{t("User")}</Link> <Link to="/dashboard/settings/user">{t("User")}</Link>
</TabsTrigger> </TabsTrigger>
<TabsTrigger value="/dashboard/settings/online-user" asChild>
<Link to="/dashboard/settings/online-user">{t("OnlineUser")}</Link>
</TabsTrigger>
<TabsTrigger value="/dashboard/settings/waf" asChild>
<Link to="/dashboard/settings/waf">{t("WAF")}</Link>
</TabsTrigger>
</> </>
)} )}
<TabsTrigger value="/dashboard/settings/online-user" asChild>
<Link to="/dashboard/settings/online-user">{t("OnlineUser")}</Link>
</TabsTrigger>
<TabsTrigger value="/dashboard/settings/waf" asChild>
<Link to="/dashboard/settings/waf">{t("WAF")}</Link>
</TabsTrigger>
</TabsList> </TabsList>
</Tabs> </Tabs>
) )
+2 -2
View File
@@ -3,6 +3,7 @@ import { SettingsTab } from "@/components/settings-tab"
import { Button } from "@/components/ui/button" import { Button } from "@/components/ui/button"
import { Card, CardContent } from "@/components/ui/card" import { Card, CardContent } from "@/components/ui/card"
import { Checkbox } from "@/components/ui/checkbox" import { Checkbox } from "@/components/ui/checkbox"
import { Combobox } from "@/components/ui/combobox"
import { import {
Form, Form,
FormControl, FormControl,
@@ -21,9 +22,8 @@ import {
SelectValue, SelectValue,
} from "@/components/ui/select" } from "@/components/ui/select"
import { Textarea } from "@/components/ui/textarea" import { Textarea } from "@/components/ui/textarea"
import { Combobox } from "@/components/ui/combobox"
import { useNotification } from "@/hooks/useNotfication"
import { useAuth } from "@/hooks/useAuth" import { useAuth } from "@/hooks/useAuth"
import { useNotification } from "@/hooks/useNotfication"
import useSetting from "@/hooks/useSetting" import useSetting from "@/hooks/useSetting"
import { asOptionalField } from "@/lib/utils" import { asOptionalField } from "@/lib/utils"
import { nezhaLang, settingCoverageTypes } from "@/types" import { nezhaLang, settingCoverageTypes } from "@/types"