- GET /api/notification-channels: requireAuth(), admin sees all rows with owner_email JOIN, non-admin sees global-only - GET accepts ?owner=global|personal|all filter parameter - POST /api/notification-channels: requireAdmin(); preserves all four channel_type values (teams/telegram/ntfy/webhook); adds owner_user_id column - [id] routes: requireAuth() + per-row authorization (isAdmin || isOwner); global rows require admin - Admin channels page: Owner badge (Global vs Personal: email), Show filter select, disclaimer text for personal channels |
||
|---|---|---|
| .. | ||
| [id] | ||
| route.ts | ||