package handler import ( "authorization/internal/service" "github.com/gin-gonic/gin" ) type Handler struct { services *service.Service } func NewHandler(services *service.Service) *Handler { return &Handler{ services: services, } } func (h *Handler) InitRoutes() *gin.Engine { router := gin.New() serviceRouter := router.Group("/auth-service") { // ========== Публичные эндпоинты (без авторизации) ========== auth := serviceRouter.Group("/auth") { auth.POST("/sign-up", h.signUp) auth.POST("/sign-in", h.signIn) auth.POST("/refresh", h.refresh) } // ========== Защищенные эндпоинты ========== api := serviceRouter.Group("/api") { // Группа /users - базовая авторизация на всей группе users := api.Group("/users", h.userIdentity) { // GET /api/users - любой авторизованный пользователь users.GET("", h.getAllUsers) // GET /api/users/:username - любой авторизованный пользователь users.GET("/:username", h.getUserByUsername) // POST /api/users/:username - ТОЛЬКО администраторы users.POST("/:username", h.requireAdmin(), h.changeUserRole) // DELETE /api/users/:username - ТОЛЬКО администраторы users.DELETE("/:username", h.requireAdmin(), h.deleteUser) } } } return router }