diff --git a/src/components/layout/header/AvatarMenu.tsx b/src/components/layout/header/AvatarMenu.tsx index ab0781129..ddfe67802 100644 --- a/src/components/layout/header/AvatarMenu.tsx +++ b/src/components/layout/header/AvatarMenu.tsx @@ -39,7 +39,7 @@ export const AvatarMenu = () => { @@ -128,12 +128,20 @@ const CurrentUserAvatar = forwardRef( ({ user, newVersionAvailable, ...others }, ref) => { const { primaryColor } = useMantineTheme(); if (!user) return ; + + if (!newVersionAvailable) + return ( + + + {user.name?.slice(0, 2).toUpperCase()} + + + ); + return ( - + + {user.name?.slice(0, 2).toUpperCase()} + ); } ); diff --git a/src/env.js b/src/env.js index 43460ded1..ccb634ee0 100644 --- a/src/env.js +++ b/src/env.js @@ -26,6 +26,7 @@ const env = createEnv({ ), DOCKER_HOST: z.string().optional(), DOCKER_PORT: portSchema, + DEMO_MODE: z.string().optional(), HOSTNAME: z.string().optional(), }, @@ -62,6 +63,7 @@ const env = createEnv({ NEXT_PUBLIC_PORT: process.env.PORT, NEXT_PUBLIC_NODE_ENV: process.env.NODE_ENV, HOSTNAME: process.env.HOSTNAME, + DEMO_MODE: process.env.DEMO_MODE, }, skipValidation: !!process.env.SKIP_ENV_VALIDATION, }); diff --git a/src/pages/404.tsx b/src/pages/404.tsx index c6cb0b8e7..6914ad7dd 100644 --- a/src/pages/404.tsx +++ b/src/pages/404.tsx @@ -27,6 +27,9 @@ export default function Custom404() { + ); diff --git a/src/pages/auth/login.tsx b/src/pages/auth/login.tsx index 159781426..fe66adc4b 100644 --- a/src/pages/auth/login.tsx +++ b/src/pages/auth/login.tsx @@ -22,6 +22,7 @@ import { useState } from 'react'; import { z } from 'zod'; import { ThemeSchemeToggle } from '~/components/ThemeSchemeToggle/ThemeSchemeToggle'; import { FloatingBackground } from '~/components/layout/Background/FloatingBackground'; +import { env } from '~/env'; import { getServerAuthSession } from '~/server/auth'; import { getServerSideTranslations } from '~/tools/server/getServerSideTranslations'; import { useI18nZodResolver } from '~/utils/i18n-zod-resolver'; @@ -29,6 +30,7 @@ import { signInSchema } from '~/validations/user'; export default function LoginPage({ redirectAfterLogin, + isDemo, }: InferGetServerSidePropsType) { const { t } = useTranslation('authentication/login'); const { i18nZodResolver } = useI18nZodResolver(); @@ -86,6 +88,12 @@ export default function LoginPage({ Homarr + {isDemo && ( + + For demo purposes, you can login with the login demo and password :{' '} + demodemo + + )} {t('title')} @@ -156,10 +164,13 @@ export const getServerSideProps: GetServerSideProps = async ({ locale, req, res, }; } + const isDemo = env.DEMO_MODE === 'true'; + return { props: { ...(await getServerSideTranslations(['authentication/login'], locale, req, res)), redirectAfterLogin, + isDemo, }, }; };