7
"github.com/go-chi/chi"
8
"github.com/go-chi/render"
10
"go.avito.ru/DO/moira/api"
11
"go.avito.ru/DO/moira/api/controller"
12
"go.avito.ru/DO/moira/api/dto"
13
"go.avito.ru/DO/moira/api/middleware"
16
func globalSettings(router chi.Router) {
17
router.Get("/", getGlobalSettings)
18
router.Put("/", setGlobalSettings)
21
func checkPermissions(request *http.Request) *api.ErrorResponse {
22
userName := middleware.GetLogin(request)
23
isSuperUser := superUsers[userName]
26
errMessage := fmt.Sprintf("User \"%s\" is forbidden to request or modify global settings", userName)
27
return api.ErrorForbidden(errMessage)
33
func getGlobalSettings(writer http.ResponseWriter, request *http.Request) {
34
if errResponse := checkPermissions(request); errResponse != nil {
35
_ = render.Render(writer, request, errResponse)
36
} else if globalSettings, errResponse := controller.GetGlobalSettings(database); errResponse != nil {
37
_ = render.Render(writer, request, errResponse)
38
} else if err := render.Render(writer, request, globalSettings); err != nil {
39
_ = render.Render(writer, request, api.ErrorRender(err))
43
func setGlobalSettings(writer http.ResponseWriter, request *http.Request) {
44
newSettings := &dto.GlobalSettings{}
45
if errResponse := checkPermissions(request); errResponse != nil {
46
_ = render.Render(writer, request, errResponse)
47
} else if err := render.Bind(request, newSettings); err != nil {
48
_ = render.Render(writer, request, api.ErrorInternalServer(err))
49
} else if errResponse := controller.SetGlobalSettings(database, newSettings); errResponse != nil {
50
_ = render.Render(writer, request, errResponse)