Просмотр исходного кода

Added disable user sign up feature

Torkel Ödegaard 11 лет назад
Родитель
Сommit
04d03f73b3
9 измененных файлов с 21 добавлено и 6 удалено
  1. 1 1
      conf/grafana.ini
  2. 1 1
      grafana
  3. 1 1
      pkg/api/api.go
  4. 3 2
      pkg/api/login.go
  5. 5 0
      pkg/api/login_oauth.go
  6. 5 0
      pkg/api/signup.go
  7. 2 0
      pkg/cmd/web.go
  8. 1 1
      pkg/middleware/middleware.go
  9. 2 0
      pkg/setting/setting.go

+ 1 - 1
conf/grafana.ini

@@ -59,7 +59,7 @@ login_remember_days = 7
 cookie_username = grafana_user
 cookie_username = grafana_user
 cookie_remember_name = grafana_remember
 cookie_remember_name = grafana_remember
 ; disable user signup / registration
 ; disable user signup / registration
-; disable_user_signup = false, not implemented yet
+disable_user_signup = false
 
 
 [account.single]
 [account.single]
 ; Enable this feature to auto assign new users to a single account, suitable for NON multi tenant setups
 ; Enable this feature to auto assign new users to a single account, suitable for NON multi tenant setups

+ 1 - 1
grafana

@@ -1 +1 @@
-Subproject commit 3b5c813be71c4816f3c2ef40e4c1439a8026236f
+Subproject commit 740709da0493536269adfe1cafd0b93d975b02a2

+ 1 - 1
pkg/api/api.go

@@ -18,7 +18,7 @@ func Register(r *macaron.Macaron) {
 
 
 	// not logged in views
 	// not logged in views
 	r.Get("/", reqSignedIn, Index)
 	r.Get("/", reqSignedIn, Index)
-	r.Post("/logout", LogoutPost)
+	r.Get("/logout", Logout)
 	r.Post("/login", bind(dtos.LoginCommand{}), LoginPost)
 	r.Post("/login", bind(dtos.LoginCommand{}), LoginPost)
 	r.Get("/login/:name", OAuthLogin)
 	r.Get("/login/:name", OAuthLogin)
 	r.Get("/login", LoginView)
 	r.Get("/login", LoginView)

+ 3 - 2
pkg/api/login.go

@@ -25,6 +25,7 @@ func LoginView(c *middleware.Context) {
 	settings := c.Data["Settings"].(map[string]interface{})
 	settings := c.Data["Settings"].(map[string]interface{})
 	settings["googleAuthEnabled"] = setting.OAuthService.Google
 	settings["googleAuthEnabled"] = setting.OAuthService.Google
 	settings["githubAuthEnabled"] = setting.OAuthService.GitHub
 	settings["githubAuthEnabled"] = setting.OAuthService.GitHub
+	settings["disableUserSignUp"] = setting.DisableUserSignUp
 
 
 	// Check auto-login.
 	// Check auto-login.
 	uname := c.GetCookie(setting.CookieUserName)
 	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)
 	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.CookieUserName, "", -1, setting.AppSubUrl+"/")
 	c.SetCookie(setting.CookieRememberName, "", -1, setting.AppSubUrl+"/")
 	c.SetCookie(setting.CookieRememberName, "", -1, setting.AppSubUrl+"/")
 	c.Session.Destory(c.Context)
 	c.Session.Destory(c.Context)
-	c.JsonOK("logged out")
+	c.Redirect(setting.AppSubUrl + "/login")
 }
 }

+ 5 - 0
pkg/api/login_oauth.go

@@ -56,6 +56,11 @@ func OAuthLogin(ctx *middleware.Context) {
 
 
 	// create account if missing
 	// create account if missing
 	if err == m.ErrUserNotFound {
 	if err == m.ErrUserNotFound {
+		if setting.DisableUserSignUp {
+			ctx.Redirect(setting.AppSubUrl + "/login")
+			return
+		}
+
 		cmd := m.CreateUserCommand{
 		cmd := m.CreateUserCommand{
 			Login:   userInfo.Email,
 			Login:   userInfo.Email,
 			Email:   userInfo.Email,
 			Email:   userInfo.Email,

+ 5 - 0
pkg/api/signup.go

@@ -4,10 +4,15 @@ import (
 	"github.com/torkelo/grafana-pro/pkg/bus"
 	"github.com/torkelo/grafana-pro/pkg/bus"
 	"github.com/torkelo/grafana-pro/pkg/middleware"
 	"github.com/torkelo/grafana-pro/pkg/middleware"
 	m "github.com/torkelo/grafana-pro/pkg/models"
 	m "github.com/torkelo/grafana-pro/pkg/models"
+	"github.com/torkelo/grafana-pro/pkg/setting"
 )
 )
 
 
 // POST /api/user/signup
 // POST /api/user/signup
 func SignUp(c *middleware.Context, cmd m.CreateUserCommand) {
 func SignUp(c *middleware.Context, cmd m.CreateUserCommand) {
+	if setting.DisableUserSignUp {
+		c.JsonApiErr(401, "User signup is disabled", nil)
+		return
+	}
 
 
 	cmd.Login = cmd.Email
 	cmd.Login = cmd.Email
 
 

+ 2 - 0
pkg/cmd/web.go

@@ -36,6 +36,8 @@ var CmdWeb = cli.Command{
 }
 }
 
 
 func newMacaron() *macaron.Macaron {
 func newMacaron() *macaron.Macaron {
+	macaron.Env = setting.Env
+
 	m := macaron.New()
 	m := macaron.New()
 	m.Use(middleware.Logger())
 	m.Use(middleware.Logger())
 	m.Use(macaron.Recovery())
 	m.Use(macaron.Recovery())

+ 1 - 1
pkg/middleware/middleware.go

@@ -83,7 +83,7 @@ func GetContextHandler() macaron.Handler {
 func (ctx *Context) Handle(status int, title string, err error) {
 func (ctx *Context) Handle(status int, title string, err error) {
 	if err != nil {
 	if err != nil {
 		log.Error(4, "%s: %v", title, err)
 		log.Error(4, "%s: %v", title, err)
-		if macaron.Env != macaron.PROD {
+		if setting.Env != setting.PROD {
 			ctx.Data["ErrorMsg"] = err
 			ctx.Data["ErrorMsg"] = err
 		}
 		}
 	}
 	}

+ 2 - 0
pkg/setting/setting.go

@@ -63,6 +63,7 @@ var (
 	LogInRememberDays  int
 	LogInRememberDays  int
 	CookieUserName     string
 	CookieUserName     string
 	CookieRememberName string
 	CookieRememberName string
+	DisableUserSignUp  bool
 
 
 	// single account
 	// single account
 	SingleAccountMode  bool
 	SingleAccountMode  bool
@@ -196,6 +197,7 @@ func NewConfigContext() {
 	LogInRememberDays = security.Key("login_remember_days").MustInt()
 	LogInRememberDays = security.Key("login_remember_days").MustInt()
 	CookieUserName = security.Key("cookie_username").String()
 	CookieUserName = security.Key("cookie_username").String()
 	CookieRememberName = security.Key("cookie_remember_name").String()
 	CookieRememberName = security.Key("cookie_remember_name").String()
+	DisableUserSignUp = security.Key("disable_user_signup").MustBool(false)
 
 
 	// admin
 	// admin
 	AdminUser = security.Key("admin_user").String()
 	AdminUser = security.Key("admin_user").String()