+
+
Notification Settings
+
+ Manage notification channels, templates, and delivery settings.
+
+
+
+ {/* Queue Status */}
+ {queueStatus && (
+
+
+
+ Pending
+ {queueStatus.pending || 0}
+
+
+
+
+ Processing
+ {queueStatus.processing || 0}
+
+
+
+
+ Completed
+
+ {queueStatus.completed || 0}
+
+
+
+
+
+ Failed
+
+ {queueStatus.failed || 0}
+
+
+
+
+ )}
+
+ {/* Channels */}
+
+
+ Notification Channels
+
+ Configure and manage notification delivery channels
+
+
+
+ {channelsLoading ? (
+
+ ) : channels.length === 0 ? (
+
+ No notification channels configured
+
+ ) : (
+
+
+
+ Channel
+ Type
+ Status
+ Configuration
+
+
+
+ {channels.map((channel, idx) => (
+
+ {channel.name}
+
+
+ {channel.type}
+
+
+
+ {channel.enabled ? (
+ Enabled
+ ) : (
+ Disabled
+ )}
+
+
+ {Object.entries(channel.config)
+ .filter(([_, value]) => value && value !== 'not configured')
+ .map(([key, value]) => (
+
+ {key}: {String(value)}
+
+ ))}
+
+
+ ))}
+
+
+ )}
+
+
+
+ {/* Email Channel Details */}
+ {channels.find(c => c.type === 'email') && (
+
+
+ Email Channel
+ SMTP configuration and settings
+
+
+
+
+ From Address:{' '}
+ {channels.find(c => c.type === 'email')?.config.from || 'Not configured'}
+
+
+ SMTP Server:{' '}
+ {channels.find(c => c.type === 'email')?.config.host || 'Not configured'}
+
+
+
+
+ )}
+
+ {/* SMS Channel Details */}
+ {channels.find(c => c.type === 'sms') && (
+
+
+ SMS Channel
+ SMS provider configuration
+
+
+
+
+ Provider:{' '}
+ {channels.find(c => c.type === 'sms')?.config.provider || 'Not configured'}
+
+
+
+
+ )}
+
+ {/* Push Channel Details */}
+ {channels.find(c => c.type === 'push') && (
+
+
+ Push Channel
+ Push notification provider configuration
+
+
+
+
+ Provider:{' '}
+ {channels.find(c => c.type === 'push')?.config.provider || 'Not configured'}
+
+
+
+
+ )}
+
+ {/* Webhook Channel Details */}
+ {channels.find(c => c.type === 'webhook') && (
+
+
+ Webhook Channel
+ Webhook delivery settings
+
+
+
+ Webhook channel is available for sending HTTP POST notifications
+
+
+
+ )}
+
+ {/* Templates Section */}
+
+
+ Templates
+
+ Manage notification templates (coming soon)
+
+
+
+
+ Template management will be available in a future update
+
+
+
+
+ );
+}
diff --git a/apps/web/src/pages/settings/permissions.tsx b/apps/web/src/pages/settings/permissions.tsx
index 6eae02e1..199d5934 100644
--- a/apps/web/src/pages/settings/permissions.tsx
+++ b/apps/web/src/pages/settings/permissions.tsx
@@ -1,8 +1,43 @@
+import { useQuery } from '@tanstack/react-query';
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';
-import { Button } from '@/components/ui/button';
import { Badge } from '@/components/ui/badge';
+import {
+ Table,
+ TableBody,
+ TableCell,
+ TableHead,
+ TableHeader,
+ TableRow,
+} from '@/components/ui/table';
+
+interface PermissionSet {
+ name: string;
+ label?: string;
+ description?: string;
+ isSystem?: boolean;
+ isActive?: boolean;
+ objectPermissions?: Record