feat: Implement secure logout functionality, add theme toggle, week navigation, and update version to 1.7.2.
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
export const API_BASE = 'https://api.bessa.app/v1';
|
||||
|
||||
/** The client version injected into every API request header. */
|
||||
export const CLIENT_VERSION = 'v1.7.1';
|
||||
export const CLIENT_VERSION = '{{VERSION}}';
|
||||
|
||||
/** Bessa venue ID for Knapp-Kantine. */
|
||||
export const VENUE_ID = 591;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { displayMode, langMode, authToken, currentUser, orderMap, userFlags, pollIntervalId, setLangMode, setDisplayMode, setAuthToken, setCurrentUser, setOrderMap } from './state.js';
|
||||
import { updateAuthUI, loadMenuDataFromAPI, fetchOrders, startPolling, stopPolling, fetchFullOrderHistory, addHighlightTag, renderTagsList, refreshFlaggedItems } from './actions.js';
|
||||
import { renderVisibleWeeks, openVersionMenu, updateNextWeekBadge, updateAlarmBell, syncMenuItemHeights } from './ui_helpers.js';
|
||||
import { API_BASE, GUEST_TOKEN, LS } from './constants.js';
|
||||
import { API_BASE, LS } from './constants.js';
|
||||
import { apiHeaders } from './api.js';
|
||||
import { t } from './i18n.js';
|
||||
import { debounce } from './utils.js';
|
||||
@@ -308,7 +308,7 @@ export function bindEvents() {
|
||||
const email = `knapp-${employeeId}@bessa.app`;
|
||||
const response = await fetch(`${API_BASE}/auth/login/`, {
|
||||
method: 'POST',
|
||||
headers: apiHeaders(GUEST_TOKEN),
|
||||
headers: apiHeaders(),
|
||||
body: JSON.stringify({ email, password })
|
||||
});
|
||||
|
||||
@@ -354,10 +354,13 @@ export function bindEvents() {
|
||||
});
|
||||
|
||||
btnLogout.addEventListener('click', () => {
|
||||
localStorage.removeItem(LS.AUTH_TOKEN);
|
||||
localStorage.removeItem(LS.CURRENT_USER);
|
||||
localStorage.removeItem(LS.FIRST_NAME);
|
||||
localStorage.removeItem(LS.LAST_NAME);
|
||||
// Secure Logout (FR-006): Clear all application-related data from localStorage
|
||||
Object.keys(localStorage).forEach(key => {
|
||||
if (key.startsWith('kantine_')) {
|
||||
localStorage.removeItem(key);
|
||||
}
|
||||
});
|
||||
|
||||
setAuthToken(null);
|
||||
setCurrentUser(null);
|
||||
setOrderMap(new Map());
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { authToken, currentUser, orderMap, userFlags, pollIntervalId, highlightTags, allWeeks, currentWeekNumber, currentYear, displayMode, langMode, setAuthToken, setCurrentUser, setOrderMap, setUserFlags, setPollIntervalId, setHighlightTags, setAllWeeks, setCurrentWeekNumber, setCurrentYear } from './state.js';
|
||||
import { getISOWeek, getWeekYear, translateDay, escapeHtml, getRelativeTime, isNewer, getLocalizedText } from './utils.js';
|
||||
import { API_BASE, GUEST_TOKEN, VENUE_ID, MENU_ID, POLL_INTERVAL_MS, GITHUB_API, INSTALLER_BASE, CLIENT_VERSION, LS } from './constants.js';
|
||||
import { API_BASE, VENUE_ID, MENU_ID, POLL_INTERVAL_MS, GITHUB_API, INSTALLER_BASE, CLIENT_VERSION, LS } from './constants.js';
|
||||
import { apiHeaders, githubHeaders } from './api.js';
|
||||
import { placeOrder, cancelOrder, toggleFlag, showToast, checkHighlight, loadMenuDataFromAPI } from './actions.js';
|
||||
import { t } from './i18n.js';
|
||||
|
||||
Reference in New Issue
Block a user