Browse Source

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

Add new config option '[admin] DISABLE_REGULAR_ORG_CREATION', by
default it's 'false'.
pull/3809/merge
Unknwon 8 years ago
parent
commit
b67ec01d41
No known key found for this signature in database
GPG Key ID: 25B575AE3213B2B3
  1. 6
      cmd/web.go
  2. 2
      conf/app.ini
  3. 2
      gogs.go
  4. 4
      models/user.go
  5. 7
      modules/setting/setting.go
  6. 2
      templates/.VERSION
  7. 2
      templates/base/head.tmpl

6
cmd/web.go

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

2
conf/app.ini

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

2
gogs.go

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

4
models/user.go

@ -170,6 +170,10 @@ func (u *User) CanCreateRepo() bool {
return u.NumRepos < u.MaxRepoCreation 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. // CanEditGitHook returns true if user can edit Git hooks.
func (u *User) CanEditGitHook() bool { func (u *User) CanEditGitHook() bool {
return u.IsAdmin || u.AllowGitHook return u.IsAdmin || u.AllowGitHook

7
modules/setting/setting.go

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

2
templates/.VERSION

@ -1 +1 @@
0.9.139.0210 0.9.140.0210

2
templates/base/head.tmpl

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

Loading…
Cancel
Save