Full-stack app for participatory water pricing using Bezier curves. - Backend: FastAPI + SQLAlchemy + SQLite with JWT auth - Frontend: Nuxt 4 + TypeScript with interactive SVG editor - Math engine: cubic Bezier tarification with Cardano solver - Admin: commune management, household import, vote monitoring, CMS - Citizen: interactive curve editor, vote submission - Docker-compose deployment ready Includes fixes for: - Impact table snake_case/camelCase property mismatch - CMS content backend API + frontend editor (was stub) - Admin route protection middleware - Public content display on commune page - Vote confirmation page link fix Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
12 lines
326 B
TypeScript
12 lines
326 B
TypeScript
/**
|
|
* Route middleware: redirects to login if user is not an admin.
|
|
* Apply via definePageMeta({ middleware: 'admin' }) on admin pages.
|
|
*/
|
|
export default defineNuxtRouteMiddleware((to) => {
|
|
const authStore = useAuthStore()
|
|
|
|
if (!authStore.isAuthenticated || !authStore.isAdmin) {
|
|
return navigateTo('/login')
|
|
}
|
|
})
|