package handler import ( "net/http" "github.com/gin-gonic/gin" ) type ChangeUserRoleRequest struct { Role string `json:"role"` } // changeUserRole - изменение роли пользователя (только для админов) func (h *Handler) changeUserRole(c *gin.Context) { var input ChangeUserRoleRequest if err := c.BindJSON(&input); err != nil { newErrorResponse(c, http.StatusBadRequest, err.Error()) return } username := c.Param("username") if username == "" { newErrorResponse(c, http.StatusBadRequest, "Ошибка в строке запроса") return } role, err := h.services.ChangeUserRole(username, input.Role) if err != nil { newErrorResponse(c, http.StatusBadRequest, err.Error()) return } c.JSON(http.StatusOK, map[string]interface{}{ "newRole": role, }) } // Примеры других handler'ов для демонстрации использования middleware // getAllUsers - получить список всех пользователей (доступно всем авторизованным) func (h *Handler) getAllUsers(c *gin.Context) { // Получаем роль текущего пользователя из контекста userRole, _ := c.Get(userRoleKey) c.JSON(http.StatusOK, map[string]interface{}{ "message": "Список пользователей", "your_role": userRole, "access_level": "любой авторизованный пользователь", }) } // getUserByUsername - получить пользователя по username (доступно всем авторизованным) func (h *Handler) getUserByUsername(c *gin.Context) { username := c.Param("username") userRole, _ := c.Get(userRoleKey) c.JSON(http.StatusOK, map[string]interface{}{ "message": "Информация о пользователе", "username": username, "your_role": userRole, "access_level": "любой авторизованный пользователь", }) } // deleteUser - удалить пользователя (только для админов) func (h *Handler) deleteUser(c *gin.Context) { username := c.Param("username") c.JSON(http.StatusOK, map[string]interface{}{ "message": "Пользователь удален", "username": username, "access_level": "только администраторы", }) }