@@ -177,6 +177,7 @@ func (p *Permission) LogString() string {
177
177
178
178
func applyEveryoneRepoPermission (user * user_model.User , perm * Permission ) {
179
179
if user == nil || user .ID <= 0 {
180
+ perm .units = nil
180
181
return
181
182
}
182
183
for _ , u := range perm .units {
@@ -187,6 +188,25 @@ func applyEveryoneRepoPermission(user *user_model.User, perm *Permission) {
187
188
perm .everyoneAccessMode [u .Type ] = u .EveryoneAccessMode
188
189
}
189
190
}
191
+ // remove no permission units
192
+ origPermUnits := perm .units
193
+ perm .units = make ([]* repo_model.RepoUnit , 0 , len (perm .units ))
194
+ for _ , u := range origPermUnits {
195
+ shouldKeep := false
196
+ for t := range perm .unitsMode {
197
+ if shouldKeep = u .Type == t ; shouldKeep {
198
+ break
199
+ }
200
+ }
201
+ for t := range perm .everyoneAccessMode {
202
+ if shouldKeep = shouldKeep || u .Type == t ; shouldKeep {
203
+ break
204
+ }
205
+ }
206
+ if shouldKeep {
207
+ perm .units = append (perm .units , u )
208
+ }
209
+ }
190
210
}
191
211
192
212
// GetUserRepoPermission returns the user permissions to the repository
@@ -195,9 +215,7 @@ func GetUserRepoPermission(ctx context.Context, repo *repo_model.Repository, use
195
215
if err == nil {
196
216
applyEveryoneRepoPermission (user , & perm )
197
217
}
198
- if log .IsTrace () {
199
- log .Trace ("Permission Loaded for user %-v in repo %-v, permissions: %-+v" , user , repo , perm )
200
- }
218
+ log .Trace ("Permission Loaded for user %-v in repo %-v, permissions: %-+v" , user , repo , perm )
201
219
}()
202
220
203
221
if err = repo .LoadUnits (ctx ); err != nil {
@@ -294,16 +312,6 @@ func GetUserRepoPermission(ctx context.Context, repo *repo_model.Repository, use
294
312
}
295
313
}
296
314
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
-
307
315
return perm , err
308
316
}
309
317
0 commit comments