From 46342eaca1e1f74570c7509398e7108281620c4b Mon Sep 17 00:00:00 2001 From: NlightN22 Date: Wed, 22 May 2024 14:32:03 +0700 Subject: [PATCH] fix empty admin role check --- Dockerfile | 2 +- package.json | 2 +- src/hooks/useAdminRole.ts | 14 ++++++++++++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index ad2b1a8..4ab70f3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ # syntax=docker/dockerfile:1 # Build commands: -# - $VERSION=1.3 +# - $VERSION=1.4 # - rm build -r -Force ; rm ./node_modules/.cache/babel-loader -r -Force ; yarn build # - docker build --pull --rm -t oncharterliz/multi-frigate:latest -t oncharterliz/multi-frigate:$VERSION "." # - docker image push --all-tags oncharterliz/multi-frigate diff --git a/package.json b/package.json index daf61d6..e708e7a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "multi-frigate", - "version": "0.1.3", + "version": "0.1.4", "private": true, "dependencies": { "@cycjimmy/jsmpeg-player": "^6.0.5", diff --git a/src/hooks/useAdminRole.ts b/src/hooks/useAdminRole.ts index 9c0a083..4c263b0 100644 --- a/src/hooks/useAdminRole.ts +++ b/src/hooks/useAdminRole.ts @@ -2,6 +2,8 @@ import { useQuery } from "@tanstack/react-query"; import { frigateQueryKeys, frigateApi } from "../services/frigate.proxy/frigate.api"; import { useRealmAccessRoles } from "./useRealmAccessRoles"; import { useEffect, useState } from "react"; +import { isProduction } from "../shared/env.const"; +import { getConfigSchema } from "../services/frigate.proxy/frigate.schema"; export interface AdminRole { isLoading: boolean @@ -19,9 +21,17 @@ export const useAdminRole = (): AdminRole => { const roles = useRealmAccessRoles() const [isAdmin, setIsAdmin] = useState(false) + if (isError) setIsAdmin(false) + useEffect(() => { - if (adminConfig) { - const checkAdmin = roles.some(role => role === adminConfig.value) + const parsedConfig = getConfigSchema.safeParse(adminConfig) + if (!isProduction) console.log('useAdminRole parsedConfig success:', parsedConfig.success) + if (!parsedConfig.success) { + setIsAdmin(true) + return + } + if (parsedConfig.success) { + const checkAdmin = roles.some(role => role === parsedConfig.data.value) setIsAdmin(checkAdmin) } else { setIsAdmin(false)