diff --git a/apps/desktop/src/App.tsx b/apps/desktop/src/App.tsx index ec24037..61f9e8c 100644 --- a/apps/desktop/src/App.tsx +++ b/apps/desktop/src/App.tsx @@ -4,6 +4,7 @@ import { HashRouter, Navigate, Outlet, Route, Routes } from 'react-router-dom'; import { AppShell } from './components/AppShell'; import { CrashToast } from './components/CrashToast'; import { ErrorBoundary } from './components/ErrorBoundary'; +import { RemoteRevokedScreen } from './components/RemoteRevokedScreen'; import { SpinnerIcon } from './components/icons'; import { UpdateToast } from './components/UpdateToast'; import { RequireAdmin, RequireAuth, RequireDevice } from './components/guards'; @@ -168,6 +169,7 @@ export function App() { + diff --git a/apps/desktop/src/components/RemoteRevokedScreen.tsx b/apps/desktop/src/components/RemoteRevokedScreen.tsx new file mode 100644 index 0000000..df054be --- /dev/null +++ b/apps/desktop/src/components/RemoteRevokedScreen.tsx @@ -0,0 +1,41 @@ +import { useTranslation } from 'react-i18next'; + +import { useAuth } from '../context/AuthContext'; + +export function RemoteRevokedScreen() { + const { t } = useTranslation(); + const { revokedRemotely, acknowledgeRevocation } = useAuth(); + + if (!revokedRemotely) return null; + + return ( +
+
+

+ {t('app:auth.revoked_title', { defaultValue: 'Du wurdest remote abgemeldet' })} +

+

+ {t('app:auth.revoked_body', { + defaultValue: + 'Ein anderes deiner Geräte hat diesen Login beendet. Aus Sicherheitsgründen wurden alle lokalen Daten gelöscht.', + })} +

+ +
+
+ ); +}