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:
		
							parent
							
								
									f2715b8e29
								
							
						
					
					
						commit
						48ef04ee56
					
				
					 4 changed files with 13 additions and 2 deletions
				
			
		|  | @ -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) => { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue