From 9afb6dc933f57320d4a28a289317c5333785fefe Mon Sep 17 00:00:00 2001 From: Christoph Kluge Date: Thu, 22 Jun 2023 19:56:21 +0200 Subject: [PATCH] Add Header Requirements and BuildInfos to message --- cmd/cc-backend/main.go | 4 ++-- internal/routerConfig/routes.go | 22 ++++++++++++---------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/cmd/cc-backend/main.go b/cmd/cc-backend/main.go index b591246..02eb389 100644 --- a/cmd/cc-backend/main.go +++ b/cmd/cc-backend/main.go @@ -319,11 +319,11 @@ func main() { // Send a searchId and then reply with a redirect to a user, or directly send query to job table for jobid and project. secured.HandleFunc("/search", func(rw http.ResponseWriter, r *http.Request) { - routerConfig.HandleSearchBar(rw, r) + routerConfig.HandleSearchBar(rw, r, buildInfo) }) // Mount all /monitoring/... and /api/... routes. - routerConfig.SetupRoutes(secured, version, commit, date) + routerConfig.SetupRoutes(secured, buildInfo) api.MountRoutes(secured) if config.Keys.EmbedStaticFiles { diff --git a/internal/routerConfig/routes.go b/internal/routerConfig/routes.go index 45f77c5..3de7774 100644 --- a/internal/routerConfig/routes.go +++ b/internal/routerConfig/routes.go @@ -229,7 +229,7 @@ func buildFilterPresets(query url.Values) map[string]interface{} { return filterPresets } -func SetupRoutes(router *mux.Router, version string, hash string, buildTime string) { +func SetupRoutes(router *mux.Router, buildInfo web.Build) { userCfgRepo := repository.GetUserCfgRepo() for _, route := range routes { route := route @@ -255,7 +255,7 @@ func SetupRoutes(router *mux.Router, version string, hash string, buildTime stri Title: title, User: *user, Roles: availableRoles, - Build: web.Build{Version: version, Hash: hash, Buildtime: buildTime}, + Build: buildInfo, Config: conf, Infos: infos, } @@ -269,10 +269,12 @@ func SetupRoutes(router *mux.Router, version string, hash string, buildTime stri } } -func HandleSearchBar(rw http.ResponseWriter, r *http.Request) { +func HandleSearchBar(rw http.ResponseWriter, r *http.Request, buildInfo web.Build) { + user := auth.GetUser(r.Context()) + availableRoles, _ := auth.GetValidRolesMap(user) + if search := r.URL.Query().Get("searchId"); search != "" { repo := repository.GetJobRepository() - user := auth.GetUser(r.Context()) splitSearch := strings.Split(search, ":") if len(splitSearch) == 2 { @@ -287,7 +289,7 @@ func HandleSearchBar(rw http.ResponseWriter, r *http.Request) { if user.HasAnyRole([]auth.Role{auth.RoleAdmin, auth.RoleSupport, auth.RoleManager}) { http.Redirect(rw, r, "/monitoring/users/?user="+url.QueryEscape(strings.Trim(splitSearch[1], " ")), http.StatusFound) } else { - web.RenderTemplate(rw, r, "message.tmpl", &web.Page{Title: "Error", MsgType: "alert-danger", Message: "Missing Access Rights"}) + web.RenderTemplate(rw, r, "message.tmpl", &web.Page{Title: "Error", MsgType: "alert-danger", Message: "Missing Access Rights", User: *user, Roles: availableRoles, Build: buildInfo}) } case "name": usernames, _ := repo.FindColumnValues(user, strings.Trim(splitSearch[1], " "), "user", "username", "name") @@ -298,17 +300,17 @@ func HandleSearchBar(rw http.ResponseWriter, r *http.Request) { if user.HasAnyRole([]auth.Role{auth.RoleAdmin, auth.RoleSupport, auth.RoleManager}) { http.Redirect(rw, r, "/monitoring/users/?user=NoUserNameFound", http.StatusPermanentRedirect) } else { - web.RenderTemplate(rw, r, "message.tmpl", &web.Page{Title: "Error", MsgType: "alert-danger", Message: "Missing Access Rights"}) + web.RenderTemplate(rw, r, "message.tmpl", &web.Page{Title: "Error", MsgType: "alert-danger", Message: "Missing Access Rights", User: *user, Roles: availableRoles, Build: buildInfo}) } } default: - web.RenderTemplate(rw, r, "message.tmpl", &web.Page{Title: "Warning", MsgType: "alert-warning", Message: fmt.Sprintf("Unknown search term %s", strings.Trim(splitSearch[0], " "))}) + web.RenderTemplate(rw, r, "message.tmpl", &web.Page{Title: "Warning", MsgType: "alert-warning", Message: fmt.Sprintf("Unknown search term %s", strings.Trim(splitSearch[0], " ")), User: *user, Roles: availableRoles, Build: buildInfo}) } } else if len(splitSearch) == 1 { username, project, jobname, err := repo.FindUserOrProjectOrJobname(user, strings.Trim(search, " ")) if err != nil { - web.RenderTemplate(rw, r, "message.tmpl", &web.Page{Title: "Info", MsgType: "alert-info", Message: "Search without result"}) + web.RenderTemplate(rw, r, "message.tmpl", &web.Page{Title: "Info", MsgType: "alert-info", Message: "Search without result", User: *user, Roles: availableRoles, Build: buildInfo}) return } @@ -322,9 +324,9 @@ func HandleSearchBar(rw http.ResponseWriter, r *http.Request) { http.Redirect(rw, r, "/monitoring/jobs/?jobId="+url.QueryEscape(strings.Trim(search, " ")), http.StatusFound) // No Result: Probably jobId } } else { - web.RenderTemplate(rw, r, "message.tmpl", &web.Page{Title: "Error", MsgType: "alert-danger", Message: "Searchbar query parameters malformed"}) + web.RenderTemplate(rw, r, "message.tmpl", &web.Page{Title: "Error", MsgType: "alert-danger", Message: "Searchbar query parameters malformed", User: *user, Roles: availableRoles, Build: buildInfo}) } } else { - web.RenderTemplate(rw, r, "message.tmpl", &web.Page{Title: "Warning", MsgType: "alert-warning", Message: "Empty search"}) + web.RenderTemplate(rw, r, "message.tmpl", &web.Page{Title: "Warning", MsgType: "alert-warning", Message: "Empty search", User: *user, Roles: availableRoles, Build: buildInfo}) } }