mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-26 12:27:06 +00:00 
			
		
		
		
	Drop the event source if we are unauthorized (#15275)
A previous commit that sent unauthorized if the user is unauthorized simply leads to the repeated reopening of the eventsource. # This PR changes the event returned to tell the client to close the eventsource and thus prevents the repeated reopening. Signed-off-by: Andrew Thornton <art27@cantab.net>
This commit is contained in:
		| @@ -33,8 +33,8 @@ func Events(ctx *context.Context) { | |||||||
| 	if !ctx.IsSigned { | 	if !ctx.IsSigned { | ||||||
| 		// Return unauthorized status event | 		// Return unauthorized status event | ||||||
| 		event := (&eventsource.Event{ | 		event := (&eventsource.Event{ | ||||||
| 			Name: "unauthorized", | 			Name: "close", | ||||||
| 			Data: "sorry", | 			Data: "unauthorized", | ||||||
| 		}) | 		}) | ||||||
| 		_, _ = event.WriteTo(ctx) | 		_, _ = event.WriteTo(ctx) | ||||||
| 		ctx.Resp.Flush() | 		ctx.Resp.Flush() | ||||||
|   | |||||||
| @@ -10,6 +10,7 @@ class Source { | |||||||
|     this.listening = {}; |     this.listening = {}; | ||||||
|     this.clients = []; |     this.clients = []; | ||||||
|     this.listen('open'); |     this.listen('open'); | ||||||
|  |     this.listen('close'); | ||||||
|     this.listen('logout'); |     this.listen('logout'); | ||||||
|     this.listen('notification-count'); |     this.listen('notification-count'); | ||||||
|     this.listen('stopwatches'); |     this.listen('stopwatches'); | ||||||
|   | |||||||
| @@ -74,6 +74,11 @@ export async function initNotificationCount() { | |||||||
|         }); |         }); | ||||||
|         worker.port.close(); |         worker.port.close(); | ||||||
|         window.location.href = AppSubUrl; |         window.location.href = AppSubUrl; | ||||||
|  |       } else if (event.data.type === 'close') { | ||||||
|  |         worker.port.postMessage({ | ||||||
|  |           type: 'close', | ||||||
|  |         }); | ||||||
|  |         worker.port.close(); | ||||||
|       } |       } | ||||||
|     }); |     }); | ||||||
|     worker.port.addEventListener('error', (e) => { |     worker.port.addEventListener('error', (e) => { | ||||||
|   | |||||||
| @@ -55,6 +55,11 @@ export async function initStopwatch() { | |||||||
|         }); |         }); | ||||||
|         worker.port.close(); |         worker.port.close(); | ||||||
|         window.location.href = AppSubUrl; |         window.location.href = AppSubUrl; | ||||||
|  |       } else if (event.data.type === 'close') { | ||||||
|  |         worker.port.postMessage({ | ||||||
|  |           type: 'close', | ||||||
|  |         }); | ||||||
|  |         worker.port.close(); | ||||||
|       } |       } | ||||||
|     }); |     }); | ||||||
|     worker.port.addEventListener('error', (e) => { |     worker.port.addEventListener('error', (e) => { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 zeripath
					zeripath