Implemented version display in SiteHeader of webui
- Updated API version to 1.2.0 - Stored versions in localStorage
This commit is contained in:
@@ -132,6 +132,8 @@ export type AuthStatusResponse = {
|
||||
token_type?: string
|
||||
auth_mode?: 'enabled' | 'disabled'
|
||||
message?: string
|
||||
core_version?: string
|
||||
api_version?: string
|
||||
}
|
||||
|
||||
export type LoginResponse = {
|
||||
@@ -139,6 +141,8 @@ export type LoginResponse = {
|
||||
token_type: string
|
||||
auth_mode?: 'enabled' | 'disabled' // Authentication mode identifier
|
||||
message?: string // Optional message
|
||||
core_version?: string
|
||||
api_version?: string
|
||||
}
|
||||
|
||||
export const InvalidApiKeyError = 'Invalid API Key'
|
||||
|
@@ -43,7 +43,7 @@ const LoginPage = () => {
|
||||
|
||||
if (!status.auth_configured && status.access_token) {
|
||||
// If auth is not configured, use the guest token and redirect
|
||||
login(status.access_token, true)
|
||||
login(status.access_token, true, status.core_version, status.api_version)
|
||||
if (status.message) {
|
||||
toast.info(status.message)
|
||||
}
|
||||
@@ -87,7 +87,7 @@ const LoginPage = () => {
|
||||
|
||||
// Check authentication mode
|
||||
const isGuestMode = response.auth_mode === 'disabled'
|
||||
login(response.access_token, isGuestMode)
|
||||
login(response.access_token, isGuestMode, response.core_version, response.api_version)
|
||||
|
||||
if (isGuestMode) {
|
||||
// Show authentication disabled notification
|
||||
|
@@ -55,7 +55,11 @@ function TabsNavigation() {
|
||||
|
||||
export default function SiteHeader() {
|
||||
const { t } = useTranslation()
|
||||
const { isGuestMode } = useAuthStore()
|
||||
const { isGuestMode, coreVersion, apiVersion } = useAuthStore()
|
||||
|
||||
const versionDisplay = (coreVersion && apiVersion)
|
||||
? `${coreVersion}/${apiVersion}`
|
||||
: null;
|
||||
|
||||
const handleLogout = () => {
|
||||
navigationService.navigateToLogin();
|
||||
@@ -67,6 +71,11 @@ export default function SiteHeader() {
|
||||
<ZapIcon className="size-4 text-emerald-400" aria-hidden="true" />
|
||||
{/* <img src='/logo.png' className="size-4" /> */}
|
||||
<span className="font-bold md:inline-block">{SiteInfo.name}</span>
|
||||
{versionDisplay && (
|
||||
<span className="ml-2 text-xs text-gray-500 dark:text-gray-400">
|
||||
v{versionDisplay}
|
||||
</span>
|
||||
)}
|
||||
</a>
|
||||
|
||||
<div className="flex h-10 flex-1 justify-center">
|
||||
|
@@ -19,7 +19,9 @@ interface BackendState {
|
||||
interface AuthState {
|
||||
isAuthenticated: boolean;
|
||||
isGuestMode: boolean; // Add guest mode flag
|
||||
login: (token: string, isGuest?: boolean) => void;
|
||||
coreVersion: string | null;
|
||||
apiVersion: string | null;
|
||||
login: (token: string, isGuest?: boolean, coreVersion?: string | null, apiVersion?: string | null) => void;
|
||||
logout: () => void;
|
||||
}
|
||||
|
||||
@@ -84,15 +86,22 @@ const isGuestToken = (token: string): boolean => {
|
||||
};
|
||||
|
||||
// Initialize auth state from localStorage
|
||||
const initAuthState = (): { isAuthenticated: boolean; isGuestMode: boolean } => {
|
||||
const initAuthState = (): { isAuthenticated: boolean; isGuestMode: boolean; coreVersion: string | null; apiVersion: string | null } => {
|
||||
const token = localStorage.getItem('LIGHTRAG-API-TOKEN');
|
||||
if (!token) {
|
||||
return { isAuthenticated: false, isGuestMode: false };
|
||||
return {
|
||||
isAuthenticated: false,
|
||||
isGuestMode: false,
|
||||
coreVersion: null,
|
||||
apiVersion: null
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
isAuthenticated: true,
|
||||
isGuestMode: isGuestToken(token)
|
||||
isGuestMode: isGuestToken(token),
|
||||
coreVersion: localStorage.getItem('LIGHTRAG-CORE-VERSION'),
|
||||
apiVersion: localStorage.getItem('LIGHTRAG-API-VERSION')
|
||||
};
|
||||
};
|
||||
|
||||
@@ -103,20 +112,36 @@ export const useAuthStore = create<AuthState>(set => {
|
||||
return {
|
||||
isAuthenticated: initialState.isAuthenticated,
|
||||
isGuestMode: initialState.isGuestMode,
|
||||
coreVersion: initialState.coreVersion,
|
||||
apiVersion: initialState.apiVersion,
|
||||
|
||||
login: (token, isGuest = false) => {
|
||||
login: (token, isGuest = false, coreVersion = null, apiVersion = null) => {
|
||||
localStorage.setItem('LIGHTRAG-API-TOKEN', token);
|
||||
|
||||
// 存储版本信息到 localStorage
|
||||
if (coreVersion) {
|
||||
localStorage.setItem('LIGHTRAG-CORE-VERSION', coreVersion);
|
||||
}
|
||||
if (apiVersion) {
|
||||
localStorage.setItem('LIGHTRAG-API-VERSION', apiVersion);
|
||||
}
|
||||
|
||||
set({
|
||||
isAuthenticated: true,
|
||||
isGuestMode: isGuest
|
||||
isGuestMode: isGuest,
|
||||
coreVersion,
|
||||
apiVersion
|
||||
});
|
||||
},
|
||||
|
||||
logout: () => {
|
||||
localStorage.removeItem('LIGHTRAG-API-TOKEN');
|
||||
|
||||
set({
|
||||
isAuthenticated: false,
|
||||
isGuestMode: false
|
||||
isGuestMode: false,
|
||||
coreVersion: null,
|
||||
apiVersion: null
|
||||
});
|
||||
}
|
||||
};
|
||||
|
Reference in New Issue
Block a user