modified: serv_nginx/api_bb/internal/database/migrate.go
new file: serv_nginx/api_bb/internal/handlers/event_handler.go new file: serv_nginx/api_bb/internal/handlers/event_registration_handler.go modified: serv_nginx/api_bb/internal/handlers/handlers.go modified: serv_nginx/api_bb/internal/models/event.go modified: serv_nginx/api_bb/internal/routes/routes.go new file: serv_nginx/api_bb/internal/service/event_registration_service.go new file: serv_nginx/api_bb/internal/service/event_service.go new file: serv_nginx/api_bb/pkg/middleware/admin_middleware.go add admin middleware, add event and eventRegistration handlers, routes, services, EndPoints
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
// pkg/middleware/admin_middleware.go
|
||||
package middleware
|
||||
|
||||
import (
|
||||
"api_bb/pkg/logger"
|
||||
"api_bb/pkg/utils"
|
||||
"net/http"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
// AdminMiddleware проверяет, что пользователь имеет роль администратора
|
||||
func AdminMiddleware(next http.Handler) http.Handler {
|
||||
logger := logger.NewWrapper(logger.Get().With(zap.String("middleware", "admin")))
|
||||
|
||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
logger.Info("admin middleware check",
|
||||
zap.String("method", r.Method),
|
||||
zap.String("path", r.URL.Path),
|
||||
zap.String("remote_addr", r.RemoteAddr),
|
||||
)
|
||||
|
||||
// Получаем пользователя из контекста
|
||||
user, ok := GetUserFromContext(r.Context())
|
||||
if !ok {
|
||||
logger.Warn("admin middleware failed - user not found in context")
|
||||
utils.RespondWithError(w, http.StatusUnauthorized, "Authentication required")
|
||||
return
|
||||
}
|
||||
|
||||
// Проверяем роль пользователя
|
||||
if user.Role != "admin" {
|
||||
logger.Warn("admin middleware failed - insufficient permissions",
|
||||
zap.Uint("user_id", user.ID),
|
||||
zap.String("user_role", user.Role),
|
||||
zap.String("required_role", "admin"),
|
||||
)
|
||||
utils.RespondWithError(w, http.StatusForbidden, "Insufficient permissions: admin role required")
|
||||
return
|
||||
}
|
||||
|
||||
logger.Debug("admin middleware passed",
|
||||
zap.Uint("user_id", user.ID),
|
||||
zap.String("user_email", user.Email),
|
||||
)
|
||||
|
||||
next.ServeHTTP(w, r)
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user