Pārlūkot izejas kodu

Able to disable non-admin to create new organization (#1556)

Add new config option '[admin] DISABLE_REGULAR_ORG_CREATION', by
default it's 'false'.
Unknwon 8 gadi atpakaļ
vecāks
revīzija
b67ec01d41
7 mainītis faili ar 25 papildinājumiem un 4 dzēšanām
  1. 8 2
      cmd/web.go
  2. 2 0
      conf/app.ini
  3. 1 1
      gogs.go
  4. 4 0
      models/user.go
  5. 7 0
      modules/setting/setting.go
  6. 1 1
      templates/.VERSION
  7. 2 0
      templates/base/head.tmpl

+ 8 - 2
cmd/web.go

@@ -362,8 +362,14 @@ func runWeb(ctx *cli.Context) error {
 
 	// ***** START: Organization *****
 	m.Group("/org", func() {
-		m.Get("/create", org.Create)
-		m.Post("/create", bindIgnErr(auth.CreateOrgForm{}), org.CreatePost)
+		m.Group("", func() {
+			m.Get("/create", org.Create)
+			m.Post("/create", bindIgnErr(auth.CreateOrgForm{}), org.CreatePost)
+		}, func(ctx *context.Context) {
+			if !ctx.User.CanCreateOrganization() {
+				ctx.NotFound()
+			}
+		})
 
 		m.Group("/:org", func() {
 			m.Get("/dashboard", user.Dashboard)

+ 2 - 0
conf/app.ini

@@ -171,6 +171,8 @@ SSL_MODE = disable
 PATH = data/gogs.db
 
 [admin]
+; Disable regular (non-admin) users to create organizations
+DISABLE_REGULAR_ORG_CREATION = false
 
 [security]
 INSTALL_LOCK = false

+ 1 - 1
gogs.go

@@ -16,7 +16,7 @@ import (
 	"github.com/gogits/gogs/modules/setting"
 )
 
-const APP_VER = "0.9.139.0210"
+const APP_VER = "0.9.140.0210"
 
 func init() {
 	setting.AppVer = APP_VER

+ 4 - 0
models/user.go

@@ -170,6 +170,10 @@ func (u *User) CanCreateRepo() bool {
 	return u.NumRepos < u.MaxRepoCreation
 }
 
+func (u *User) CanCreateOrganization() bool {
+	return !setting.Admin.DisableRegularOrgCreation || u.IsAdmin
+}
+
 // CanEditGitHook returns true if user can edit Git hooks.
 func (u *User) CanEditGitHook() bool {
 	return u.IsAdmin || u.AllowGitHook

+ 7 - 0
modules/setting/setting.go

@@ -170,6 +170,11 @@ var (
 		FileExtensions      []string
 	}
 
+	// Admin settings
+	Admin struct {
+		DisableRegularOrgCreation bool
+	}
+
 	// Picture settings
 	AvatarUploadPath      string
 	GravatarSource        string
@@ -568,6 +573,8 @@ func NewContext() {
 		log.Fatal(4, "Fail to map UI settings: %v", err)
 	} else if err = Cfg.Section("markdown").MapTo(&Markdown); err != nil {
 		log.Fatal(4, "Fail to map Markdown settings: %v", err)
+	} else if err = Cfg.Section("admin").MapTo(&Admin); err != nil {
+		log.Fatal(4, "Fail to map Admin settings: %v", err)
 	} else if err = Cfg.Section("cron").MapTo(&Cron); err != nil {
 		log.Fatal(4, "Fail to map Cron settings: %v", err)
 	} else if err = Cfg.Section("git").MapTo(&Git); err != nil {

+ 1 - 1
templates/.VERSION

@@ -1 +1 @@
-0.9.139.0210
+0.9.140.0210

+ 2 - 0
templates/base/head.tmpl

@@ -93,9 +93,11 @@
 												<a class="item" href="{{AppSubUrl}}/repo/migrate">
 													<i class="octicon octicon-repo-clone"></i> {{.i18n.Tr "new_migrate"}}
 												</a>
+												{{if .SignedUser.CanCreateOrganization}}
 												<a class="item" href="{{AppSubUrl}}/org/create">
 													<i class="octicon octicon-organization"></i> {{.i18n.Tr "new_org"}}
 												</a>
+												{{end}}
 											</div><!-- end content create new menu -->
 										</div><!-- end dropdown menu create new -->