mirror of
https://github.com/open-reception/appointment-booking-software.git
synced 2026-08-17 21:25:52 +02:00
3.4 KiB
3.4 KiB
API Routes Authentication Overview
This document provides a comprehensive overview of all API routes and their authentication requirements.
🔓 Public Routes (No Authentication Required)
Authentication Routes
/api/auth/challenge- Generate WebAuthn challenge/api/auth/login- User login (WebAuthn or passphrase)/api/auth/register- User registration/api/auth/confirm- Email confirmation/api/auth/resend-confirmation- Resend confirmation email
System Routes
/api/health- Health check/api/health/services- Service health status/api/docs- API documentation/api/openapi.json- OpenAPI specification/api/env- Environment information/api/log- Logging endpoint
Admin Setup Routes
/api/admin/init- Initialize first global admin/api/admin/exists- Check if global admin exists
🔒 Protected Routes (Authentication Required)
Protected Auth Routes (Any Authenticated User)
/api/auth/logout- User logout/api/auth/refresh- Refresh authentication tokens/api/auth/session- Get current session info/api/auth/sessions- Manage user sessions/api/auth/sessions/[sessionId]- Manage specific session/api/auth/passkeys- Add additional WebAuthn keys
Global Admin Routes (GLOBAL_ADMIN Role Required)
/api/tenants- Create and list tenants/api/tenants/[id]- Manage specific tenant/api/tenants/[id]/config- Tenant configuration/api/tenants/config/defaults- Default tenant configuration
Admin Routes (ADMIN Role Required)
/api/admin/tenant- Tenant management for admins
📋 Route Categories
By Authentication Level:
- Public: 12 routes - No authentication required
- Protected Auth: 6 routes - Any authenticated user
- Global Admin: 5 routes - GLOBAL_ADMIN role required
By Functionality:
- Authentication: 11 routes (5 public, 6 protected)
- Admin Management: 2 routes (2 public)
- Tenant Management: 5 routes (5 global admin)
- System/Utility: 6 routes (6 public)
🔧 Implementation Details
Authentication Flow:
- Session Cookie:
sessioncookie for browser-based auth - Bearer Token: Authorization header for API access
- Role Checking:
AuthorizationService.hasRole()for role verification
Security Features:
- JWT token verification
- Session validation
- Role-based access control (RBAC)
- Proper HTTP status codes (401 vs 403)
- Detailed logging for security events
Configuration Location:
- Main config:
src/server-hooks/authHandle.ts - Authorization service:
src/lib/server/auth/authorization-service.ts - Session service:
src/lib/server/auth/session-service.ts
🚨 Security Considerations
- Public Routes: Should be carefully reviewed for security implications
- Protected Routes: Require valid authentication but no specific roles
- Global Admin Routes: High privilege routes requiring GLOBAL_ADMIN role
- Rate Limiting: Applied to all routes via
rateLimitHandle - CORS: Properly configured for API access
- HTTPS: Security headers enforced in production
📝 Notes
- All routes are automatically covered by the authentication middleware
- New API routes should be explicitly added to the appropriate category
- Role requirements are enforced at the middleware level
- Session management is handled automatically for authenticated routes