Fix admin permission helper usage (#447)
This commit is contained in:
parent
d8a1a0960a
commit
3d6afd37e0
@ -172,26 +172,26 @@ func RegisterRoutes(r *gin.Engine, opts ...Option) {
|
||||
})
|
||||
|
||||
auth := r.Group("/api/auth")
|
||||
|
||||
|
||||
auth.POST("/register", h.register)
|
||||
auth.POST("/register/verify", h.verifyEmail)
|
||||
|
||||
|
||||
auth.POST("/login", h.login)
|
||||
|
||||
|
||||
auth.GET("/session", h.session)
|
||||
auth.DELETE("/session", h.deleteSession)
|
||||
|
||||
|
||||
auth.POST("/mfa/totp/provision", h.provisionTOTP)
|
||||
auth.POST("/mfa/totp/verify", h.verifyTOTP)
|
||||
auth.POST("/mfa/disable", h.disableMFA)
|
||||
auth.GET("/mfa/status", h.mfaStatus)
|
||||
|
||||
|
||||
auth.POST("/password/reset", h.requestPasswordReset)
|
||||
auth.POST("/password/reset/confirm", h.confirmPasswordReset)
|
||||
|
||||
|
||||
auth.GET("/admin/settings", h.getAdminSettings)
|
||||
auth.POST("/admin/settings", h.updateAdminSettings)
|
||||
|
||||
|
||||
registerAdminRoutes(auth, h)
|
||||
}
|
||||
|
||||
@ -515,7 +515,7 @@ var allowedAdminRoles = map[string]struct{}{
|
||||
}
|
||||
|
||||
func (h *handler) getAdminSettings(c *gin.Context) {
|
||||
if !h.requireAdminOrOperator(c) {
|
||||
if _, ok := h.requireAdminOrOperator(c); !ok {
|
||||
return
|
||||
}
|
||||
settings, err := service.GetAdminSettings(c.Request.Context())
|
||||
@ -534,7 +534,7 @@ func (h *handler) getAdminSettings(c *gin.Context) {
|
||||
}
|
||||
|
||||
func (h *handler) updateAdminSettings(c *gin.Context) {
|
||||
if !h.requireAdminOrOperator(c) {
|
||||
if _, ok := h.requireAdminOrOperator(c); !ok {
|
||||
return
|
||||
}
|
||||
|
||||
@ -579,18 +579,6 @@ func (h *handler) updateAdminSettings(c *gin.Context) {
|
||||
})
|
||||
}
|
||||
|
||||
func (h *handler) requireAdminOrOperator(c *gin.Context) bool {
|
||||
role := strings.ToLower(strings.TrimSpace(c.GetHeader("X-User-Role")))
|
||||
if role == "" {
|
||||
role = strings.ToLower(strings.TrimSpace(c.GetHeader("X-Role")))
|
||||
}
|
||||
if role == "admin" || role == "operator" {
|
||||
return true
|
||||
}
|
||||
c.JSON(http.StatusForbidden, gin.H{"error": "forbidden"})
|
||||
return false
|
||||
}
|
||||
|
||||
func normalizeAdminMatrix(in map[string]map[string]bool) (map[string]map[string]bool, error) {
|
||||
if in == nil {
|
||||
return make(map[string]map[string]bool), nil
|
||||
|
||||
Loading…
Reference in New Issue
Block a user