- Updated nuxt.config.js to include Authentik configuration and public keys for client-side access. - Introduced a new composable, useAuth.js, for handling authentication logic with Authentik, including user validation, login, and logout functionalities. - Enhanced documentation to reflect the simplified RBAC structure and the integration of Authentik, emphasizing user-centric design and streamlined permission management. - Refactored middleware for authentication checks and improved error handling during user validation. - Created new pages for login and dashboard, ensuring proper routing and user experience. - Removed obsolete Metabase integration and unnecessary complexity from the project structure.
26 lines
824 B
JavaScript
26 lines
824 B
JavaScript
export default defineNuxtRouteMiddleware(async (to, from) => {
|
|
// If accessing root path, check authentication and redirect appropriately
|
|
if (to.path === '/') {
|
|
if (process.client) {
|
|
try {
|
|
// Check if user is authenticated
|
|
const { data: validateUser } = await useFetch("/api/auth/validate", {
|
|
method: "GET",
|
|
server: false
|
|
});
|
|
|
|
// If authenticated, go to dashboard, otherwise login
|
|
if (validateUser.value && validateUser.value.statusCode === 200) {
|
|
return navigateTo("/dashboard");
|
|
} else {
|
|
return navigateTo("/login");
|
|
}
|
|
} catch (error) {
|
|
// If validation fails, redirect to login
|
|
return navigateTo("/login");
|
|
}
|
|
}
|
|
// Server-side fallback
|
|
return navigateTo("/login");
|
|
}
|
|
}); |