diff --git a/packages/client/src/store/app.js b/packages/client/src/store/app.js index eb5a259a25..0cabaec4ab 100644 --- a/packages/client/src/store/app.js +++ b/packages/client/src/store/app.js @@ -6,8 +6,15 @@ const createAppStore = () => { // Fetches the app definition including screens, layouts and theme const fetchAppDefinition = async () => { - const appDefinition = await API.fetchAppPackage(get(store).appId) - store.set(appDefinition) + const appId = get(store)?.appId + if (!appId) { + throw "Cannot fetch app definition without app ID set" + } + const appDefinition = await API.fetchAppPackage(appId) + store.set({ + ...appDefinition, + appId: appDefinition?.application?.appId, + }) } // Sets the initial app ID diff --git a/packages/client/src/store/auth.js b/packages/client/src/store/auth.js index 604da7f9ad..1fa4ae17b0 100644 --- a/packages/client/src/store/auth.js +++ b/packages/client/src/store/auth.js @@ -10,9 +10,14 @@ const createAuthStore = () => { store.set(user) } + const logOut = async () => { + window.document.cookie = `budibase:auth=; budibase:currentapp=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;` + window.location = "/builder/auth/login" + } + return { subscribe: store.subscribe, - actions: { fetchUser }, + actions: { fetchUser, logOut }, } } diff --git a/packages/client/src/utils/buttonActions.js b/packages/client/src/utils/buttonActions.js index af4826a1c4..98ba9dc214 100644 --- a/packages/client/src/utils/buttonActions.js +++ b/packages/client/src/utils/buttonActions.js @@ -1,5 +1,10 @@ import { get } from "svelte/store" -import { routeStore, builderStore, confirmationStore } from "../store" +import { + routeStore, + builderStore, + confirmationStore, + authStore, +} from "../store" import { saveRow, deleteRow, executeQuery, triggerAutomation } from "../api" import { ActionTypes } from "../constants" @@ -77,6 +82,10 @@ const refreshDatasourceHandler = async (action, context) => { ) } +const logoutHandler = async () => { + await authStore.actions.logOut() +} + const handlerMap = { ["Save Row"]: saveRowHandler, ["Delete Row"]: deleteRowHandler, @@ -85,6 +94,7 @@ const handlerMap = { ["Trigger Automation"]: triggerAutomationHandler, ["Validate Form"]: validateFormHandler, ["Refresh Datasource"]: refreshDatasourceHandler, + ["Log Out"]: logoutHandler, } const confirmTextMap = {