Implement Keycloak authentication integration and unify user management

This commit is contained in:
2025-06-14 14:09:56 +02:00
parent 72ea543485
commit 5f8720bb63
11 changed files with 743 additions and 74 deletions

View File

@@ -1,14 +1,34 @@
export default defineNuxtRouteMiddleware(async () => {
export default defineNuxtRouteMiddleware(async (to) => {
// Skip auth for SSR
if (import.meta.server) return;
// Check if auth is required (default true unless explicitly set to false)
const isAuthRequired = to.meta.auth !== false;
// Check Keycloak auth first
const oidc = useOidc();
if (oidc.isLoggedIn) {
// User authenticated with Keycloak
return;
}
// Fall back to Directus auth
const { fetchUser, setUser } = useDirectusAuth();
const user = useDirectusUser();
if (!user.value) {
const directusUser = useDirectusUser();
if (!directusUser.value) {
const user = await fetchUser();
setUser(user.value);
}
if (!user.value) {
return navigateTo("/login");
if (directusUser.value) {
// User authenticated with Directus
return;
}
// No authentication found
if (isAuthRequired) {
// Redirect to login page
return navigateTo('/login');
}
});