@@ -13,8 +13,8 @@ import (
1313 "github.com/go-gorp/gorp"
1414
1515 "github.com/ovh/cds/engine/api/cache"
16+ "github.com/ovh/cds/engine/api/group"
1617 "github.com/ovh/cds/engine/api/permission"
17- "github.com/ovh/cds/engine/api/sessionstore"
1818 "github.com/ovh/cds/engine/service"
1919 "github.com/ovh/cds/sdk"
2020 "github.com/ovh/cds/sdk/log"
@@ -137,19 +137,10 @@ func (b *eventsBroker) ServeHTTP() service.Handler {
137137 return sdk .WrapError (fmt .Errorf ("streaming unsupported" ), "" )
138138 }
139139
140- uuidSK , errS := sessionstore .NewSessionKey ()
141- if errS != nil {
142- return sdk .WrapError (errS , "eventsBroker.Serve> Cannot generate UUID" )
143- }
144- uuid := string (uuidSK )
145- user := getUser (ctx )
146- if err := loadUserPermissions (b .dbFunc (), b .cache , user ); err != nil {
147- return sdk .WrapError (err , "eventsBroker.Serve Cannot load user permission" )
148- }
149-
140+ uuid := sdk .UUID ()
150141 client := eventsBrokerSubscribe {
151142 UUID : uuid ,
152- User : user ,
143+ User : getUser ( ctx ) ,
153144 Queue : make (chan sdk.Event , 10 ), // chan buffered, to avoid goroutine Start() wait on push in queue
154145 }
155146
@@ -237,38 +228,46 @@ func (b *eventsBroker) canSend(client eventsBrokerSubscribe) bool {
237228}
238229
239230func (s * eventsBrokerSubscribe ) manageEvent (event sdk.Event ) bool {
231+ var isSharedInfra bool
232+ for _ , g := range s .User .Groups {
233+ if g .ID == group .SharedInfraGroup .ID {
234+ isSharedInfra = true
235+ break
236+ }
237+ }
238+
240239 if strings .HasPrefix (event .EventType , "sdk.EventProject" ) {
241- if s .User .Admin || permission .ProjectPermission (event .ProjectKey , s .User ) >= permission .PermissionRead {
240+ if s .User .Admin || isSharedInfra || permission .ProjectPermission (event .ProjectKey , s .User ) >= permission .PermissionRead {
242241 return true
243242 }
244243 return false
245244 }
246245 if strings .HasPrefix (event .EventType , "sdk.EventWorkflow" ) || strings .HasPrefix (event .EventType , "sdk.EventRunWorkflow" ) {
247- if s .User .Admin || permission .WorkflowPermission (event .ProjectKey , event .WorkflowName , s .User ) >= permission .PermissionRead {
246+ if s .User .Admin || isSharedInfra || permission .WorkflowPermission (event .ProjectKey , event .WorkflowName , s .User ) >= permission .PermissionRead {
248247 return true
249248 }
250249 return false
251250 }
252251 if strings .HasPrefix (event .EventType , "sdk.EventApplication" ) {
253- if s .User .Admin || permission .ApplicationPermission (event .ProjectKey , event .ApplicationName , s .User ) >= permission .PermissionRead {
252+ if s .User .Admin || isSharedInfra || permission .ApplicationPermission (event .ProjectKey , event .ApplicationName , s .User ) >= permission .PermissionRead {
254253 return true
255254 }
256255 return false
257256 }
258257 if strings .HasPrefix (event .EventType , "sdk.EventPipeline" ) {
259- if s .User .Admin || permission .PipelinePermission (event .ProjectKey , event .PipelineName , s .User ) >= permission .PermissionRead {
258+ if s .User .Admin || isSharedInfra || permission .PipelinePermission (event .ProjectKey , event .PipelineName , s .User ) >= permission .PermissionRead {
260259 return true
261260 }
262261 return false
263262 }
264263 if strings .HasPrefix (event .EventType , "sdk.EventEnvironment" ) {
265- if s .User .Admin || permission .EnvironmentPermission (event .ProjectKey , event .EnvironmentName , s .User ) >= permission .PermissionRead {
264+ if s .User .Admin || isSharedInfra || permission .EnvironmentPermission (event .ProjectKey , event .EnvironmentName , s .User ) >= permission .PermissionRead {
266265 return true
267266 }
268267 return false
269268 }
270269 if strings .HasPrefix (event .EventType , "sdk.EventBroadcast" ) {
271- if s .User .Admin || event .ProjectKey == "" || permission .AccessToProject (event .ProjectKey , s .User , permission .PermissionRead ) {
270+ if s .User .Admin || isSharedInfra || event .ProjectKey == "" || permission .AccessToProject (event .ProjectKey , s .User , permission .PermissionRead ) {
272271 return true
273272 }
274273 return false
0 commit comments