From 04d03f73b39e268792634500a954034eb909b63f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Thu, 29 Jan 2015 15:46:54 +0100 Subject: [PATCH] Added disable user sign up feature --- conf/grafana.ini | 2 +- grafana | 2 +- pkg/api/api.go | 2 +- pkg/api/login.go | 5 +++-- pkg/api/login_oauth.go | 5 +++++ pkg/api/signup.go | 5 +++++ pkg/cmd/web.go | 2 ++ pkg/middleware/middleware.go | 2 +- pkg/setting/setting.go | 2 ++ 9 files changed, 21 insertions(+), 6 deletions(-) diff --git a/conf/grafana.ini b/conf/grafana.ini index 1fea6f41cc4..4fc77206190 100644 --- a/conf/grafana.ini +++ b/conf/grafana.ini @@ -59,7 +59,7 @@ login_remember_days = 7 cookie_username = grafana_user cookie_remember_name = grafana_remember ; disable user signup / registration -; disable_user_signup = false, not implemented yet +disable_user_signup = false [account.single] ; Enable this feature to auto assign new users to a single account, suitable for NON multi tenant setups diff --git a/grafana b/grafana index 3b5c813be71..740709da049 160000 --- a/grafana +++ b/grafana @@ -1 +1 @@ -Subproject commit 3b5c813be71c4816f3c2ef40e4c1439a8026236f +Subproject commit 740709da0493536269adfe1cafd0b93d975b02a2 diff --git a/pkg/api/api.go b/pkg/api/api.go index ab0b76c39c0..0acd05d704d 100644 --- a/pkg/api/api.go +++ b/pkg/api/api.go @@ -18,7 +18,7 @@ func Register(r *macaron.Macaron) { // not logged in views r.Get("/", reqSignedIn, Index) - r.Post("/logout", LogoutPost) + r.Get("/logout", Logout) r.Post("/login", bind(dtos.LoginCommand{}), LoginPost) r.Get("/login/:name", OAuthLogin) r.Get("/login", LoginView) diff --git a/pkg/api/login.go b/pkg/api/login.go index 278ad86f779..7614502661f 100644 --- a/pkg/api/login.go +++ b/pkg/api/login.go @@ -25,6 +25,7 @@ func LoginView(c *middleware.Context) { settings := c.Data["Settings"].(map[string]interface{}) settings["googleAuthEnabled"] = setting.OAuthService.Google settings["githubAuthEnabled"] = setting.OAuthService.GitHub + settings["disableUserSignUp"] = setting.DisableUserSignUp // Check auto-login. uname := c.GetCookie(setting.CookieUserName) @@ -122,9 +123,9 @@ func loginUserWithUser(user *m.User, c *middleware.Context) { c.Session.Set(middleware.SESS_KEY_USERID, user.Id) } -func LogoutPost(c *middleware.Context) { +func Logout(c *middleware.Context) { c.SetCookie(setting.CookieUserName, "", -1, setting.AppSubUrl+"/") c.SetCookie(setting.CookieRememberName, "", -1, setting.AppSubUrl+"/") c.Session.Destory(c.Context) - c.JsonOK("logged out") + c.Redirect(setting.AppSubUrl + "/login") } diff --git a/pkg/api/login_oauth.go b/pkg/api/login_oauth.go index 3d1bca68d5f..5f76e95386e 100644 --- a/pkg/api/login_oauth.go +++ b/pkg/api/login_oauth.go @@ -56,6 +56,11 @@ func OAuthLogin(ctx *middleware.Context) { // create account if missing if err == m.ErrUserNotFound { + if setting.DisableUserSignUp { + ctx.Redirect(setting.AppSubUrl + "/login") + return + } + cmd := m.CreateUserCommand{ Login: userInfo.Email, Email: userInfo.Email, diff --git a/pkg/api/signup.go b/pkg/api/signup.go index 0bfde3c155f..572a86f69a4 100644 --- a/pkg/api/signup.go +++ b/pkg/api/signup.go @@ -4,10 +4,15 @@ import ( "github.com/torkelo/grafana-pro/pkg/bus" "github.com/torkelo/grafana-pro/pkg/middleware" m "github.com/torkelo/grafana-pro/pkg/models" + "github.com/torkelo/grafana-pro/pkg/setting" ) // POST /api/user/signup func SignUp(c *middleware.Context, cmd m.CreateUserCommand) { + if setting.DisableUserSignUp { + c.JsonApiErr(401, "User signup is disabled", nil) + return + } cmd.Login = cmd.Email diff --git a/pkg/cmd/web.go b/pkg/cmd/web.go index 8870816466d..73bd64d5f10 100644 --- a/pkg/cmd/web.go +++ b/pkg/cmd/web.go @@ -36,6 +36,8 @@ var CmdWeb = cli.Command{ } func newMacaron() *macaron.Macaron { + macaron.Env = setting.Env + m := macaron.New() m.Use(middleware.Logger()) m.Use(macaron.Recovery()) diff --git a/pkg/middleware/middleware.go b/pkg/middleware/middleware.go index 411ee62547f..a7cdd55abfc 100644 --- a/pkg/middleware/middleware.go +++ b/pkg/middleware/middleware.go @@ -83,7 +83,7 @@ func GetContextHandler() macaron.Handler { func (ctx *Context) Handle(status int, title string, err error) { if err != nil { log.Error(4, "%s: %v", title, err) - if macaron.Env != macaron.PROD { + if setting.Env != setting.PROD { ctx.Data["ErrorMsg"] = err } } diff --git a/pkg/setting/setting.go b/pkg/setting/setting.go index 606887aba33..41e1d89b4a5 100644 --- a/pkg/setting/setting.go +++ b/pkg/setting/setting.go @@ -63,6 +63,7 @@ var ( LogInRememberDays int CookieUserName string CookieRememberName string + DisableUserSignUp bool // single account SingleAccountMode bool @@ -196,6 +197,7 @@ func NewConfigContext() { LogInRememberDays = security.Key("login_remember_days").MustInt() CookieUserName = security.Key("cookie_username").String() CookieRememberName = security.Key("cookie_remember_name").String() + DisableUserSignUp = security.Key("disable_user_signup").MustBool(false) // admin AdminUser = security.Key("admin_user").String()