Afiq 379eb17246 Implement Authentik Integration and Simplify RBAC Structure
- 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.
2025-05-31 19:15:21 +08:00

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");
}
});