Добавлены недостающие файлы
This commit is contained in:
@@ -42,7 +42,6 @@ func (h *Handler) userIdentity(c *gin.Context) {
|
||||
c.Next()
|
||||
}
|
||||
|
||||
// requireRole - middleware-фабрика, возвращает middleware для проверки конкретных ролей
|
||||
func (h *Handler) requireRole(allowedRoles ...internal.UserRole) gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
userRole, exists := c.Get(userRoleKey)
|
||||
@@ -86,31 +85,4 @@ func (h *Handler) requireTeacher() gin.HandlerFunc {
|
||||
|
||||
func (h *Handler) requireStudent() gin.HandlerFunc {
|
||||
return h.requireRole(internal.Student, internal.Teacher, internal.Admin)
|
||||
}
|
||||
|
||||
func (h *Handler) checkAdminIdentity(c *gin.Context) {
|
||||
header := c.GetHeader(authorizationHeader)
|
||||
if header == "" {
|
||||
newErrorResponse(c, http.StatusUnauthorized, "Пустой header авторизации")
|
||||
return
|
||||
}
|
||||
|
||||
headerParts := strings.Split(header, " ")
|
||||
if len(headerParts) != 2 {
|
||||
newErrorResponse(c, http.StatusUnauthorized, "Невалидный токен JWT")
|
||||
return
|
||||
}
|
||||
|
||||
userRole, err := h.services.ParseToken(headerParts[1])
|
||||
|
||||
if userRole != string(internal.Admin) {
|
||||
newErrorResponse(c, http.StatusUnauthorized, "Недостаточно прав для выполнения запроса")
|
||||
return
|
||||
}
|
||||
if err != nil {
|
||||
newErrorResponse(c, http.StatusUnauthorized, "Ошибка при извлечении claims")
|
||||
return
|
||||
}
|
||||
|
||||
c.Set(userRoleKey, userRole)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user