Browse Source

Update export functionality in App.svelte to allow both admin and owner roles to export all events. Adjust permission checks and UI components to reflect new role-based access for exporting events, enhancing user experience and security.

main
mleku 3 months ago
parent
commit
f85a8b99a3
No known key found for this signature in database
  1. 27
      app/web/src/App.svelte

27
app/web/src/App.svelte

@ -231,14 +231,14 @@
// Export functionality // Export functionality
async function exportAllEvents() { async function exportAllEvents() {
if (!isLoggedIn || userRole !== 'owner') { if (!isLoggedIn || (userRole !== 'admin' && userRole !== 'owner')) {
alert('Owner permission required'); alert('Admin or owner permission required');
return; return;
} }
try { try {
const authHeader = await createNIP98AuthHeader('/export', 'GET'); const authHeader = await createNIP98AuthHeader('/api/export', 'GET');
const response = await fetch('/export', { const response = await fetch('/api/export', {
method: 'GET', method: 'GET',
headers: { headers: {
'Authorization': authHeader 'Authorization': authHeader
@ -515,15 +515,7 @@
{#if selectedTab === 'export'} {#if selectedTab === 'export'}
<div class="export-view"> <div class="export-view">
<h2>Export Events</h2> <h2>Export Events</h2>
{#if isLoggedIn && userRole === 'owner'} {#if isLoggedIn}
<div class="export-section">
<h3>Export All Events</h3>
<p>Download the complete database as a JSONL file. This includes all events from all users.</p>
<button class="export-btn" on:click={exportAllEvents}>
📤 Export All Events
</button>
</div>
{:else if isLoggedIn}
<div class="export-section"> <div class="export-section">
<h3>Export My Events</h3> <h3>Export My Events</h3>
<p>Download your personal events as a JSONL file.</p> <p>Download your personal events as a JSONL file.</p>
@ -531,6 +523,15 @@
📤 Export My Events 📤 Export My Events
</button> </button>
</div> </div>
{#if userRole === 'admin' || userRole === 'owner'}
<div class="export-section">
<h3>Export All Events</h3>
<p>Download the complete database as a JSONL file. This includes all events from all users.</p>
<button class="export-btn" on:click={exportAllEvents}>
📤 Export All Events
</button>
</div>
{/if}
{:else} {:else}
<div class="login-prompt"> <div class="login-prompt">
<p>Please log in to access export functionality.</p> <p>Please log in to access export functionality.</p>

Loading…
Cancel
Save