diff --git a/cmd/cc-backend/server.go b/cmd/cc-backend/server.go
index fc620c8..083b9e5 100644
--- a/cmd/cc-backend/server.go
+++ b/cmd/cc-backend/server.go
@@ -110,9 +110,7 @@ func serverInit() {
if !config.Keys.DisableAuthentication {
router.Handle("/login", authHandle.Login(
- // On success:
- http.RedirectHandler("/", http.StatusTemporaryRedirect),
-
+ // On success: Handled within Login()
// On failure:
func(rw http.ResponseWriter, r *http.Request, err error) {
rw.Header().Add("Content-Type", "text/html; charset=utf-8")
@@ -127,9 +125,7 @@ func serverInit() {
})).Methods(http.MethodPost)
router.Handle("/jwt-login", authHandle.Login(
- // On success:
- http.RedirectHandler("/", http.StatusTemporaryRedirect),
-
+ // On success: Handled within Login()
// On failure:
func(rw http.ResponseWriter, r *http.Request, err error) {
rw.Header().Add("Content-Type", "text/html; charset=utf-8")
@@ -165,11 +161,12 @@ func serverInit() {
func(rw http.ResponseWriter, r *http.Request, err error) {
rw.WriteHeader(http.StatusUnauthorized)
web.RenderTemplate(rw, "login.tmpl", &web.Page{
- Title: "Authentication failed - ClusterCockpit",
- MsgType: "alert-danger",
- Message: err.Error(),
- Build: buildInfo,
- Infos: info,
+ Title: "Authentication failed - ClusterCockpit",
+ MsgType: "alert-danger",
+ Message: err.Error(),
+ Build: buildInfo,
+ Infos: info,
+ Redirect: r.RequestURI,
})
})
})
diff --git a/internal/auth/auth.go b/internal/auth/auth.go
index 270989f..a186cf6 100644
--- a/internal/auth/auth.go
+++ b/internal/auth/auth.go
@@ -201,7 +201,6 @@ func (auth *Authentication) SaveSession(rw http.ResponseWriter, r *http.Request,
}
func (auth *Authentication) Login(
- onsuccess http.Handler,
onfailure func(rw http.ResponseWriter, r *http.Request, loginErr error),
) http.Handler {
return http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
@@ -238,7 +237,12 @@ func (auth *Authentication) Login(
log.Infof("login successfull: user: %#v (roles: %v, projects: %v)", user.Username, user.Roles, user.Projects)
ctx := context.WithValue(r.Context(), repository.ContextUserKey, user)
- onsuccess.ServeHTTP(rw, r.WithContext(ctx))
+
+ if r.FormValue("redirect") != "" {
+ http.RedirectHandler(r.FormValue("redirect"), http.StatusFound).ServeHTTP(rw, r.WithContext(ctx))
+ } else {
+ http.RedirectHandler(r.FormValue("/"), http.StatusFound).ServeHTTP(rw, r.WithContext(ctx))
+ }
return
}
diff --git a/internal/taskManager/updateFootprintService.go b/internal/taskManager/updateFootprintService.go
index e9525d2..d30d766 100644
--- a/internal/taskManager/updateFootprintService.go
+++ b/internal/taskManager/updateFootprintService.go
@@ -43,9 +43,9 @@ func RegisterFootprintWorker() {
if err != nil {
continue
}
- // NOTE: Additional Subcluster Loop Could Allow For Limited List Of (Energy)Footprint-Metrics Only.
+ // NOTE: Additional Subcluster Loop Could Allow For Limited List Of Footprint-Metrics Only.
// - Chunk-Size Would Then Be 'SubCluster' (Running Jobs, Transactions) as Lists Can Change Within SCs
- // - Would Require Review of 'updateFootprint' And 'updateEnergy' Usage
+ // - Would Require Review of 'updateFootprint' Usage (Logic Could Possibly Be Included Here Completely)
allMetrics := make([]string, 0)
metricConfigs := archive.GetCluster(cluster.Name).MetricConfig
for _, mc := range metricConfigs {
diff --git a/web/templates/login.tmpl b/web/templates/login.tmpl
index f10e064..cd13926 100644
--- a/web/templates/login.tmpl
+++ b/web/templates/login.tmpl
@@ -41,6 +41,7 @@
{{- if .Infos.hasOpenIDConnect}}
OpenID Connect Login
{{end}}
+
diff --git a/web/web.go b/web/web.go
index 45ca9e3..1cfa176 100644
--- a/web/web.go
+++ b/web/web.go
@@ -99,6 +99,7 @@ type Page struct {
Infos map[string]interface{} // For generic use (e.g. username for /monitoring/user/, job id for /monitoring/job/)
Config map[string]interface{} // UI settings for the currently logged in user (e.g. line width, ...)
Resampling *schema.ResampleConfig // If not nil, defines resampling trigger and resolutions
+ Redirect string // The originally requested URL, for intermediate login handling
}
func RenderTemplate(rw http.ResponseWriter, file string, page *Page) {