@@ -66,22 +66,22 @@ func (g *RepoGroup) UnitPermission(ctx context.Context, doer *user_model.User, u
6666 return perm .AccessModeNone
6767}
6868
69- func GetGroupByParams (ctx * Context ) {
69+ func GetGroupByParams (ctx * Context ) ( err error ) {
7070 groupID := ctx .PathParamInt64 ("group_id" )
7171
72- var err error
7372 ctx .RepoGroup .Group , err = group_model .GetGroupByID (ctx , groupID )
7473 if err != nil {
7574 if group_model .IsErrGroupNotExist (err ) {
7675 ctx .NotFound (err )
7776 } else {
7877 ctx .ServerError ("GetUserByName" , err )
7978 }
80- return
79+ return err
8180 }
8281 if err = ctx .RepoGroup .Group .LoadAttributes (ctx ); err != nil {
8382 ctx .ServerError ("LoadAttributes" , err )
8483 }
84+ return err
8585}
8686
8787type GroupAssignmentOptions struct {
@@ -90,24 +90,25 @@ type GroupAssignmentOptions struct {
9090 RequireGroupAdmin bool
9191}
9292
93- func groupAssignment (ctx * Context ) {
93+ func groupAssignment (ctx * Context ) (bool , error ) {
94+ var err error
9495 if ctx .RepoGroup .Group == nil {
95- GetGroupByParams (ctx )
96+ err = GetGroupByParams (ctx )
9697 }
9798 if ctx .Written () {
98- return
99+ return false , err
99100 }
100101 group := ctx .RepoGroup .Group
101102 canAccess , err := group .CanAccess (ctx , ctx .Doer )
102103 if err != nil {
103104 ctx .ServerError ("error checking group access" , err )
104- return
105+ return false , err
105106 }
106107 if group .Owner == nil {
107108 err = group .LoadOwner (ctx )
108109 if err != nil {
109110 ctx .ServerError ("LoadOwner" , err )
110- return
111+ return false , err
111112 }
112113 }
113114 ownerAsOrg := (* organization .Organization )(group .Owner )
@@ -116,7 +117,7 @@ func groupAssignment(ctx *Context) {
116117 if ctx .IsSigned {
117118 if orgWideAdmin , err = ownerAsOrg .IsOrgAdmin (ctx , ctx .Doer .ID ); err != nil {
118119 ctx .ServerError ("IsOrgAdmin" , err )
119- return
120+ return false , err
120121 }
121122 if orgWideOwner , err = ownerAsOrg .IsOwnedBy (ctx , ctx .Doer .ID ); err != nil {
122123 ctx .ServerError ("IsOwnedBy" , err )
@@ -138,7 +139,7 @@ func groupAssignment(ctx *Context) {
138139 isOwnedBy , err = group .IsOwnedBy (ctx , ctx .Doer .ID )
139140 if err != nil {
140141 ctx .ServerError ("IsOwnedBy" , err )
141- return
142+ return false , err
142143 }
143144 ctx .RepoGroup .IsOwner = ctx .RepoGroup .IsOwner || isOwnedBy
144145
@@ -150,12 +151,12 @@ func groupAssignment(ctx *Context) {
150151 ctx .RepoGroup .IsMember , err = shared_group .IsGroupMember (ctx , group .ID , ctx .Doer )
151152 if err != nil {
152153 ctx .ServerError ("IsOrgMember" , err )
153- return
154+ return false , err
154155 }
155156 ctx .RepoGroup .CanCreateRepoOrGroup , err = group .CanCreateIn (ctx , ctx .Doer .ID )
156157 if err != nil {
157158 ctx .ServerError ("CanCreateIn" , err )
158- return
159+ return false , err
159160 }
160161 }
161162 } else {
@@ -172,7 +173,7 @@ func groupAssignment(ctx *Context) {
172173 teams , err := organization .GetUserGroupTeams (ctx , group .ID , ctx .Doer .ID )
173174 if err != nil {
174175 ctx .ServerError ("GetUserTeams" , err )
175- return
176+ return false , err
176177 }
177178 for _ , team := range teams {
178179 if team .IncludesAllRepositories && team .AccessMode >= perm .AccessModeAdmin {
@@ -185,13 +186,13 @@ func groupAssignment(ctx *Context) {
185186 ctx .RepoGroup .Teams , err = shared_group .GetGroupTeams (ctx , group .ID )
186187 if err != nil {
187188 ctx .ServerError ("LoadTeams" , err )
188- return
189+ return false , err
189190 }
190191 } else {
191192 ctx .RepoGroup .Teams , err = organization .GetUserGroupTeams (ctx , group .ID , ctx .Doer .ID )
192193 if err != nil {
193194 ctx .ServerError ("GetUserTeams" , err )
194- return
195+ return false , err
195196 }
196197 }
197198 ctx .Data ["NumTeams" ] = len (ctx .RepoGroup .Teams )
@@ -207,7 +208,7 @@ func groupAssignment(ctx *Context) {
207208 groupTeam , err = group_model .FindGroupTeamByTeamID (ctx , group .ID , team .ID )
208209 if err != nil {
209210 ctx .ServerError ("FindGroupTeamByTeamID" , err )
210- return
211+ return false , err
211212 }
212213 ctx .RepoGroup .GroupTeam = groupTeam
213214 ctx .RepoGroup .Team = team
@@ -219,7 +220,7 @@ func groupAssignment(ctx *Context) {
219220
220221 if ! teamExists {
221222 ctx .NotFound (err )
222- return
223+ return false , err
223224 }
224225
225226 ctx .Data ["IsTeamMember" ] = ctx .RepoGroup .IsMember
@@ -237,22 +238,20 @@ func groupAssignment(ctx *Context) {
237238 isAdmin , err := group .IsAdminOf (ctx , ctx .Doer .ID )
238239 if err != nil {
239240 ctx .ServerError ("IsAdminOf" , err )
240- return
241+ return false , err
241242 }
242243 ctx .RepoGroup .IsGroupAdmin = ctx .RepoGroup .IsGroupAdmin || isAdmin
243244 }
244- if ! canAccess && ! (ctx .RepoGroup .IsGroupAdmin || ctx .RepoGroup .IsMember || ctx .RepoGroup .IsOwner ) {
245- ctx .NotFound (nil )
246- return
247- }
245+ return canAccess && (ctx .RepoGroup .IsGroupAdmin || ctx .RepoGroup .IsMember || ctx .RepoGroup .IsOwner ), nil
248246}
249247
250248func GroupAssignment (args GroupAssignmentOptions ) func (ctx * Context ) {
251249 return func (ctx * Context ) {
252250 var err error
253251
254- groupAssignment (ctx )
255- if ctx .Written () {
252+ ca , err := groupAssignment (ctx )
253+
254+ if ctx .Written () || err != nil {
256255 return
257256 }
258257
@@ -264,8 +263,9 @@ func GroupAssignment(args GroupAssignmentOptions) func(ctx *Context) {
264263
265264 if ctx .RepoGroup .Group .Visibility == structs .VisibleTypePrivate {
266265 args .RequireMember = true
267- } else if ctx .IsSigned && ctx .Doer .IsRestricted {
268- args .RequireMember = true
266+ } else if ctx .IsSigned && ! ca {
267+ ctx .NotFound (err )
268+ return
269269 }
270270
271271 if (args .RequireMember && ! ctx .RepoGroup .IsMember ) ||
0 commit comments