diff options
author | zeripath <art27@cantab.net> | 2021-04-04 22:37:50 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-04 22:37:50 +0100 |
commit | 48ef04ee56272da4c8c8fd96b8af13fe82cd8e37 (patch) | |
tree | bba3ddc221666c39818f6ffa5ed2be9f6ae403e8 | |
parent | f2715b8e294d53a54bb71876c74a7fbec5b41937 (diff) | |
download | gitea-48ef04ee56272da4c8c8fd96b8af13fe82cd8e37.tar.gz gitea-48ef04ee56272da4c8c8fd96b8af13fe82cd8e37.zip |
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>
-rw-r--r-- | routers/events/events.go | 4 | ||||
-rw-r--r-- | web_src/js/features/eventsource.sharedworker.js | 1 | ||||
-rw-r--r-- | web_src/js/features/notification.js | 5 | ||||
-rw-r--r-- | web_src/js/features/stopwatch.js | 5 |
4 files changed, 13 insertions, 2 deletions
diff --git a/routers/events/events.go b/routers/events/events.go index aa8e2c8c74..7542f5681a 100644 --- a/routers/events/events.go +++ b/routers/events/events.go @@ -33,8 +33,8 @@ func Events(ctx *context.Context) { if !ctx.IsSigned { // Return unauthorized status event event := (&eventsource.Event{ - Name: "unauthorized", - Data: "sorry", + Name: "close", + Data: "unauthorized", }) _, _ = event.WriteTo(ctx) ctx.Resp.Flush() diff --git a/web_src/js/features/eventsource.sharedworker.js b/web_src/js/features/eventsource.sharedworker.js index 6a6ee154db..ff160cdc52 100644 --- a/web_src/js/features/eventsource.sharedworker.js +++ b/web_src/js/features/eventsource.sharedworker.js @@ -10,6 +10,7 @@ class Source { this.listening = {}; this.clients = []; this.listen('open'); + this.listen('close'); this.listen('logout'); this.listen('notification-count'); this.listen('stopwatches'); diff --git a/web_src/js/features/notification.js b/web_src/js/features/notification.js index a0793d2286..fca1ddc543 100644 --- a/web_src/js/features/notification.js +++ b/web_src/js/features/notification.js @@ -74,6 +74,11 @@ export async function initNotificationCount() { }); worker.port.close(); window.location.href = AppSubUrl; + } else if (event.data.type === 'close') { + worker.port.postMessage({ + type: 'close', + }); + worker.port.close(); } }); worker.port.addEventListener('error', (e) => { diff --git a/web_src/js/features/stopwatch.js b/web_src/js/features/stopwatch.js index 61f19bd795..9352ef292d 100644 --- a/web_src/js/features/stopwatch.js +++ b/web_src/js/features/stopwatch.js @@ -55,6 +55,11 @@ export async function initStopwatch() { }); worker.port.close(); window.location.href = AppSubUrl; + } else if (event.data.type === 'close') { + worker.port.postMessage({ + type: 'close', + }); + worker.port.close(); } }); worker.port.addEventListener('error', (e) => { |