Добавлена гибкая система авторизации на основе ролей
- Добавлен базовый middleware userIdentity для валидации токенов - Реализован middleware requireRole для проверки конкретных ролей - Добавлены вспомогательные методы requireAdmin, requireTeacher, requireStudent - Обновлена структура роутов с разделением прав доступа - Добавлены примеры handler'ов: getAllUsers, getUserByUsername, deleteUser - Исправлен роутинг api группы (было router.Group, стало serviceRouter.Group) Теперь поддерживается: - GET /api/users - доступ для всех авторизованных пользователей - GET /api/users/:username - доступ для всех авторизованных - POST /api/users/:username - только для администраторов - DELETE /api/users/:username - только для администраторов 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -20,21 +20,34 @@ 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 := router.Group("/api")
|
||||
|
||||
// ========== Защищенные эндпоинты ==========
|
||||
api := serviceRouter.Group("/api")
|
||||
{
|
||||
users := api.Group("/users", h.checkAdminIdentity)
|
||||
// Группа /users - базовая авторизация на всей группе
|
||||
users := api.Group("/users", h.userIdentity)
|
||||
{
|
||||
users.POST("/:username", h.changeUserRole)
|
||||
// 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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user