Skip to content

Commit 92bf953

Browse files
ashimokawa6543
authored andcommitted
Allow setting wiki writeable for all users on an instance
1 parent d985d4b commit 92bf953

File tree

6 files changed

+37
-10
lines changed

6 files changed

+37
-10
lines changed

models/repo_permission.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,16 @@ func (p *Permission) UnitAccessMode(unitType UnitType) AccessMode {
4848
return p.UnitsMode[unitType]
4949
}
5050

51+
// AllowWriteAll returns true if a all users are on the gitea instance have write access to the unit
52+
func (p *Permission) AllowWriteAll(unitType UnitType) bool {
53+
for _, u := range p.Units {
54+
if u.Type == unitType {
55+
return u.AllowWriteAll
56+
}
57+
}
58+
return false
59+
}
60+
5161
// CanAccess returns true if user has mode access to the unit of the repository
5262
func (p *Permission) CanAccess(mode AccessMode, unitType UnitType) bool {
5363
return p.UnitAccessMode(unitType) >= mode
@@ -254,6 +264,9 @@ func getUserRepoPermission(e Engine, repo *Repository, user *User) (perm Permiss
254264
if !found && !repo.IsPrivate && !user.IsRestricted {
255265
if _, ok := perm.UnitsMode[u.Type]; !ok {
256266
perm.UnitsMode[u.Type] = AccessModeRead
267+
if u.AllowWriteAll == true {
268+
perm.UnitsMode[u.Type] = AccessModeWrite
269+
}
257270
}
258271
}
259272
}

models/repo_unit.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,12 @@ import (
1616

1717
// RepoUnit describes all units of a repository
1818
type RepoUnit struct {
19-
ID int64
20-
RepoID int64 `xorm:"INDEX(s)"`
21-
Type UnitType `xorm:"INDEX(s)"`
22-
Config convert.Conversion `xorm:"TEXT"`
23-
CreatedUnix timeutil.TimeStamp `xorm:"INDEX CREATED"`
19+
ID int64
20+
RepoID int64 `xorm:"INDEX(s)"`
21+
Type UnitType `xorm:"INDEX(s)"`
22+
AllowWriteAll bool
23+
Config convert.Conversion `xorm:"TEXT"`
24+
CreatedUnix timeutil.TimeStamp `xorm:"INDEX CREATED"`
2425
}
2526

2627
// UnitConfig describes common unit config

options/locale/locale_en-US.ini

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1658,6 +1658,7 @@ settings.advanced_settings = Advanced Settings
16581658
settings.wiki_desc = Enable Repository Wiki
16591659
settings.use_internal_wiki = Use Built-In Wiki
16601660
settings.use_external_wiki = Use External Wiki
1661+
settings.allow_wiki_edit_all = Allow Wiki editing by all users
16611662
settings.external_wiki_url = External Wiki URL
16621663
settings.external_wiki_url_error = The external wiki URL is not a valid URL.
16631664
settings.external_wiki_url_desc = Visitors are redirected to the external wiki URL when clicking the wiki tab.

routers/web/repo/setting.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -347,9 +347,10 @@ func SettingsPost(ctx *context.Context) {
347347
deleteUnitTypes = append(deleteUnitTypes, models.UnitTypeWiki)
348348
} else if form.EnableWiki && !form.EnableExternalWiki && !models.UnitTypeWiki.UnitGlobalDisabled() {
349349
units = append(units, models.RepoUnit{
350-
RepoID: repo.ID,
351-
Type: models.UnitTypeWiki,
352-
Config: new(models.UnitConfig),
350+
RepoID: repo.ID,
351+
Type: models.UnitTypeWiki,
352+
Config: new(models.UnitConfig), // TODO: introduce a WikiConfig
353+
AllowWriteAll: form.AllowWikiEditAll,
353354
})
354355
deleteUnitTypes = append(deleteUnitTypes, models.UnitTypeExternalWiki)
355356
} else {

services/forms/repo_form.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ type RepoSettingForm struct {
133133

134134
// Advanced settings
135135
EnableWiki bool
136+
AllowWikiEditAll bool
136137
EnableExternalWiki bool
137138
ExternalWikiURL string
138139
EnableIssues bool

templates/repo/settings/options.tmpl

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -259,17 +259,27 @@
259259
{{else}}
260260
<div class="ui radio checkbox">
261261
{{end}}
262-
<input class="hidden enable-system-radio" tabindex="0" name="enable_external_wiki" type="radio" value="false" data-target="#external_wiki_box" {{if not (.Repository.UnitEnabled $.UnitTypeExternalWiki)}}checked{{end}}/>
262+
<input class="hidden enable-system-radio" tabindex="0" name="enable_external_wiki" type="radio" value="false" data-target="#external_wiki_box" data-context="#internal_wiki_box" {{if not (.Repository.UnitEnabled $.UnitTypeExternalWiki)}}checked{{end}}/>
263263
<label>{{.i18n.Tr "repo.settings.use_internal_wiki"}}</label>
264264
</div>
265265
</div>
266+
{{if .Repository.Owner.IsOrganization}}
267+
<div class="field {{if (.Repository.UnitEnabled $.UnitTypeExternalWiki)}}disabled{{end}}" id="internal_wiki_box">
268+
<div class="field">
269+
<div class="ui checkbox">
270+
<input name="allow_wiki_edit_all" type="checkbox" {{if .Permission.AllowWriteAll $.UnitTypeWiki}}checked{{end}}>
271+
<label>{{.i18n.Tr "repo.settings.allow_wiki_edit_all"}}</label>
272+
</div>
273+
</div>
274+
</div>
275+
{{end}}
266276
<div class="field">
267277
{{if .UnitTypeExternalWiki.UnitGlobalDisabled}}
268278
<div class="ui radio checkbox poping up disabled" data-content="{{.i18n.Tr "repo.unit_disabled"}}">
269279
{{else}}
270280
<div class="ui radio checkbox">
271281
{{end}}
272-
<input class="hidden enable-system-radio" tabindex="0" name="enable_external_wiki" type="radio" value="true" data-target="#external_wiki_box" {{if .Repository.UnitEnabled $.UnitTypeExternalWiki}}checked{{end}}/>
282+
<input class="hidden enable-system-radio" tabindex="0" name="enable_external_wiki" type="radio" value="true" data-target="#external_wiki_box" data-context="#internal_wiki_box" {{if .Repository.UnitEnabled $.UnitTypeExternalWiki}}checked{{end}}/>
273283
<label>{{.i18n.Tr "repo.settings.use_external_wiki"}}</label>
274284
</div>
275285
</div>

0 commit comments

Comments
 (0)