From 226e9cbbde64f2f9c8d8c7af07210851f78f8684 Mon Sep 17 00:00:00 2001 From: Chteufleur Date: Fri, 6 Nov 2015 19:15:26 +0100 Subject: [PATCH] Add good redirection after login --- controllers/login.go | 22 +++++++++++++++++++--- controllers/relay.go | 4 ++-- controllers/sensors.go | 2 +- controllers/user.go | 2 +- models/variables/variables.go | 7 ++++--- views/login.tpl | 1 + 6 files changed, 28 insertions(+), 10 deletions(-) diff --git a/controllers/login.go b/controllers/login.go index cf20caa..27b739b 100644 --- a/controllers/login.go +++ b/controllers/login.go @@ -15,9 +15,15 @@ func (c *LoginController) Prepare() { } func (c *LoginController) Get() { + routeRedirect := c.Ctx.Input.Param(":route") + sess := c.GetSession(variables.SessionName) if sess != nil { - c.Redirect(variables.UserRoute, 302) + if routeRedirect == "" { + c.Redirect(variables.UserRoute, 302) + } else { + c.Redirect("/"+routeRedirect, 302) + } return } @@ -25,9 +31,15 @@ func (c *LoginController) Get() { } func (c *LoginController) Post() { + routeRedirect := c.Ctx.Input.Param(":route") + sess := c.GetSession(variables.SessionName) if sess != nil { - c.Redirect(variables.RootRoute, 302) + if routeRedirect == "" { + c.Redirect(variables.RootRoute, 302) + } else { + c.Redirect("/"+routeRedirect, 302) + } return } @@ -39,7 +51,11 @@ func (c *LoginController) Post() { } c.SetSession(variables.SessionName, login) - c.Redirect(variables.UserRoute, 302) + if routeRedirect == "" { + c.Redirect(variables.UserRoute, 302) + } else { + c.Redirect("/"+routeRedirect, 302) + } } func isLoginOK(lgn, pwd string) bool { diff --git a/controllers/relay.go b/controllers/relay.go index d3866cf..6277233 100644 --- a/controllers/relay.go +++ b/controllers/relay.go @@ -21,7 +21,7 @@ type ViewRelayController struct { func (c *ViewRelayController) Prepare() { sess := c.GetSession(variables.SessionName) if sess == nil { - c.Redirect(variables.LoginRoute, 302) + c.Redirect(variables.LoginRouteNoRegex+variables.ViewRelaysRoute, 302) } else { c.Data["IsAuthentificated"] = true } @@ -93,7 +93,7 @@ type CommandRelayController struct { func (c *CommandRelayController) Prepare() { sess := c.GetSession(variables.SessionName) if sess == nil { - c.Redirect(variables.LoginRoute, 302) + c.Redirect(variables.LoginRouteNoRegex+variables.CommandRelayRoute, 302) } } diff --git a/controllers/sensors.go b/controllers/sensors.go index 832c836..d2841ac 100644 --- a/controllers/sensors.go +++ b/controllers/sensors.go @@ -19,7 +19,7 @@ type SensorsController struct { func (c *SensorsController) Prepare() { sess := c.GetSession(variables.SessionName) if sess == nil { - c.Redirect(variables.LoginRoute, 302) + c.Redirect(variables.LoginRouteNoRegex+variables.SensorsRoute, 302) } else { c.Data["IsAuthentificated"] = true } diff --git a/controllers/user.go b/controllers/user.go index d395d84..8d8040a 100644 --- a/controllers/user.go +++ b/controllers/user.go @@ -14,7 +14,7 @@ type UserController struct { func (c *UserController) Prepare() { sess := c.GetSession(variables.SessionName) if sess == nil { - c.Redirect(variables.LoginRoute, 302) + c.Redirect(variables.LoginRouteNoRegex+variables.UserRoute, 302) } else { c.Data["IsAuthentificated"] = true } diff --git a/models/variables/variables.go b/models/variables/variables.go index 21366db..ed4ed58 100644 --- a/models/variables/variables.go +++ b/models/variables/variables.go @@ -20,7 +20,8 @@ var ( CommandRelayRoute = "/command/relay/" + sensorMacRegex - SensorsRoute = "/sensors" - LoginRoute = "/login" - UserRoute = "/user" + SensorsRoute = "/sensors" + LoginRoute = "/login/:route(.*)" + LoginRouteNoRegex = "/login" + UserRoute = "/user" ) diff --git a/views/login.tpl b/views/login.tpl index fde6f9b..a8d6e69 100644 --- a/views/login.tpl +++ b/views/login.tpl @@ -51,6 +51,7 @@