UNPKG

@nextcloud/auth

Version:

Nextcloud helpers related to authentication and the current user

111 lines (110 loc) 3.08 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const eventBus = require("@nextcloud/event-bus"); const browserStorage$1 = require("@nextcloud/browser-storage"); let token; const observers = []; function getRequestToken() { if (token === void 0) { token = document.head.dataset.requesttoken ?? null; } return token; } function onRequestTokenUpdate(observer) { observers.push(observer); } eventBus.subscribe("csrf-token-update", (e) => { token = e.token; observers.forEach((observer) => { try { observer(token); } catch (e2) { console.error("Error updating CSRF token observer", e2); } }); }); function getCSPNonce() { const meta = document?.querySelector('meta[name="csp-nonce"]'); if (!meta) { const token2 = getRequestToken(); return token2 ? btoa(token2) : void 0; } return meta.nonce; } const browserStorage = browserStorage$1.getBuilder("public").persist().build(); class GuestUser { _displayName; uid; isAdmin; constructor() { if (!browserStorage.getItem("guestUid")) { browserStorage.setItem("guestUid", self.crypto.randomUUID()); } this._displayName = browserStorage.getItem("guestNickname") || ""; this.uid = browserStorage.getItem("guestUid") || self.crypto.randomUUID(); this.isAdmin = false; eventBus.subscribe("user:info:changed", (guest) => { this._displayName = guest.displayName; browserStorage.setItem("guestNickname", guest.displayName || ""); }); } get displayName() { return this._displayName; } set displayName(displayName) { this._displayName = displayName; browserStorage.setItem("guestNickname", displayName); eventBus.emit("user:info:changed", this); } } let currentUser$1; function getGuestUser() { if (!currentUser$1) { currentUser$1 = new GuestUser(); } return currentUser$1; } function getGuestNickname() { return getGuestUser()?.displayName || null; } function setGuestNickname(nickname) { if (!nickname || nickname.trim().length === 0) { throw new Error("Nickname cannot be empty"); } getGuestUser().displayName = nickname; } let currentUser; const getAttribute = (el, attribute) => { if (el) { return el.getAttribute(attribute); } return null; }; function getCurrentUser() { if (currentUser !== void 0) { return currentUser; } const head = document?.getElementsByTagName("head")[0]; if (!head) { return null; } const uid = getAttribute(head, "data-user"); if (uid === null) { currentUser = null; return currentUser; } currentUser = { uid, displayName: getAttribute(head, "data-user-displayname"), isAdmin: !!window._oc_isadmin }; return currentUser; } exports.getCSPNonce = getCSPNonce; exports.getCurrentUser = getCurrentUser; exports.getGuestNickname = getGuestNickname; exports.getGuestUser = getGuestUser; exports.getRequestToken = getRequestToken; exports.onRequestTokenUpdate = onRequestTokenUpdate; exports.setGuestNickname = setGuestNickname; //# sourceMappingURL=index.cjs.map