diff --git a/app/web/src/App.svelte b/app/web/src/App.svelte
index 5cf6542..d8076e1 100644
--- a/app/web/src/App.svelte
+++ b/app/web/src/App.svelte
@@ -2,14 +2,13 @@
import LoginModal from './LoginModal.svelte';
import { initializeNostrClient, fetchUserProfile } from './nostr.js';
- export let name;
-
let isDarkTheme = false;
let showLoginModal = false;
let isLoggedIn = false;
let userPubkey = '';
let authMethod = '';
let userProfile = null;
+ let userRole = '';
let showSettingsDrawer = false;
let selectedTab = 'export';
let isSearchMode = false;
@@ -45,6 +44,8 @@
isLoggedIn = true;
userPubkey = storedPubkey;
authMethod = storedAuthMethod;
+ // Fetch user role for already logged in users
+ fetchUserRole();
}
}
@@ -92,6 +93,9 @@
} catch (error) {
console.error('Failed to load profile:', error);
}
+
+ // Fetch user role/permissions
+ await fetchUserRole();
}
function handleLogout() {
@@ -99,6 +103,7 @@
userPubkey = '';
authMethod = '';
userProfile = null;
+ userRole = '';
showSettingsDrawer = false;
// Clear stored authentication
@@ -187,6 +192,28 @@
console.error('Failed to auto-load profile:', error);
}
}
+
+ async function fetchUserRole() {
+ if (!isLoggedIn || !userPubkey) {
+ userRole = '';
+ return;
+ }
+
+ try {
+ const response = await fetch(`/api/permissions/${userPubkey}`);
+ if (response.ok) {
+ const data = await response.json();
+ userRole = data.permission || '';
+ console.log('User role loaded:', userRole);
+ } else {
+ console.error('Failed to fetch user role:', response.status);
+ userRole = '';
+ }
+ } catch (error) {
+ console.error('Error fetching user role:', error);
+ userRole = '';
+ }
+ }
@@ -201,12 +228,16 @@
bind:value={searchQuery}
on:keydown={handleSearchKeydown}
placeholder="Search..."
- autofocus
/>
{:else}
{/if}