Skip to content

Commit 5191149

Browse files
committed
Merge branch 'main' into lunny/refactor_reftype
# Conflicts: # routers/web/web.go
2 parents 9fe761c + a98a836 commit 5191149

26 files changed

+456
-418
lines changed

models/perm/access/repo_permission.go

+32-15
Original file line numberDiff line numberDiff line change
@@ -175,10 +175,14 @@ func (p *Permission) LogString() string {
175175
return fmt.Sprintf(format, args...)
176176
}
177177

178-
func applyEveryoneRepoPermission(user *user_model.User, perm *Permission) {
178+
func finalProcessRepoUnitPermission(user *user_model.User, perm *Permission) {
179179
if user == nil || user.ID <= 0 {
180+
// for anonymous access, it could be:
181+
// AccessMode is None or Read, units has repo units, unitModes is nil
180182
return
181183
}
184+
185+
// apply everyone access permissions
182186
for _, u := range perm.units {
183187
if u.EveryoneAccessMode >= perm_model.AccessModeRead && u.EveryoneAccessMode > perm.everyoneAccessMode[u.Type] {
184188
if perm.everyoneAccessMode == nil {
@@ -187,17 +191,40 @@ func applyEveryoneRepoPermission(user *user_model.User, perm *Permission) {
187191
perm.everyoneAccessMode[u.Type] = u.EveryoneAccessMode
188192
}
189193
}
194+
195+
if perm.unitsMode == nil {
196+
// if unitsMode is not set, then it means that the default p.AccessMode applies to all units
197+
return
198+
}
199+
200+
// remove no permission units
201+
origPermUnits := perm.units
202+
perm.units = make([]*repo_model.RepoUnit, 0, len(perm.units))
203+
for _, u := range origPermUnits {
204+
shouldKeep := false
205+
for t := range perm.unitsMode {
206+
if shouldKeep = u.Type == t; shouldKeep {
207+
break
208+
}
209+
}
210+
for t := range perm.everyoneAccessMode {
211+
if shouldKeep = shouldKeep || u.Type == t; shouldKeep {
212+
break
213+
}
214+
}
215+
if shouldKeep {
216+
perm.units = append(perm.units, u)
217+
}
218+
}
190219
}
191220

192221
// GetUserRepoPermission returns the user permissions to the repository
193222
func GetUserRepoPermission(ctx context.Context, repo *repo_model.Repository, user *user_model.User) (perm Permission, err error) {
194223
defer func() {
195224
if err == nil {
196-
applyEveryoneRepoPermission(user, &perm)
197-
}
198-
if log.IsTrace() {
199-
log.Trace("Permission Loaded for user %-v in repo %-v, permissions: %-+v", user, repo, perm)
225+
finalProcessRepoUnitPermission(user, &perm)
200226
}
227+
log.Trace("Permission Loaded for user %-v in repo %-v, permissions: %-+v", user, repo, perm)
201228
}()
202229

203230
if err = repo.LoadUnits(ctx); err != nil {
@@ -294,16 +321,6 @@ func GetUserRepoPermission(ctx context.Context, repo *repo_model.Repository, use
294321
}
295322
}
296323

297-
// remove no permission units
298-
perm.units = make([]*repo_model.RepoUnit, 0, len(repo.Units))
299-
for t := range perm.unitsMode {
300-
for _, u := range repo.Units {
301-
if u.Type == t {
302-
perm.units = append(perm.units, u)
303-
}
304-
}
305-
}
306-
307324
return perm, err
308325
}
309326

models/perm/access/repo_permission_test.go

+7-5
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ func TestApplyEveryoneRepoPermission(t *testing.T) {
5050
{Type: unit.TypeWiki, EveryoneAccessMode: perm_model.AccessModeRead},
5151
},
5252
}
53-
applyEveryoneRepoPermission(nil, &perm)
53+
finalProcessRepoUnitPermission(nil, &perm)
5454
assert.False(t, perm.CanRead(unit.TypeWiki))
5555

5656
perm = Permission{
@@ -59,7 +59,7 @@ func TestApplyEveryoneRepoPermission(t *testing.T) {
5959
{Type: unit.TypeWiki, EveryoneAccessMode: perm_model.AccessModeRead},
6060
},
6161
}
62-
applyEveryoneRepoPermission(&user_model.User{ID: 0}, &perm)
62+
finalProcessRepoUnitPermission(&user_model.User{ID: 0}, &perm)
6363
assert.False(t, perm.CanRead(unit.TypeWiki))
6464

6565
perm = Permission{
@@ -68,7 +68,7 @@ func TestApplyEveryoneRepoPermission(t *testing.T) {
6868
{Type: unit.TypeWiki, EveryoneAccessMode: perm_model.AccessModeRead},
6969
},
7070
}
71-
applyEveryoneRepoPermission(&user_model.User{ID: 1}, &perm)
71+
finalProcessRepoUnitPermission(&user_model.User{ID: 1}, &perm)
7272
assert.True(t, perm.CanRead(unit.TypeWiki))
7373

7474
perm = Permission{
@@ -77,20 +77,22 @@ func TestApplyEveryoneRepoPermission(t *testing.T) {
7777
{Type: unit.TypeWiki, EveryoneAccessMode: perm_model.AccessModeRead},
7878
},
7979
}
80-
applyEveryoneRepoPermission(&user_model.User{ID: 1}, &perm)
80+
finalProcessRepoUnitPermission(&user_model.User{ID: 1}, &perm)
8181
// it should work the same as "EveryoneAccessMode: none" because the default AccessMode should be applied to units
8282
assert.True(t, perm.CanWrite(unit.TypeWiki))
8383

8484
perm = Permission{
8585
units: []*repo_model.RepoUnit{
86+
{Type: unit.TypeCode}, // will be removed
8687
{Type: unit.TypeWiki, EveryoneAccessMode: perm_model.AccessModeRead},
8788
},
8889
unitsMode: map[unit.Type]perm_model.AccessMode{
8990
unit.TypeWiki: perm_model.AccessModeWrite,
9091
},
9192
}
92-
applyEveryoneRepoPermission(&user_model.User{ID: 1}, &perm)
93+
finalProcessRepoUnitPermission(&user_model.User{ID: 1}, &perm)
9394
assert.True(t, perm.CanWrite(unit.TypeWiki))
95+
assert.Len(t, perm.units, 1)
9496
}
9597

9698
func TestUnitAccessMode(t *testing.T) {

options/locale/locale_cs-CZ.ini

-3
Original file line numberDiff line numberDiff line change
@@ -1115,9 +1115,6 @@ blame.ignore_revs=Ignorování revizí v <a href="%s">.git-blame-ignorerevs</a>.
11151115
blame.ignore_revs.failed=Nepodařilo se ignorovat revize v <a href="%s">.git-blame-ignore-revs</a>.
11161116
user_search_tooltip=Zobrazí maximálně 30 uživatelů
11171117

1118-
tree_path_not_found_commit=Cesta %[1]s v commitu %[2]s neexistuje
1119-
tree_path_not_found_branch=Cesta %[1]s ve větvi %[2]s neexistuje
1120-
tree_path_not_found_tag=Cesta %[1]s ve značce %[2]s neexistuje
11211118

11221119
transfer.accept=Přijmout převod
11231120
transfer.accept_desc=Převést do „%s“

options/locale/locale_de-DE.ini

-3
Original file line numberDiff line numberDiff line change
@@ -1111,9 +1111,6 @@ blame.ignore_revs=Revisionen in <a href="%s">.git-blame-ignore-revs</a> werden i
11111111
blame.ignore_revs.failed=Fehler beim Ignorieren der Revisionen in <a href="%s">.git-blame-ignore-revs</a>.
11121112
user_search_tooltip=Zeigt maximal 30 Benutzer
11131113
1114-
tree_path_not_found_commit=Pfad %[1]s existiert nicht in Commit%[2]s
1115-
tree_path_not_found_branch=Pfad %[1]s existiert nicht in Branch %[2]s
1116-
tree_path_not_found_tag=Pfad %[1]s existiert nicht in Tag %[2]s
11171114
11181115
transfer.accept=Übertragung Akzeptieren
11191116
transfer.accept_desc=`Übertragung nach "%s"`

options/locale/locale_el-GR.ini

-3
Original file line numberDiff line numberDiff line change
@@ -992,9 +992,6 @@ blame_prior=Προβολή ευθύνης πριν από αυτή την αλλ
992992
blame.ignore_revs=Αγνόηση των αναθεωρήσεων στο <a href="%s">.git-blame-ignore-revs</a>. Πατήστε <a href="%s">εδώ</a> για να το παρακάμψετε και να δείτε την κανονική προβολή ευθυνών.
993993
blame.ignore_revs.failed=Αποτυχία αγνόησης των αναθεωρήσεων στο <a href="%s">.git-blame-ignore-revs</a>.
994994

995-
tree_path_not_found_commit=Η διαδρομή %[1]s δεν υπάρχει στην υποβολή %[2]s
996-
tree_path_not_found_branch=Η διαδρομή %[1]s δεν υπάρχει στον κλάδο %[2]s
997-
tree_path_not_found_tag=Η διαδρομή %[1]s δεν υπάρχει στην ετικέτα %[2]s
998995

999996
transfer.accept=Αποδοχή Μεταφοράς
1000997
transfer.reject=Απόρριψη Μεταφοράς

options/locale/locale_en-US.ini

+1-1
Original file line numberDiff line numberDiff line change
@@ -2158,7 +2158,7 @@ settings.advanced_settings = Advanced Settings
21582158
settings.wiki_desc = Enable Repository Wiki
21592159
settings.use_internal_wiki = Use Built-In Wiki
21602160
settings.default_wiki_branch_name = Default Wiki Branch Name
2161-
settings.default_wiki_everyone_access = Default Access Permission for signed-in users:
2161+
settings.default_permission_everyone_access = Default access permission for all signed-in users:
21622162
settings.failed_to_change_default_wiki_branch = Failed to change the default wiki branch.
21632163
settings.use_external_wiki = Use External Wiki
21642164
settings.external_wiki_url = External Wiki URL

options/locale/locale_es-ES.ini

-3
Original file line numberDiff line numberDiff line change
@@ -982,9 +982,6 @@ blame_prior=Ver la culpa antes de este cambio
982982
blame.ignore_revs=Ignorando revisiones en <a href="%s">.git-blame-ignore-revs</a>. Haga clic <a href="%s">aquí para saltar</a> y para a la vista normal.
983983
blame.ignore_revs.failed=No se pudieron ignorar las revisiones en <a href="%s">.git-blame-ignore-revs</a>.
984984

985-
tree_path_not_found_commit=La ruta %[1]s no existe en el commit %[2]s
986-
tree_path_not_found_branch=La ruta %[1]s no existe en la rama %[2]s
987-
tree_path_not_found_tag=La ruta %[1]s no existe en la etiqueta %[2]s
988985

989986
transfer.accept=Aceptar transferencia
990987
transfer.reject=Rechazar transferencia

options/locale/locale_fr-FR.ini

-3
Original file line numberDiff line numberDiff line change
@@ -1115,9 +1115,6 @@ blame.ignore_revs=Les révisions dans <a href="%s">.git-blame-ignore-revs</a> so
11151115
blame.ignore_revs.failed=Impossible d'ignorer les révisions dans <a href="%s">.git-blame-ignore-revs</a>.
11161116
user_search_tooltip=Affiche un maximum de 30 utilisateurs
11171117

1118-
tree_path_not_found_commit=Le chemin %[1]s n’existe pas dans la révision %[2]s.
1119-
tree_path_not_found_branch=Le chemin %[1]s n’existe pas dans la branche %[2]s.
1120-
tree_path_not_found_tag=Le chemin %[1]s n’existe pas dans l’étiquette %[2]s.
11211118

11221119
transfer.accept=Accepter le transfert
11231120
transfer.accept_desc=Transférer à « %s »

options/locale/locale_ga-IE.ini

-3
Original file line numberDiff line numberDiff line change
@@ -1115,9 +1115,6 @@ blame.ignore_revs=Ag déanamh neamhairde de leasuithe i <a href="%s">.git-blame-
11151115
blame.ignore_revs.failed=Theip ar neamhaird a dhéanamh ar leasuithe i <a href="%s">.git-blame-ignore-revs</a>.
11161116
user_search_tooltip=Taispeáint uasmhéid de 30 úsáideoir
11171117
1118-
tree_path_not_found_commit=Níl cosán %[1]s ann i dtiomantas %[2]s
1119-
tree_path_not_found_branch=Níl cosán %[1]s ann i mbrainse %[2]s
1120-
tree_path_not_found_tag=Níl cosán %[1]s ann i gclib %[2]s
11211118
11221119
transfer.accept=Glac le hAistriú
11231120
transfer.accept_desc=Aistriú chuig “%s”

options/locale/locale_ja-JP.ini

-3
Original file line numberDiff line numberDiff line change
@@ -1109,9 +1109,6 @@ blame_prior=この変更より前のBlameを表示
11091109
blame.ignore_revs=<a href="%s">.git-blame-ignore-revs</a> で指定されたリビジョンは除外しています。 これを迂回して通常のBlame表示を見るには <a href="%s">ここ</a>をクリック。
11101110
blame.ignore_revs.failed=<a href="%s">.git-blame-ignore-revs</a> によるリビジョンの無視は失敗しました。
11111111

1112-
tree_path_not_found_commit=パス %[1]s はコミット %[2]s に存在しません
1113-
tree_path_not_found_branch=パス %[1]s はブランチ %[2]s に存在しません
1114-
tree_path_not_found_tag=パス %[1]s はタグ %[2]s に存在しません
11151112

11161113
transfer.accept=移転を承認
11171114
transfer.accept_desc=`"%s" に移転`

options/locale/locale_lv-LV.ini

-3
Original file line numberDiff line numberDiff line change
@@ -997,9 +997,6 @@ blame_prior=Aplūkot vainīgo par izmaiņām pirms šīs revīzijas
997997
blame.ignore_revs=Neņem vērā izmaiņas no <a href="%s">.git-blame-ignore-revs</a>. Nospiediet <a href="%s">šeit, lai to apietu</a> un redzētu visu izmaiņu skatu.
998998
blame.ignore_revs.failed=Neizdevās neņemt vērā izmaiņas no <a href="%s">.git-blam-ignore-revs</a>.
999999

1000-
tree_path_not_found_commit=Revīzijā %[2]s neeksistē ceļš %[1]s
1001-
tree_path_not_found_branch=Atzarā %[2]s nepastāv ceļš %[1]s
1002-
tree_path_not_found_tag=Tagā %[2]s nepastāv ceļš %[1]s
10031000

10041001
transfer.accept=Apstiprināt īpašnieka maiņu
10051002
transfer.reject=Noraidīt īpašnieka maiņu

options/locale/locale_pt-PT.ini

-3
Original file line numberDiff line numberDiff line change
@@ -1115,9 +1115,6 @@ blame.ignore_revs=Ignorando as revisões em <a href="%s">.git-blame-ignore-revs<
11151115
blame.ignore_revs.failed=Falhou ao ignorar as revisões em <a href="%s">.git-blame-ignore-revs</a>.
11161116
user_search_tooltip=Mostra um máximo de 30 utilizadores
11171117

1118-
tree_path_not_found_commit=A localização %[1]s não existe no cometimento %[2]s
1119-
tree_path_not_found_branch=A localização %[1]s não existe no ramo %[2]s
1120-
tree_path_not_found_tag=A localização %[1]s não existe na etiqueta %[2]s
11211118

11221119
transfer.accept=Aceitar transferência
11231120
transfer.accept_desc=`Transferir para "%s"`

options/locale/locale_ru-RU.ini

-2
Original file line numberDiff line numberDiff line change
@@ -978,8 +978,6 @@ delete_preexisting_content=Удалить файлы из %s
978978
delete_preexisting_success=Удалены непринятые файлы в %s
979979
blame_prior=Показать авторство предшествующих изменений
980980

981-
tree_path_not_found_commit=Путь %[1]s не существует в коммите %[2]s
982-
tree_path_not_found_branch=Путь %[1]s не существует в ветке %[2]s
983981

984982
transfer.accept=Принять трансфер
985983
transfer.reject=Отказаться от перемещения

options/locale/locale_tr-TR.ini

-3
Original file line numberDiff line numberDiff line change
@@ -1083,9 +1083,6 @@ blame_prior=Bu değişiklikten önceki suçu görüntüle
10831083
blame.ignore_revs=<a href="%s">.git-blame-ignore-revs</a> dosyasındaki sürümler yok sayılıyor. Bunun yerine normal sorumlu görüntüsü için <a href="%s">buraya tıklayın</a>.
10841084
blame.ignore_revs.failed=<a href="%s">.git-blame-ignore-revs</a> dosyasındaki sürümler yok sayılamadı.
10851085

1086-
tree_path_not_found_commit=%[1] yolu, %[2]s işlemesinde mevcut değil
1087-
tree_path_not_found_branch=%[1] yolu, %[2]s dalında mevcut değil
1088-
tree_path_not_found_tag=%[1] yolu, %[2]s etiketinde mevcut değil
10891086

10901087
transfer.accept=Aktarımı Kabul Et
10911088
transfer.reject=Aktarımı Reddet

options/locale/locale_zh-CN.ini

-3
Original file line numberDiff line numberDiff line change
@@ -1111,9 +1111,6 @@ blame.ignore_revs=忽略 <a href="%s">.git-blame-ignore-revs</a> 的修订。点
11111111
blame.ignore_revs.failed=忽略 <a href="%s">.git-blame-ignore-revs</a> 版本失败。
11121112
user_search_tooltip=最多显示30名用户
11131113

1114-
tree_path_not_found_commit=路径%[1]s 在提交 %[2]s 中不存在
1115-
tree_path_not_found_branch=路径 %[1]s 不存在于分支 %[2]s 中。
1116-
tree_path_not_found_tag=路径 %[1]s 不存在于标签 %[2]s 中
11171114

11181115
transfer.accept=接受转移
11191116
transfer.accept_desc=`转移到 "%s"`

options/locale/locale_zh-TW.ini

-3
Original file line numberDiff line numberDiff line change
@@ -1108,9 +1108,6 @@ blame.ignore_revs=忽略 <a href="%s">.git-blame-ignore-revs</a> 中的修訂。
11081108
blame.ignore_revs.failed=忽略 <a href="%s">.git-blame-ignore-revs</a> 中的修訂失敗。
11091109
user_search_tooltip=顯示最多 30 個使用者
11101110

1111-
tree_path_not_found_commit=路徑 %[1]s 在提交 %[2]s 中不存在
1112-
tree_path_not_found_branch=路徑 %[1]s 在分支 %[2]s 中不存在
1113-
tree_path_not_found_tag=路徑 %[1]s 在標籤 %[2]s 中不存在
11141111

11151112
transfer.accept=同意轉移
11161113
transfer.accept_desc=轉移到「%s」

routers/web/repo/issue_poster.go

+3-7
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,9 @@ type userSearchResponse struct {
2626
Results []*userSearchInfo `json:"results"`
2727
}
2828

29-
// IssuePosters get posters for current repo's issues/pull requests
30-
func IssuePosters(ctx *context.Context) {
31-
issuePosters(ctx, false)
32-
}
33-
34-
func PullPosters(ctx *context.Context) {
35-
issuePosters(ctx, true)
29+
func IssuePullPosters(ctx *context.Context) {
30+
isPullList := ctx.PathParam("type") == "pulls"
31+
issuePosters(ctx, isPullList)
3632
}
3733

3834
func issuePosters(ctx *context.Context, isPullList bool) {

0 commit comments

Comments
 (0)