Add DELETE /api/auth/users/:id, PUT /api/auth/users/:id/password, and PUT /api/auth/users/:id routes. Remove individual profile update routes in favor of consolidated endpoints.
48 lines
1.7 KiB
Go
48 lines
1.7 KiB
Go
package router
|
|
|
|
import (
|
|
"bookhoard/internal/handlers"
|
|
|
|
"github.com/labstack/echo/v4"
|
|
)
|
|
|
|
func registerAuthRoutes(cfg *Config, rateLimitMiddleware echo.MiddlewareFunc) {
|
|
e := cfg.Echo
|
|
|
|
// Auth routes (no auth required, but rate limited)
|
|
e.POST("/api/auth/register", rateLimitMiddleware(cfg.AuthHandler.Register))
|
|
e.POST("/api/auth/login", rateLimitMiddleware(cfg.AuthHandler.Login))
|
|
|
|
// JWT middleware for protected routes
|
|
jwtMiddleware := createJWTMiddleware(cfg)
|
|
|
|
// Create protected route group
|
|
protected := e.Group("/api", jwtMiddleware)
|
|
|
|
// Protected auth routes
|
|
protected.GET("/auth/profile", cfg.AuthHandler.GetProfile)
|
|
|
|
// Refresh token endpoint (no authentication required - uses refresh token from body)
|
|
e.POST("/api/auth/refresh", cfg.AuthHandler.RefreshAccessToken)
|
|
|
|
// Logout endpoint (optional authentication - can revoke tokens if provided)
|
|
e.POST("/api/auth/logout", cfg.AuthHandler.Logout)
|
|
|
|
// Auth update routes
|
|
authGroup := e.Group("/api/auth", createJWTMiddleware(cfg))
|
|
authGroup.PUT("/password", cfg.AuthHandler.UpdatePassword)
|
|
authGroup.PUT("/theme", cfg.AuthHandler.UpdateTheme)
|
|
|
|
// Profile management (combined handlers - self-edit)
|
|
authGroup.PUT("/profile", cfg.AuthHandler.UpdateProfile)
|
|
authGroup.DELETE("/profile", cfg.AuthHandler.DeleteUser)
|
|
|
|
// Admin-only routes (same handlers with URL param)
|
|
admin := protected.Group("/auth", handlers.AdminMiddleware)
|
|
admin.GET("/users", cfg.AuthHandler.ListUsers)
|
|
admin.PUT("/users/:id/max-devices", cfg.AuthHandler.UpdateUserMaxDevices)
|
|
admin.PUT("/profile/:id", cfg.AuthHandler.UpdateProfile)
|
|
admin.PUT("/password/:id", cfg.AuthHandler.UpdatePassword)
|
|
admin.DELETE("/profile/:id", cfg.AuthHandler.DeleteUser)
|
|
}
|