Newer
Older
smart-home-server / webclient / src / api / auth.js
const STORAGE_KEY = "shserv_access_token";

let _accessToken = null;

/**
 * Set the current OAuth access token for Bearer authentication.
 * Persists to localStorage so the token survives page reloads.
 * @param {string|null} token
 */
export function setAccessToken(token) {
  _accessToken = token || null;
  try {
    if (_accessToken) {
      localStorage.setItem(STORAGE_KEY, _accessToken);
    } else {
      localStorage.removeItem(STORAGE_KEY);
    }
  } catch {
    // localStorage may be unavailable (private mode, etc.)
  }
}

/**
 * Get the current access token.
 * Falls back to localStorage if the in-memory value was lost (e.g. page reload).
 * @returns {string|null}
 */
export function getAccessToken() {
  if (_accessToken) {
    return _accessToken;
  }
  try {
    return localStorage.getItem(STORAGE_KEY) || null;
  } catch {
    return null;
  }
}

/**
 * Clear the stored access token (memory + localStorage).
 */
export function clearAccessToken() {
  _accessToken = null;
  try {
    localStorage.removeItem(STORAGE_KEY);
  } catch {
    // ignore
  }
}