Skip to content

Commit f0a6e8c

Browse files
committed
Max permission of external wiki and issues should be read
1 parent 71a5284 commit f0a6e8c

File tree

5 files changed

+65
-52
lines changed

5 files changed

+65
-52
lines changed

models/perm/access_mode.go

-16
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ package perm
77
import (
88
"fmt"
99

10-
unit_model "code.gitea.io/gitea/models/unit"
1110
"code.gitea.io/gitea/modules/log"
1211
)
1312

@@ -62,18 +61,3 @@ func ParseAccessMode(permission string) AccessMode {
6261
return AccessModeNone
6362
}
6463
}
65-
66-
// MinUnitPerms returns the minial permission of the permission map
67-
func MinUnitPerms(unitsMap map[unit_model.Type]AccessMode) AccessMode {
68-
var res = AccessModeNone
69-
for _, mode := range unitsMap {
70-
if mode > AccessModeNone {
71-
if res == AccessModeNone {
72-
res = mode
73-
} else if mode < res {
74-
res = mode
75-
}
76-
}
77-
}
78-
return res
79-
}

models/unit/unit.go

+30-5
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"fmt"
99
"strings"
1010

11+
"code.gitea.io/gitea/models/perm"
1112
"code.gitea.io/gitea/modules/log"
1213
"code.gitea.io/gitea/modules/setting"
1314
)
@@ -171,11 +172,12 @@ func (u *Type) CanBeDefault() bool {
171172

172173
// Unit is a section of one repository
173174
type Unit struct {
174-
Type Type
175-
NameKey string
176-
URI string
177-
DescKey string
178-
Idx int
175+
Type Type
176+
NameKey string
177+
URI string
178+
DescKey string
179+
Idx int
180+
MaxPerms perm.AccessMode
179181
}
180182

181183
// CanDisable returns if this unit could be disabled.
@@ -199,6 +201,7 @@ var (
199201
"/",
200202
"repo.code.desc",
201203
0,
204+
perm.AccessModeOwner,
202205
}
203206

204207
UnitIssues = Unit{
@@ -207,6 +210,7 @@ var (
207210
"/issues",
208211
"repo.issues.desc",
209212
1,
213+
perm.AccessModeOwner,
210214
}
211215

212216
UnitExternalTracker = Unit{
@@ -215,6 +219,7 @@ var (
215219
"/issues",
216220
"repo.ext_issues.desc",
217221
1,
222+
perm.AccessModeRead,
218223
}
219224

220225
UnitPullRequests = Unit{
@@ -223,6 +228,7 @@ var (
223228
"/pulls",
224229
"repo.pulls.desc",
225230
2,
231+
perm.AccessModeOwner,
226232
}
227233

228234
UnitReleases = Unit{
@@ -231,6 +237,7 @@ var (
231237
"/releases",
232238
"repo.releases.desc",
233239
3,
240+
perm.AccessModeOwner,
234241
}
235242

236243
UnitWiki = Unit{
@@ -239,6 +246,7 @@ var (
239246
"/wiki",
240247
"repo.wiki.desc",
241248
4,
249+
perm.AccessModeOwner,
242250
}
243251

244252
UnitExternalWiki = Unit{
@@ -247,6 +255,7 @@ var (
247255
"/wiki",
248256
"repo.ext_wiki.desc",
249257
4,
258+
perm.AccessModeRead,
250259
}
251260

252261
UnitProjects = Unit{
@@ -255,6 +264,7 @@ var (
255264
"/projects",
256265
"repo.projects.desc",
257266
5,
267+
perm.AccessModeOwner,
258268
}
259269

260270
// Units contains all the units
@@ -306,3 +316,18 @@ func AllUnitKeyNames() []string {
306316
}
307317
return res
308318
}
319+
320+
// MinUnitPerms returns the minial permission of the permission map
321+
func MinUnitPerms(unitsMap map[Type]perm.AccessMode) perm.AccessMode {
322+
var res = perm.AccessModeNone
323+
for _, mode := range unitsMap {
324+
if mode > perm.AccessModeNone {
325+
if res == perm.AccessModeNone {
326+
res = mode
327+
} else if mode < res {
328+
res = mode
329+
}
330+
}
331+
}
332+
return res
333+
}

routers/api/v1/org/team.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111

1212
"code.gitea.io/gitea/models"
1313
"code.gitea.io/gitea/models/perm"
14+
"code.gitea.io/gitea/models/unit"
1415
unit_model "code.gitea.io/gitea/models/unit"
1516
"code.gitea.io/gitea/modules/context"
1617
"code.gitea.io/gitea/modules/convert"
@@ -209,7 +210,7 @@ func CreateTeam(ctx *context.APIContext) {
209210

210211
var p = perm.ParseAccessMode(form.Permission)
211212
if p < perm.AccessModeAdmin && len(form.UnitsMap) > 0 {
212-
p = perm.MinUnitPerms(convertUnitsMap(form.UnitsMap))
213+
p = unit.MinUnitPerms(convertUnitsMap(form.UnitsMap))
213214
}
214215

215216
team := &models.Team{
@@ -293,7 +294,7 @@ func EditTeam(ctx *context.APIContext) {
293294
// Validate permission level.
294295
var p = perm.ParseAccessMode(form.Permission)
295296
if p < perm.AccessModeAdmin && len(form.UnitsMap) > 0 {
296-
p = perm.MinUnitPerms(convertUnitsMap(form.UnitsMap))
297+
p = unit.MinUnitPerms(convertUnitsMap(form.UnitsMap))
297298
}
298299

299300
if team.Authorize != p {

routers/web/org/teams.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414

1515
"code.gitea.io/gitea/models"
1616
"code.gitea.io/gitea/models/perm"
17+
"code.gitea.io/gitea/models/unit"
1718
unit_model "code.gitea.io/gitea/models/unit"
1819
user_model "code.gitea.io/gitea/models/user"
1920
"code.gitea.io/gitea/modules/base"
@@ -249,7 +250,7 @@ func NewTeamPost(ctx *context.Context) {
249250
var unitPerms = getUnitPerms(ctx.Req.Form)
250251
var p = perm.ParseAccessMode(form.Permission)
251252
if p < perm.AccessModeAdmin {
252-
p = perm.MinUnitPerms(unitPerms)
253+
p = unit.MinUnitPerms(unitPerms)
253254
}
254255

255256
t := &models.Team{

templates/org/team/new.tmpl

+30-28
Original file line numberDiff line numberDiff line change
@@ -89,35 +89,37 @@
8989
</thead>
9090
<tbody>
9191
{{range $t, $unit := $.Units}}
92-
<tr>
93-
<td>
94-
{{if $unit.Type.UnitGlobalDisabled}}
95-
<div class="field tooltip" data-content="{{$.i18n.Tr "repo.unit_disabled"}}">
96-
{{else}}
97-
<div class="field">
98-
{{end}}
99-
<div class="ui">
100-
<label>{{$.i18n.Tr $unit.NameKey}}{{if $unit.Type.UnitGlobalDisabled}} {{$.i18n.Tr "org.team_unit_disabled"}}{{end}}</label>
101-
<span class="help">{{$.i18n.Tr $unit.DescKey}}</span>
92+
<tr>
93+
<td>
94+
{{if $unit.Type.UnitGlobalDisabled}}
95+
<div class="field tooltip" data-content="{{$.i18n.Tr "repo.unit_disabled"}}">
96+
{{else}}
97+
<div class="field">
98+
{{end}}
99+
<div class="ui">
100+
<label>{{$.i18n.Tr $unit.NameKey}}{{if $unit.Type.UnitGlobalDisabled}} {{$.i18n.Tr "org.team_unit_disabled"}}{{end}}</label>
101+
<span class="help">{{$.i18n.Tr $unit.DescKey}}</span>
102+
</div>
102103
</div>
103-
</div>
104-
</td>
105-
<td class="center aligned">
106-
<div class="ui radio checkbox">
107-
<input type="radio" class="hidden" name="unit_{{$unit.Type.Value}}" value="0"{{if (eq ($.Team.UnitAccessMode $unit.Type) 0)}} checked{{end}}>
108-
</div>
109-
</td>
110-
<td class="center aligned">
111-
<div class="ui radio checkbox">
112-
<input type="radio" class="hidden" name="unit_{{$unit.Type.Value}}" value="1"{{if or (eq $.Team.ID 0) (eq ($.Team.UnitAccessMode $unit.Type) 1)}} checked{{end}}>
113-
</div>
114-
</td>
115-
<td class="center aligned">
116-
<div class="ui radio checkbox">
117-
<input type="radio" class="hidden" name="unit_{{$unit.Type.Value}}" value="2"{{if (eq ($.Team.UnitAccessMode $unit.Type) 2)}} checked{{end}}>
118-
</div>
119-
</td>
120-
</tr>
104+
</td>
105+
<td class="center aligned">
106+
<div class="ui radio checkbox">
107+
<input type="radio" class="hidden" name="unit_{{$unit.Type.Value}}" value="0"{{if or ($unit.Type.UnitGlobalDisabled) (eq ($.Team.UnitAccessMode $unit.Type) 0)}} checked{{end}}>
108+
</div>
109+
</td>
110+
<td class="center aligned">
111+
<div class="ui radio checkbox">
112+
<input type="radio" class="hidden" name="unit_{{$unit.Type.Value}}" value="1"{{if or (eq $.Team.ID 0) (eq ($.Team.UnitAccessMode $unit.Type) 1)}} checked{{end}} {{if $unit.Type.UnitGlobalDisabled}}disabled{{end}}>
113+
</div>
114+
</td>
115+
<td class="center aligned">
116+
{{if ge $unit.MaxPerms 2}}
117+
<div class="ui radio checkbox">
118+
<input type="radio" class="hidden" name="unit_{{$unit.Type.Value}}" value="2"{{if (eq ($.Team.UnitAccessMode $unit.Type) 2)}} checked{{end}} {{if $unit.Type.UnitGlobalDisabled}}disabled{{end}}>
119+
</div>
120+
{{end}}
121+
</td>
122+
</tr>
121123
{{end}}
122124
</tbody>
123125
</table>

0 commit comments

Comments
 (0)