add login page for locked server

This commit is contained in:
jeffvli
2025-11-18 17:45:29 -08:00
parent 92d4681a23
commit 70242c4044
8 changed files with 246 additions and 13 deletions
+9
View File
@@ -1,4 +1,5 @@
import { NuqsAdapter } from '@offlegacy/nuqs-hash-router';
import isElectron from 'is-electron';
import { useMemo } from 'react';
import { Navigate, Outlet } from 'react-router';
@@ -9,10 +10,14 @@ import { Center } from '/@/shared/components/center/center';
import { Spinner } from '/@/shared/components/spinner/spinner';
import { AuthState } from '/@/shared/types/types';
const localSettings = isElectron() ? window.api.localSettings : null;
export const AppOutlet = () => {
const currentServer = useCurrentServer();
const authState = useServerAuthenticated();
const serverLock = localSettings?.env.SERVER_LOCK || false;
const isActionsRequired = useMemo(() => {
const isServerRequired = !currentServer;
@@ -30,6 +35,10 @@ export const AppOutlet = () => {
);
}
if (serverLock && !currentServer) {
return <Navigate replace to={AppRoute.LOGIN} />;
}
if (isActionsRequired || authState === AuthState.INVALID) {
return <Navigate replace to={AppRoute.ACTION_REQUIRED} />;
}
+3
View File
@@ -35,6 +35,8 @@ const InvalidRoute = lazy(
() => import('/@/renderer/features/action-required/routes/invalid-route'),
);
const LoginRoute = lazy(() => import('/@/renderer/features/login/routes/login-route'));
const HomeRoute = lazy(() => import('/@/renderer/features/home/routes/home-route'));
const ArtistListRoute = lazy(() => import('/@/renderer/features/artists/routes/artist-list-route'));
@@ -209,6 +211,7 @@ export const AppRouter = () => {
element={<ActionRequiredRoute />}
path={AppRoute.ACTION_REQUIRED}
/>
<Route element={<LoginRoute />} path={AppRoute.LOGIN} />
</Route>
</Route>
</Routes>
+1
View File
@@ -1,6 +1,7 @@
export enum AppRoute {
ACTION_REQUIRED = '/action-required',
EXPLORE = '/explore',
LOGIN = '/login',
FAKE_LIBRARY_ALBUM_DETAILS = '/library/albums/dummy/:albumId',
HOME = '/',
LIBRARY_ALBUM_ARTISTS = '/library/album-artists',