From 17d596cdf5986d8cc4862bc7976469246dcb1919 Mon Sep 17 00:00:00 2001 From: junn-dev Date: Tue, 19 May 2026 11:17:55 +0700 Subject: [PATCH] Add Persona logout action --- src/documents/index.html.coffee | 9 +++++++++ src/documents/scripts/views/app.js.coffee | 24 +++++++++++++++++++++-- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/documents/index.html.coffee b/src/documents/index.html.coffee index d376ff3..4410102 100644 --- a/src/documents/index.html.coffee +++ b/src/documents/index.html.coffee @@ -16,6 +16,11 @@ aside '.app', -> span '.link.link-page', -> text 'Page' + span '.right.show-admin.show-site', -> + span '.button.button-logout', -> + span '.icon.icon-signout', -> + text 'Logout' + span '.right.show-page', -> #span '.status', -> # 'Changes saved at 10:41am' @@ -41,6 +46,10 @@ aside '.app', -> span '.toggle.toggle-preview', -> span '.icon.icon-globe', -> + span '.button.button-logout', -> + span '.icon.icon-signout', -> + text 'Logout' + section '.login.modal.main.show-login', -> img '.button.button-login', alt:'Login', src:'/images/login.png', width:'95px', height:'25px', -> diff --git a/src/documents/scripts/views/app.js.coffee b/src/documents/scripts/views/app.js.coffee index 926654e..7f19c78 100644 --- a/src/documents/scripts/views/app.js.coffee +++ b/src/documents/scripts/views/app.js.coffee @@ -35,6 +35,7 @@ class App extends View 'click .menu .toggle': 'clickMenuToggle' 'click .menu .button': 'clickMenuButton' 'click .button-login': 'clickLogin' + 'click .button-logout': 'clickLogout' 'click .button-add-site': 'clickAddSite' 'submit .site-add-form': 'submitSite' 'click .site-add-form .button-cancel': 'submitSiteCancel' @@ -64,8 +65,8 @@ class App extends View loggedInUser: currentUser onlogin: (args...) -> # ignore as we listen to post message - onlogout: -> - localStorage.setItem('currentUser', '') + onlogout: => + @logoutUser() ) # Login the user if we already have one @@ -256,6 +257,16 @@ class App extends View # Chain @ + # A user has logged out successfully + # so remove the saved user and take them back to the login screen + logoutUser: -> + localStorage.removeItem('currentUser') + @openApp(navigate: false) + @setAppMode('login') + + # Chain + @ + # --------------------------------- @@ -316,6 +327,15 @@ class App extends View throw new Error("Offline people can't login") unless navigator.id? navigator.id.request() + # Handle logout button + # Send the logout request to Persona, then reset local state + clickLogout: (e) => + if navigator.id? + navigator.id.logout() + else + @logoutUser() + @ + # Handle menu effects clickMenuButton: (e) => # Prepare