Implemented session and account lockout management

Enabled account sync control and session expiration management
Applied some fixes to the govername page and project page
This commit is contained in:
2026-09-18 10:19:24 +02:00
parent 41bf9b63bf
commit ec777fabf8
24 changed files with 3888 additions and 500 deletions
@@ -18,6 +18,9 @@ import {
} from 'lucide-react';
import { useAuth } from '../../auth/AuthProvider';
import { BrandLogo } from '../ui/BrandLogo';
import { useQuery } from '@tanstack/react-query';
import { getUsers } from '../../services/api';
import { getUserEmail, registerUserEmail } from '../../lib/formatters';
const navItems = [
{
@@ -62,6 +65,18 @@ export const AppLayout: React.FC = () => {
await logout();
};
// Pre-populate user directory cache so all components and modals resolve user emails instantly
useQuery({
queryKey: ['users-directory'],
queryFn: () => getUsers(1, 200),
staleTime: 5 * 60 * 1000,
});
// Ensure current logged-in user is registered in the email cache
if (sub && (user?.email || claims.email)) {
registerUserEmail(sub, ((user?.email || claims.email) as string));
}
// Extract name and email directly from validated token claims
const tokenUserName =
user?.name ||
@@ -75,7 +90,7 @@ export const AppLayout: React.FC = () => {
(claims.email as string) ||
(claims['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress'] as string) ||
(claims.upn as string) ||
(sub ? `sub:${sub}` : '');
(sub ? getUserEmail(sub) : '');
// Extract tenant name directly from the user claim named 'tenant'
const tenantName =
@@ -252,8 +267,7 @@ export const AppLayout: React.FC = () => {
>
<div className="p-2.5 border-b border-slate-800">
<p className="text-xs font-semibold text-white">{tokenUserName}</p>
<p className="text-[11px] text-slate-400 font-mono truncate">{tokenUserEmail}</p>
{sub && <p className="text-[10px] text-slate-500 font-mono mt-1">sub: {sub}</p>}
<p className="text-[11px] text-slate-300 font-medium truncate">{tokenUserEmail || (sub ? getUserEmail(sub) : '')}</p>
</div>
<Link