diff --git a/conf/app.ini b/conf/app.ini index 6374c242..e0620f31 100644 --- a/conf/app.ini +++ b/conf/app.ini @@ -29,6 +29,8 @@ KEY_FILE = custom/https/key.pem STATIC_ROOT_PATH = ; Application level GZIP support ENABLE_GZIP = false +; Landing page for non-logged users, can be "home" or "explore" +LANDING_PAGE = home [database] ; Either "mysql", "postgres" or "sqlite3", it's your choice diff --git a/modules/middleware/auth.go b/modules/middleware/auth.go index fc8e94bb..94bb1c14 100644 --- a/modules/middleware/auth.go +++ b/modules/middleware/auth.go @@ -29,6 +29,12 @@ func Toggle(options *ToggleOptions) macaron.Handler { return } + // Checking non-logged users landing page. + if !ctx.IsSigned && ctx.Req.RequestURI == "/" && setting.LandingPageUrl != setting.LANDING_PAGE_HOME { + ctx.Redirect(string(setting.LandingPageUrl)) + return + } + // Redirect to dashboard if user tries to visit any non-login page. if options.SignOutRequire && ctx.IsSigned && ctx.Req.RequestURI != "/" { ctx.Redirect(setting.AppSubUrl + "/") diff --git a/modules/setting/setting.go b/modules/setting/setting.go index cf34c2ed..a775847c 100644 --- a/modules/setting/setting.go +++ b/modules/setting/setting.go @@ -31,6 +31,13 @@ const ( FCGI Scheme = "fcgi" ) +type LandingPage string + +const ( + LANDING_PAGE_HOME LandingPage = "/" + LANDING_PAGE_EXPLORE LandingPage = "/explore" +) + var ( // App settings. AppVer string @@ -48,6 +55,7 @@ var ( CertFile, KeyFile string StaticRootPath string EnableGzip bool + LandingPageUrl LandingPage // Security settings. InstallLock bool @@ -197,6 +205,13 @@ func NewConfigContext() { LogRootPath = Cfg.MustValue("log", "ROOT_PATH", path.Join(workDir, "log")) EnableGzip = Cfg.MustBool("server", "ENABLE_GZIP") + switch Cfg.MustValue("server", "LANDING_PAGE", "home") { + case "explore": + LandingPageUrl = LANDING_PAGE_EXPLORE + default: + LandingPageUrl = LANDING_PAGE_HOME + } + InstallLock = Cfg.MustBool("security", "INSTALL_LOCK") SecretKey = Cfg.MustValue("security", "SECRET_KEY") LogInRememberDays = Cfg.MustInt("security", "LOGIN_REMEMBER_DAYS")