pub fn create_router(state: Arc<AppState>) -> RouterExpand description
Creates the complete router with all API endpoints.
The router is organized in layers for proper middleware application. Uses AppState
for shared application context across all routes.
§Route Layers (from most to least restricted):
§Admin-Only Routes (requires admin privilege + valid token)
GET /api/tickets/{id}- Get specific ticket details (viaget_ticket_by_id)DELETE /api/tickets/{id}- Delete a ticket (viadelete_ticket)PATCH /api/tickets/{id}- Update ticket status (viaedit_ticket)POST /api/register- Create a new user (viacreate_user)GET /api/users- List all users (viaget_users)GET /api/users/{id}- Get user details (viaget_user_by_id)DELETE /api/users/{id}- Delete a user (viadelete_user)PATCH /api/users/{id}- Update user details (viaupdate_user)
§Protected Routes (requires valid token)
GET /api/tickets- List all tickets (viaget_tickets)POST /api/tickets/create- Create a new ticket (viacreate_ticket)GET /api/logout- Logout user (vialogout)GET /api/users/current- Get current authenticated user (viaget_current_user)
§Public Routes (no authentication required)
POST /api/login- User login (vialogin)GET /api/check-admin- Check if admin exists (viacheck_admin_exists)POST /api/setup-admin- Create initial admin account (viasetup_initial_admin)
§Middleware Stack
- Admin routes have
validate_adminmiddleware - Protected routes have
validate_tokenmiddleware - Public routes have no authentication requirements