diff --git a/.env.example b/.env.example index a5a5e92e..24a47d20 100644 --- a/.env.example +++ b/.env.example @@ -147,6 +147,17 @@ VIDEO_SCHEDULE_NOTIFICATION_ENABLED=true # Preview Links (Feb 2026) VIDEO_PREVIEW_LINK_EXPIRY_HOURS=24 +# --- Container Registry --- +# Gitea registry for pre-built production images. +# Set IMAGE_TAG to a commit SHA (or 'latest') to pull pre-built images instead of building from source. +# Leave IMAGE_TAG blank/unset (defaults to 'local') to build locally from source. +GITEA_REGISTRY=gitea.bnkops.com/admin +IMAGE_TAG= +# Credentials used by the registry status API endpoint (GET /api/registry/status) +# For docker push/pull, run: docker login gitea.bnkops.com +GITEA_REGISTRY_USER=admin +GITEA_REGISTRY_PASS= + # --- Gitea --- GITEA_URL=http://gitea-changemaker:3000 GITEA_PORT=3030 diff --git a/.playwright-mcp/console-2026-03-13T00-35-31-307Z.log b/.playwright-mcp/console-2026-03-13T00-35-31-307Z.log index d1517748..0fb278cd 100644 --- a/.playwright-mcp/console-2026-03-13T00-35-31-307Z.log +++ b/.playwright-mcp/console-2026-03-13T00-35-31-307Z.log @@ -192,3 +192,251 @@ at async Object.fetchMe (http://localhost:3002/src/stores/auth.store.ts:101:28) at async hydrate (http://localhost:3002/src/stores/auth.store.ts:118:11) @ http://localhost:3002/src/stores/auth.store.ts:105 [ 1685344ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:3002/api/payments/plans:0 +[758179964ms] [ERROR] WebSocket connection to 'ws://localhost:3002/' failed: Connection closed before receiving a handshake response @ http://localhost:3002/@vite/client:1034 +[758181440ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/MyCampaignsPage.tsx:0 +[758181440ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/ResponseWallPage.tsx:0 +[758181440ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/MapPage.tsx:0 +[758181440ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/ShiftsPage.tsx:0 +[758181440ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/MediaGalleryPage.tsx:0 +[758181441ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/ShortsPage.tsx:0 +[758181441ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/MediaViewerPage.tsx:0 +[758181442ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/PlaylistBrowsePage.tsx:0 +[758181442ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/PlaylistViewerPage.tsx:0 +[758181442ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/media/PlaylistManagementPage.tsx:0 +[758181442ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/MyStatsPage.tsx:0 +[758181442ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/MySettingsPage.tsx:0 +[758181442ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/VolunteerChatPage.tsx:0 +[758181442ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/PricingPage.tsx:0 +[758181442ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/ShopPage.tsx:0 +[758181442ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/ProductDetailPage.tsx:0 +[758181442ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/PlanDetailPage.tsx:0 +[758181442ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/DonatePage.tsx:0 +[758181442ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/DonationPagesListPage.tsx:0 +[758181442ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/PaymentSuccessPage.tsx:0 +[758181442ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/MyActivityPage.tsx:0 +[758181443ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/VolunteerShiftsPage.tsx:0 +[758181443ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/MyRoutesPage.tsx:0 +[758181443ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/VolunteerMapPage.tsx:0 +[758181443ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/FriendsPage.tsx:0 +[758181443ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/SocialProfilePage.tsx:0 +[758181443ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/NotificationsPage.tsx:0 +[758181444ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/SocialFeedPage.tsx:0 +[758181444ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/DiscoverPage.tsx:0 +[758181444ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/GroupDetailPage.tsx:0 +[758181444ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/AchievementsPage.tsx:0 +[758181444ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/types/api.ts:0 +[758181444ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/utils/roles.ts:0 +[758181444ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/QuickJoinPage.tsx:0 +[758181444ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/VerifyEmailPage.tsx:0 +[758181444ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/ResetPasswordPage.tsx:0 +[758181444ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/sms/SmsDashboardPage.tsx:0 +[758181444ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/sms/SmsContactsPage.tsx:0 +[758181444ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/sms/SmsCampaignsPage.tsx:0 +[758181444ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/sms/SmsConversationsPage.tsx:0 +[758181444ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/sms/SmsTemplatesPage.tsx:0 +[758181444ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/sms/SmsSetupPage.tsx:0 +[758181444ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/PeoplePage.tsx:0 +[758181445ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/ContactProfilePage.tsx:0 +[758181445ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/social/SocialDashboardPage.tsx:0 +[758181445ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/social/SocialGraphPage.tsx:0 +[758181445ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/social/SocialModerationPage.tsx:0 +[758181445ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/social/ReferralAdminPage.tsx:0 +[758181445ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/social/SpotlightAdminPage.tsx:0 +[758181445ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/social/ChallengesAdminPage.tsx:0 +[758181445ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/influence/ImpactStoriesPage.tsx:0 +[758181445ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/ReferralsPage.tsx:0 +[758181445ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/ChallengesPage.tsx:0 +[758181445ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/ChallengeDetailPage.tsx:0 +[758181445ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/WallOfFamePage.tsx:0 +[758181445ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/MeetingJoinPage.tsx:0 +[758181445ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/MeetingPlannerPage.tsx:0 +[758181445ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/MeetingAgendaPage.tsx:0 +[758181445ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/ActionItemsPage.tsx:0 +[758181445ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/SchedulingPollPage.tsx:0 +[758181445ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/PollsListPage.tsx:0 +[758181445ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/JitsiAuthPage.tsx:0 +[758181445ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/SchedulingCalendarPage.tsx:0 +[758181445ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/AdminCalendarViewPage.tsx:0 +[758181446ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/events/TicketedEventsPage.tsx:0 +[758181446ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/events/EventDetailPage.tsx:0 +[758181446ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/events/CheckInScannerPage.tsx:0 +[758181446ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/TicketedEventDetailPage.tsx:0 +[758181446ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/public/TicketConfirmationPage.tsx:0 +[758181446ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/MyTicketsPage.tsx:0 +[758181446ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/MyCalendarPage.tsx:0 +[758181446ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/SharedCalendarsPage.tsx:0 +[758181446ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/SharedCalendarViewPage.tsx:0 +[758181446ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/volunteer/FriendCalendarPage.tsx:0 +[758181446ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/NotFoundPage.tsx:0 +[758181447ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/command-palette/CommandPalette.tsx:0 +[758181447ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/lib/api.ts:0 +[758181447ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/VolunteerFooterNav.tsx:0 +[758181447ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/PublicNavBar.tsx:0 +[758181447ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/hooks/useSSE.ts:0 +[758181447ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/hooks/useLocalStorage.ts:0 +[758181447ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/lib/service-url.ts:0 +[758181447ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/lib/nav-defaults.ts:0 +[758181447ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/stores/command-palette.store.ts:0 +[758181447ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/stores/favorites.store.ts:0 +[758181447ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/utils/menu-items.ts:0 +[758181447ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/chat/RocketChatWidget.tsx:0 +[758181447ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/MediaSidebar.tsx:0 +[758181447ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/MediaBottomNav.tsx:0 +[758181447ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/ChatNotificationToast.tsx:0 +[758181448ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/chatbar/ChatBarContext.tsx:0 +[758181448ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/chatbar/ChatBar.tsx:0 +[758181448ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/hooks/useChatNotifications.ts:0 +[758181448ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/utils/color.ts:0 +[758181448ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/AuthModal.tsx:0 +[758181448ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/public/NewsletterSignup.tsx:0 +[758181448ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/pages/CampaignEmailsDrawer.tsx:0 +[758181448ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/canvass/ExportContactsModal.tsx:0 +[758181448ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/QrCodeModal.tsx:0 +[758181448ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/VideoPickerModal.tsx:0 +[758181448ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/email-templates/TestEmailModal.tsx:0 +[758181448ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/email-templates/VersionHistoryDrawer.tsx:0 +[758181448ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/email-templates/EmailTemplateEditor.tsx:0 +[758181448ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/map/CutEditorMap.tsx:0 +[758181448ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/SystemGauges.tsx:0 +[758181448ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/MiniDonutChart.tsx:0 +[758181448ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/RequestTrafficChart.tsx:0 +[758181449ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/LatencyBandsChart.tsx:0 +[758181449ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/ContainerPopover.tsx:0 +[758181449ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/ContainerMemoryChart.tsx:0 +[758181449ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/ActivityFeedCard.tsx:0 +[758181449ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/TodayEventsCard.tsx:0 +[758181449ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/ChatNotifierCard.tsx:0 +[758181449ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/TopVideosCard.tsx:0 +[758181449ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/RecentCommentsCard.tsx:0 +[758181450ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/DocsAnalyticsCard.tsx:0 +[758181450ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/UpcomingShiftsCard.tsx:0 +[758181450ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/MyActionItemsCard.tsx:0 +[758181450ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/CampaignEffectivenessCard.tsx:0 +[758181450ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/RecentSignupsCard.tsx:0 +[758181450ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/NewsletterStatsCard.tsx:0 +[758181450ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/DonationSummaryCard.tsx:0 +[758181450ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/SystemAlertsCard.tsx:0 +[758181450ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/GiteaActivityCard.tsx:0 +[758181450ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/VaultwardenAdoptionCard.tsx:0 +[758181450ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/dashboard/UpcomingMeetingsCard.tsx:0 +[758181450ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/canvass/CutCampaignAnalyticsCard.tsx:0 +[758181450ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/shifts/EditModeModal.tsx:0 +[758181450ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/shifts/ShiftsCalendar.tsx:0 +[758181451ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/map/AdminMapView.tsx:0 +[758181451ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/map/AreaImportWizard.tsx:0 +[758181451ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/types/canvass.ts:0 +[758181451ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/canvass/AdminLiveMap.tsx:0 +[758181451ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/canvass/HistoricalRoutesDrawer.tsx:0 +[758181451ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/canvass/CanvassTrendsCard.tsx:0 +[758181451ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/hooks/useMkDocsBuild.ts:0 +[758181451ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/landing-pages/LandingPageEditor.tsx:0 +[758181451ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/hooks/useDocsEditor.ts:0 +[758181451ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/docs/MobileDocsEditor.tsx:0 +[758181451ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/PhotoPickerModal.tsx:0 +[758181452ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/PhotoInsertModal.tsx:0 +[758181452ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/utils/videoCardHtml.ts:0 +[758181452ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/utils/photoCardHtml.ts:0 +[758181452ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/payments/DonateInsertModal.tsx:0 +[758181452ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/payments/ProductInsertModal.tsx:0 +[758181452ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/AdPickerModal.tsx:0 +[758181452ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/scheduling/PollInsertModal.tsx:0 +[758181452ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/hooks/useDocsCollaboration.ts:0 +[758181452ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/docs/CollaboratorAvatars.tsx:0 +[758181452ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/utils/wikiLinkCompletion.ts:0 +[758181452ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/docs/WikiLinkPickerModal.tsx:0 +[758181453ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/observability/ServiceStatusCard.tsx:0 +[758181453ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/observability/MetricsGrid.tsx:0 +[758181453ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/observability/AlertsTable.tsx:0 +[758181453ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/observability/IframeErrorBoundary.tsx:0 +[758181453ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/lib/media-api.ts:0 +[758181453ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/editor/standalone/browser/standalone-tokens.css:0 +[758181453ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/base/browser/ui/aria/aria.css:0 +[758181453ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/editor/browser/widget/codeEditor/editor.css:0 +[758181453ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/media/scrollbars.css:0 +[758181453ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/editor/browser/viewParts/blockDecorations/blockDecorations.css:0 +[758181454ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.css:0 +[758181454ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/editor/browser/viewParts/decorations/decorations.css:0 +[758181454ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.css:0 +[758181454ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/editor/browser/viewParts/indentGuides/indentGuides.css:0 +[758181454ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lineNumbers/lineNumbers.css:0 +[758181454ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/base/browser/ui/mouseCursor/mouseCursor.css:0 +[758181454ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/editor/browser/viewParts/viewLines/viewLines.css:0 +[758181454ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/editor/browser/viewParts/linesDecorations/linesDecorations.css:0 +[758181454ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/editor/browser/viewParts/margin/margin.css:0 +[758181454ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/editor/browser/viewParts/marginDecorations/marginDecorations.css:0 +[758181455ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/editor/browser/viewParts/minimap/minimap.css:0 +[758181455ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.css:0 +[758181455ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/editor/browser/viewParts/rulers/rulers.css:0 +[758181455ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.css:0 +[758181455ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/editor/browser/viewParts/selections/selections.css:0 +[758181455ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/editor/browser/viewParts/viewCursors/viewCursors.css:0 +[758181455ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/editor/browser/viewParts/whitespace/whitespace.css:0 +[758181455ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/editor/browser/gpu/css/media/decorationCssRuleExtractor.css:0 +[758181455ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.css:0 +[758181455ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.css:0 +[758181455ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/editor/browser/viewParts/gpuMark/gpuMark.css:0 +[758181456ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/platform/hover/browser/hover.css:0 +[758181456ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/base/browser/ui/hover/hoverWidget.css:0 +[758181456ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/base/browser/ui/contextview/contextview.css:0 +[758181456ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/base/browser/ui/selectBox/selectBox.css:0 +[758181456ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/base/browser/ui/list/list.css:0 +[758181456ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/base/browser/ui/dnd/dnd.css:0 +[758181456ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/base/browser/ui/selectBox/selectBoxCustom.css:0 +[758181456ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionbar.css:0 +[758181456ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/base/browser/ui/dropdown/dropdown.css:0 +[758181456ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/platform/actions/browser/menuEntryActionViewItem.css:0 +[758181456ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/editor/standalone/browser/quickInput/standaloneQuickInput.css:0 +[758181457ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/base/browser/ui/toggle/toggle.css:0 +[758181457ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/platform/quickinput/browser/media/quickInput.css:0 +[758181457ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/base/browser/ui/button/button.css:0 +[758181457ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/base/browser/ui/countBadge/countBadge.css:0 +[758181457ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/base/browser/ui/progressbar/progressbar.css:0 +[758181457ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/base/browser/ui/inputbox/inputBox.css:0 +[758181457ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/findInput.css:0 +[758181457ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconlabel.css:0 +[758181457ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/base/browser/ui/keybindingLabel/keybindingLabel.css:0 +[758181457ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/base/browser/ui/tree/media/tree.css:0 +[758181457ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/base/browser/ui/sash/sash.css:0 +[758181457ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/base/browser/ui/splitview/splitview.css:0 +[758181458ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/base/browser/ui/table/table.css:0 +[758181458ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer.css:0 +[758181458ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/base/browser/ui/toolbar/toolbar.css:0 +[758181458ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/editor/browser/widget/diffEditor/style.css:0 +[758181458ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/editor/browser/widget/markdownRenderer/browser/renderedMarkdown.css:0 +[758181458ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/node_modules/monaco-editor/esm/vs/editor/browser/widget/multiDiffEditor/style.css:0 +[758181458ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/hooks/useDebounce.ts:0 +[758181458ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/VideoCard.tsx:0 +[758181458ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/PhotoCard.tsx:0 +[758181459ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/AlbumCard.tsx:0 +[758181459ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/BulkActionsBar.tsx:0 +[758181459ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/PublishModal.tsx:0 +[758181459ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/DeleteConfirmModal.tsx:0 +[758181459ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/UploadVideoDrawer.tsx:0 +[758181459ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/UploadPhotoDrawer.tsx:0 +[758181459ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/VideoViewerModal.tsx:0 +[758181459ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/PhotoViewerModal.tsx:0 +[758181459ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/EditPhotoModal.tsx:0 +[758181460ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/AlbumDetailDrawer.tsx:0 +[758181460ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/CreateAlbumModal.tsx:0 +[758181460ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/QuickAnalyticsModal.tsx:0 +[758181460ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/SchedulePublishModal.tsx:0 +[758181460ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/ScheduleCalendarDrawer.tsx:0 +[758181460ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/EditVideoModal.tsx:0 +[758181460ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/FetchVideosDrawer.tsx:0 +[758181460ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/AddToPlaylistModal.tsx:0 +[758181462ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/BulkAddToPlaylistModal.tsx:0 +[758181462ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/BulkAccessLevelModal.tsx:0 +[758181462ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/types/gallery-ads.ts:0 +[758181462ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/GalleryAdCard.tsx:0 +[758181462ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/VideoPlayer.tsx:0 +[758181462ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/media/AdvancedVideoPlayer.tsx:0 +[758181462ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/payments/DonationWidget.tsx:0 +[758181462ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/payments/PricingWidget.tsx:0 +[758181463ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/payments/ProductWidget.tsx:0 +[758181463ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/influence/CampaignFormWidget.tsx:0 +[758181463ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/scheduling/SchedulingPollWidget.tsx:0 +[758181463ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/hooks/useDocumentTitle.ts:0 +[758181463ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/hooks/usePageAds.ts:0 +[758181463ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/AdBanner.tsx:0 +[758181463ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/calendar/UnifiedCalendar.tsx:0 +[758181463ms] [ERROR] Failed to load resource: net::ERR_NETWORK_CHANGED @ http://localhost:3002/src/components/public/ShiftSignupModal.tsx:0 diff --git a/DEV_WORKFLOW.md b/DEV_WORKFLOW.md new file mode 100644 index 00000000..79a31511 --- /dev/null +++ b/DEV_WORKFLOW.md @@ -0,0 +1,288 @@ +# Development & Release Workflow + +How code changes move from development to production deployments across all installation methods. + +--- + +## Overview + +There are **three ways** Changemaker Lite gets deployed: + +| Method | Who uses it | Images from | Compose file | +|--------|------------|-------------|--------------| +| **Source install** | Developers, contributors | Built locally from source | `docker-compose.yml` | +| **Release install** | Production servers, evaluators | Gitea registry (pre-built) | `docker-compose.prod.yml` (ships as `docker-compose.yml` in tarball) | +| **CCP provisioned** | Fleet operators (Control Panel) | Gitea registry (pre-built) | Rendered from `templates/docker-compose.yml.hbs` | + +All three methods share the same Gitea container registry at `gitea.bnkops.com/admin`. + +--- + +## The Pipeline + +``` + ┌──────────────────────────────────────────────────────────────────┐ + │ DEVELOPMENT (your machine) │ + │ │ + │ Edit code → docker compose up -d → test locally │ + │ Uses: docker-compose.yml (build: blocks + ./api:/app mounts) │ + └──────────────────┬───────────────────────────────────────────────┘ + │ git push + ▼ + ┌──────────────────────────────────────────────────────────────────┐ + │ BUILD & PUBLISH │ + │ │ + │ Step 1: ./scripts/build-and-push.sh │ + │ Builds 4 production images, pushes to Gitea registry │ + │ (api, admin, media-api, nginx) tagged :SHA + :latest │ + │ │ + │ Step 2: ./scripts/mirror-images.sh (run once/rarely) │ + │ Mirrors 36 third-party images to Gitea registry │ + │ (postgres, redis, nocodb, jitsi, grafana, etc.) │ + │ │ + │ Step 3: ./scripts/build-release.sh --tag vX.Y.Z --upload │ + │ Packages runtime files into ~9MB tarball, uploads to │ + │ Gitea Releases │ + └──────────────────┬───────────────────────────────────────────────┘ + │ + ┌───────────┴───────────┐ + ▼ ▼ + ┌─────────────────┐ ┌──────────────────┐ + │ RELEASE INSTALL │ │ CCP PROVISIONED │ + │ │ │ │ + │ curl installer │ │ Control Panel │ + │ or manual tarball│ │ creates instance │ + │ → config.sh │ │ via web UI │ + │ → docker compose │ │ → renders config │ + │ up -d │ │ → docker compose │ + │ │ │ up -d │ + └─────────────────┘ └──────────────────┘ + │ │ + └───────────┬───────────┘ + ▼ + All images pulled from + gitea.bnkops.com/admin + (zero external dependencies) +``` + +--- + +## Step-by-Step + +### 1. Local Development + +Standard Docker Compose workflow with hot-reload: + +```bash +# Start core services +docker compose up -d v2-postgres redis api admin + +# API logs (watch for errors) +docker compose logs -f api + +# Run with media API +docker compose up -d media-api + +# Run with monitoring stack +docker compose --profile monitoring up -d +``` + +**Key:** `docker-compose.yml` uses `build:` blocks to compile TypeScript from source and mounts `./api:/app` for live code changes. This is the only compose file that builds from source. + +### 2. Build & Push Production Images + +After code changes are tested locally: + +```bash +# Build production images and push to Gitea registry +./scripts/build-and-push.sh +``` + +This builds **4 services** with multi-stage Dockerfiles (production target, no dev dependencies), tags each image with `:SHA` and `:latest`, and pushes to `gitea.bnkops.com/admin/changemaker-{service}`: + +| Service | Dockerfile | What it produces | +|---------|-----------|-----------------| +| `api` | `api/Dockerfile` | Express + Prisma (compiled JS, no TS) | +| `admin` | `admin/Dockerfile` | Nginx serving React build output | +| `media-api` | `api/Dockerfile.media` | Fastify + FFmpeg (compiled JS) | +| `nginx` | `nginx/Dockerfile` | Nginx with `envsubst` domain templating | + +```bash +# Build specific services only +./scripts/build-and-push.sh --services api,admin + +# Build without pushing (verify first) +./scripts/build-and-push.sh --no-push + +# Include code-server (~9GB, only when Dockerfile changes) +./scripts/build-and-push.sh --include-code-server +``` + +### 3. Mirror Third-Party Images (Run Once / On Version Bumps) + +Copies all third-party Docker images used by the platform to the Gitea registry, so deployments never depend on Docker Hub, GHCR, LSCR, or GCR: + +```bash +# Mirror all 36 images (core + platform + comms + monitoring) +./scripts/mirror-images.sh + +# Mirror only essential infrastructure (postgres, redis, alpine) +./scripts/mirror-images.sh --core-only + +# Preview without executing +./scripts/mirror-images.sh --dry-run +``` + +**When to re-run:** Only when upgrading a third-party image version. The script has explicit version pins — update the version in `mirror-images.sh`, then re-run. + +Images are organized into 4 groups: + +| Group | Count | Examples | +|-------|-------|---------| +| Core Infrastructure | 5 | postgres:16-alpine, redis:7-alpine, alpine:3 | +| Platform Services | 16 | nocodb, listmonk, gitea, n8n, vaultwarden, nginx, code-server | +| Communication | 8 | rocket.chat, mongo, nats, gancio, jitsi (4 containers) | +| Monitoring | 7 | prometheus, grafana, alertmanager, cadvisor, exporters, gotify | + +### 4. Build Release Tarball + +Packages only runtime files (~9 MB) — no source code, no node_modules: + +```bash +# Build tarball +./scripts/build-release.sh --tag v2.2.0 + +# Build and upload to Gitea Releases +./scripts/build-release.sh --tag v2.2.0 --upload + +# Preview contents without creating tarball +./scripts/build-release.sh --dry-run +``` + +The tarball contains: +- `docker-compose.yml` (copy of `docker-compose.prod.yml` — image-only, no build blocks) +- `.env.example`, `config.sh` (configuration wizard) +- `scripts/` (init scripts, backup, upgrade, systemd units) +- `configs/` (prometheus, grafana, alertmanager, homepage, pangolin) +- `nginx/conf.d/` (templates for reference) +- `mkdocs/` (starter documentation) +- Empty data directories + +### 5. Deploying + +#### New Release Install (End Users) + +```bash +# One-liner +curl -fsSL https://gitea.bnkops.com/admin/changemaker.lite/raw/branch/v2/scripts/install.sh | bash + +# Or manual +curl -LO https://gitea.bnkops.com/admin/changemaker.lite/releases/latest/download/changemaker-lite-latest.tar.gz +tar xzf changemaker-lite-latest.tar.gz +cd changemaker-lite +bash config.sh +docker compose up -d +``` + +All images (custom + third-party) pull from `gitea.bnkops.com/admin`. No external registry access needed. + +#### New CCP Instance (Fleet Operators) + +The Control Panel provisions instances via its web UI: + +1. Operator fills in the Create Instance wizard (domain, features, email, tunnel) +2. CCP copies source files, renders templates (Handlebars), generates secrets +3. With `USE_REGISTRY_IMAGES=true` (default): pulls pre-built images from Gitea (~2 min) +4. With `USE_REGISTRY_IMAGES=false`: builds from source (~10+ min) +5. Starts infrastructure → runs migrations → starts all services + +CCP registry settings (in `changemaker-control-panel/.env`): +```bash +GITEA_REGISTRY=gitea.bnkops.com/admin # Registry URL for all images +USE_REGISTRY_IMAGES=true # true = pull pre-built, false = build from source +IMAGE_TAG=latest # Tag for custom images (api, admin, media-api) +``` + +### 6. Upgrading Existing Installations + +#### Source Installs + +```bash +./scripts/upgrade.sh # Standard: git pull + rebuild from source +./scripts/upgrade.sh --use-registry # Fast: pull pre-built images instead of rebuilding +./scripts/upgrade.sh --dry-run # Preview changes +``` + +#### Release Installs + +```bash +./scripts/upgrade.sh # Auto-detects release mode, downloads latest tarball +``` + +Release installs are detected by the presence of a `VERSION` file and absence of `.git/`. The upgrade script automatically downloads the latest tarball from Gitea instead of running `git pull`. + +--- + +## Image Naming Conventions + +All images live under `gitea.bnkops.com/admin/`: + +| Type | Naming Pattern | Example | +|------|---------------|---------| +| Custom services | `changemaker-{service}:{sha\|latest}` | `changemaker-api:latest` | +| Simple names | Same as upstream | `postgres:16-alpine`, `redis:7-alpine` | +| Namespaced → short | Org removed | `nocodb/nocodb` → `nocodb:0.301.3` | +| Conflict resolution | Explicit short name | `gotify/server` → `gotify`, `vaultwarden/server` → `vaultwarden` | +| Jitsi suite | `jitsi-{component}` | `jitsi-web:stable-9823`, `jitsi-prosody:stable-9823` | +| LinuxServer nginx | `ls-nginx` (avoids nginx conflict) | `ls-nginx:1.28.2` | + +--- + +## Two Compose Files + +| File | Purpose | Build? | Source mounts? | Image source | +|------|---------|--------|---------------|-------------| +| `docker-compose.yml` | Development | Yes (`build:` blocks) | Yes (`./api:/app`) | Built locally | +| `docker-compose.prod.yml` | Production | No | No | `${GITEA_REGISTRY:-gitea.bnkops.com/admin}/...` | + +Release tarballs ship `docker-compose.prod.yml` renamed as `docker-compose.yml`. + +The CCP template (`templates/docker-compose.yml.hbs`) generates a compose file that works like `docker-compose.prod.yml` when `USE_REGISTRY_IMAGES=true`, or like `docker-compose.yml` when `false`. + +--- + +## Quick Reference + +```bash +# ── Development ── +docker compose up -d v2-postgres redis api admin # Start dev stack +docker compose logs -f api # Watch API logs +docker compose exec api npx prisma migrate dev # Create migration + +# ── Build & Publish ── +./scripts/build-and-push.sh # Build + push 4 images +./scripts/mirror-images.sh # Mirror 36 third-party images +./scripts/build-release.sh --tag v2.2.0 --upload # Package + upload release + +# ── Deploy ── +curl -fsSL .../install.sh | bash # New install (release) +./scripts/upgrade.sh # Upgrade existing install +./scripts/upgrade.sh --use-registry # Fast upgrade (registry images) + +# ── Verify ── +curl -s http://localhost:4000/api/health # API health check +docker compose ps # Container status +``` + +--- + +## Checklist: Cutting a New Release + +1. [ ] All code changes committed and pushed to `v2` branch +2. [ ] `docker compose up -d` works locally (smoke test) +3. [ ] `./scripts/build-and-push.sh` — builds and pushes 4 production images +4. [ ] `./scripts/mirror-images.sh` — only if third-party versions changed +5. [ ] `./scripts/build-release.sh --tag vX.Y.Z --upload` — packages and uploads tarball +6. [ ] Test clean install: `tar xzf ... && cd changemaker-lite && bash config.sh && docker compose up -d` +7. [ ] Test upgrade: `./scripts/upgrade.sh` on an existing installation +8. [ ] Verify: `curl http://localhost:4000/api/health` returns `{"status":"ok"}` diff --git a/Dockerfile.code-server b/Dockerfile.code-server index dfee2be3..41321f92 100644 --- a/Dockerfile.code-server +++ b/Dockerfile.code-server @@ -2,17 +2,13 @@ FROM codercom/code-server:latest USER root -# Install Node.js 18+ and npm -RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - \ - && apt-get install -y nodejs +# Install Node.js (for npm/claude-code — code-server bundles its own node but doesn't expose it) +RUN apt-get update && apt-get install -y nodejs npm --no-install-recommends \ + && rm -rf /var/lib/apt/lists/* -# Install Claude Code globally as root +# Install Claude Code globally RUN npm install -g @anthropic-ai/claude-code -# Install Ollama (needs zstd for extraction) -RUN apt-get update && apt-get install -y zstd && rm -rf /var/lib/apt/lists/* \ - && curl -fsSL https://ollama.com/install.sh | sh - # Install Python and dependencies RUN apt-get update && apt-get install -y \ python3 \ diff --git a/SOCIAL_CALENDAR_PLAN.md b/SOCIAL_CALENDAR_PLAN.md deleted file mode 100644 index a5f07d9a..00000000 --- a/SOCIAL_CALENDAR_PLAN.md +++ /dev/null @@ -1,569 +0,0 @@ -# Social Calendar Feature Plan - -**Created:** 2026-03-06 -**Status:** Planning Complete — Ready for Phase A Implementation -**Branch:** v2 -**Feature Flag:** `enableSocialCalendar` (new, under SiteSettings) - ---- - -## Overview - -A layered personal and social calendar system. Each user gets their own calendar with multiple layers (system-populated, user-created, external feeds). Calendars can be shared between users at the item, category (layer), or whole-calendar level. Shared views allow multiple users' events to appear on a merged, color-coded calendar. Admin shared views can auto-include users by role. - -### Design Principles - -- **Layers are the core abstraction** — every event belongs to a layer, layers control visibility and sharing -- **System layers are virtual** — shifts, tickets, polls are queried live from source tables, not duplicated -- **Recurrence uses materialization** — consistent with existing ShiftSeries pattern (generate DB rows, allow exceptions) -- **Social-first** — friend relationships gate sharing; admin views are separate and only expose system data -- **Privacy by default** — layers default to PRIVATE; users explicitly opt into sharing - ---- - -## Data Model - -### CalendarLayer - -Each user has multiple layers. System layers are auto-created on first calendar access. - -| Field | Type | Notes | -|-------|------|-------| -| id | String (cuid) | PK | -| userId | String | FK to User | -| name | String | "Personal", "Gym", "Google Cal", etc. | -| layerType | Enum | SYSTEM, USER, EXTERNAL | -| systemType | Enum? | SHIFTS, TICKETS, POLLS, PUBLIC_EVENTS (for SYSTEM layers only) | -| color | String | Hex color (#1890ff) | -| visibility | Enum | PRIVATE, FRIENDS, PUBLIC | -| isEnabled | Boolean | User can toggle layers on/off for themselves | -| sortOrder | Int | Display ordering | -| createdAt | DateTime | | -| updatedAt | DateTime | | - -**System layers (auto-created per user):** -- My Shifts — from ShiftSignup records -- My Tickets — from EventTicket records -- My Polls — from SchedulingPollVote records -- Public Events — the existing Gancio/platform feed (togglable) - -System layers are **virtual** — no CalendarItem rows are created. The API queries source tables directly and maps to the CalendarItem shape at response time. - -### CalendarItem - -User-created events, time blocks, and cached .ics feed entries. - -| Field | Type | Notes | -|-------|------|-------| -| id | String (cuid) | PK | -| userId | String | FK to User (owner) | -| layerId | String | FK to CalendarLayer | -| title | String | | -| description | String? | Text | -| date | DateTime | Date of this occurrence | -| startTime | String | HH:MM | -| endTime | String | HH:MM | -| isAllDay | Boolean | Default false | -| itemType | Enum | EVENT, TIME_BLOCK, REMINDER | -| location | String? | | -| color | String? | Override (null = inherit layer color) | -| visibility | Enum? | PRIVATE, FRIENDS, PUBLIC (null = inherit from layer) | -| busyStatus | Enum | BUSY, TENTATIVE, FREE (default BUSY) | -| showDetailsTo | Enum | NOBODY, FRIENDS, EVERYONE (default FRIENDS) | -| recurrenceRule | Json? | See Recurrence section | -| recurrenceEnd | DateTime? | When series stops | -| seriesId | String? | Groups recurring instances | -| isException | Boolean | Edited instance that broke from pattern | -| sourceType | Enum | MANUAL, ICS_FEED | -| sourceId | String? | External reference (ics UID, etc.) | -| createdAt | DateTime | | -| updatedAt | DateTime | | - -**Notes:** -- System-layer items (shifts, tickets, polls) are NOT stored as CalendarItem rows — they're virtual -- .ics feed items ARE stored as CalendarItem rows (cached from external source, read-only to user) -- MANUAL items are user-created freeform events - -### CalendarFeed (.ics import) - -| Field | Type | Notes | -|-------|------|-------| -| id | String (cuid) | PK | -| userId | String | FK to User | -| name | String | "Google Calendar", "Work" | -| url | String | .ics URL | -| layerId | String | FK to auto-created CalendarLayer | -| refreshInterval | Enum | FIFTEEN_MIN, HOURLY, SIX_HOUR, DAILY | -| lastFetchedAt | DateTime? | | -| lastStatus | Enum | OK, ERROR, PENDING | -| lastError | String? | Error message if failed | -| itemCount | Int | How many items imported | -| createdAt | DateTime | | -| updatedAt | DateTime | | - -### SharedCalendarView - -| Field | Type | Notes | -|-------|------|-------| -| id | String (cuid) | PK | -| name | String | "Weekend Crew", "All Shift Admins" | -| description | String? | | -| ownerId | String | FK to User (creator) | -| viewType | Enum | MANUAL, ROLE_BASED | -| autoIncludeRoles | Json? | ["MAP_ADMIN", "USER"] (for ROLE_BASED) | -| includedLayerTypes | Json | ["shifts", "tickets", "personal-public"] | -| shareScope | Enum | MEMBERS, PUBLIC | -| shareToken | String? | Unique token for public share URL | -| createdAt | DateTime | | -| updatedAt | DateTime | | - -**ROLE_BASED views:** -- Auto-include users matching specified roles -- Only pull system layers (shifts, tickets, polls) — never personal layers -- No notifications sent to included users (admin operational tool) -- Created/managed by SUPER_ADMIN or MAP_ADMIN - -**MANUAL views:** -- Members are explicitly invited via notification system -- Can include personal layers (with member consent) -- Members can decline/leave - -### SharedCalendarMember - -| Field | Type | Notes | -|-------|------|-------| -| id | String (cuid) | PK | -| viewId | String | FK to SharedCalendarView | -| userId | String | FK to User | -| status | Enum | INVITED, ACCEPTED, DECLINED | -| color | String | Auto-assigned from palette | -| joinedAt | DateTime? | | -| @@unique | [viewId, userId] | | - -**Auto-color palette:** -``` -#1890ff (blue), #52c41a (green), #fa8c16 (orange), #722ed1 (purple), -#eb2f96 (pink), #13c2c2 (cyan), #faad14 (gold), #f5222d (red), -#2f54eb (geekblue), #a0d911 (lime) -``` -Assigned sequentially as members join: `PALETTE[memberIndex % length]`. -Users can override their assigned color per shared view. - -### SharedViewComment - -| Field | Type | Notes | -|-------|------|-------| -| id | String (cuid) | PK | -| viewId | String | FK to SharedCalendarView | -| userId | String | FK to User | -| itemDate | String | YYYY-MM-DD (which date this comment is about) | -| itemId | String? | Optional: specific CalendarItem or source item ID | -| content | String | Text | -| createdAt | DateTime | | - -### SharedViewReaction - -| Field | Type | Notes | -|-------|------|-------| -| id | String (cuid) | PK | -| viewId | String | FK to SharedCalendarView | -| userId | String | FK to User | -| itemId | String | CalendarItem or source item ID (e.g., "shift-abc123") | -| emoji | String | Single emoji or shortcode | -| createdAt | DateTime | | -| @@unique | [viewId, userId, itemId, emoji] | One reaction type per user per item | - -### CalendarExportToken (.ics export) - -| Field | Type | Notes | -|-------|------|-------| -| id | String (cuid) | PK | -| userId | String | FK to User | -| token | String | Unique, random (for URL auth) | -| includePersonal | Boolean | Whether personal events are exported | -| includeLayers | Json? | Array of layer IDs (null = all enabled) | -| createdAt | DateTime | | - -Export URL: `GET /api/calendar/feed/:userId/:token.ics` - ---- - -## Recurrence Model - -Uses **materialization** (consistent with existing ShiftSeries pattern): - -1. User creates a recurring event with a recurrence rule -2. System generates CalendarItem rows for the next 3 months -3. Background job (BullMQ, daily) extends series forward by 1 month -4. Individual instances can be edited (becomes `isException: true`) or deleted -5. Editing the series template updates all non-exception future instances - -### Recurrence Rule JSON - -```json -{ - "frequency": "DAILY | WEEKLY | BIWEEKLY | MONTHLY", - "daysOfWeek": [1, 3, 5], - "dayOfMonth": 15, - "interval": 1 -} -``` - -- `WEEKLY` + `daysOfWeek: [1,3,5]` = every Mon/Wed/Fri -- `MONTHLY` + `dayOfMonth: 15` = 15th of every month -- `BIWEEKLY` + `daysOfWeek: [2,4]` = every other Tue/Thu -- `interval` for skip patterns (every 2 weeks, every 3 months) - -### Recurrence Edit Options (UI) - -When editing a recurring event instance: -- "This event only" — marks as exception, edits the single instance -- "This and future events" — updates template + regenerates future non-exception instances -- "All events in series" — updates template + all instances (including past, excluding exceptions) - -When deleting: -- "This event only" — soft-delete the single instance -- "This and future events" — delete future instances, set recurrenceEnd on template -- "All events" — delete entire series - ---- - -## Time Block Visibility (Configurable per item) - -| `showDetailsTo` | Friends see | Public sees | -|-----------------|-------------|-------------| -| NOBODY | "Busy 2-4pm" | "Busy 2-4pm" | -| FRIENDS | "Dentist 2-4pm" | "Busy 2-4pm" | -| EVERYONE | "Dentist 2-4pm" | "Dentist 2-4pm" | - -Combined with `busyStatus`: -- **BUSY** — solid color block -- **TENTATIVE** — dashed/lighter block -- **FREE** — no block shown (informational only, e.g., "Available for meetings") - ---- - -## Notification Types (reusing existing system) - -| Type | Message | Trigger | -|------|---------|---------| -| SHARED_VIEW_INVITE | "Alice invited you to 'Weekend Crew' calendar" | Manual shared view invite | -| SHARED_VIEW_ACCEPTED | "Bob accepted your invite to 'Weekend Crew'" | Member accepts | -| CALENDAR_EVENT_INVITE | "Alice added you to 'Planning Meeting' on Mar 10" | Phase B: event-level sharing | -| CALENDAR_REMINDER | "Reminder: Team standup in 15 minutes" | Future: optional reminders | - -Role-based admin views do NOT trigger notifications (admin operational tool using only system data). - ---- - -## Availability Finder (Phase B) - -A dedicated mode within shared calendar views: - -1. Toggle "Find Available Time" on a shared view -2. System overlays all members' BUSY/TENTATIVE time blocks -3. Highlights gaps where ALL members are free -4. Optional: filter by time range ("only show weekday 9am-5pm slots") -5. Click a free slot to create an event and auto-invite all members - -Visual: green highlight on free slots, red/orange on conflicts, member avatars on busy blocks. - ---- - -## API Routes - -### Phase A (Personal Calendar) - -``` -# Layers -GET /api/calendar/layers — list user's layers -POST /api/calendar/layers — create custom layer -PATCH /api/calendar/layers/:id — update layer (name, color, visibility, enabled) -DELETE /api/calendar/layers/:id — delete custom layer (+ its items) - -# Calendar Items -GET /api/calendar/items — list items in date range (all enabled layers merged) -POST /api/calendar/items — create item (event, time block, reminder) -PATCH /api/calendar/items/:id — update item -DELETE /api/calendar/items/:id — delete item - -# Recurrence -POST /api/calendar/items/:id/series — edit series (this-only, this-and-future, all) -DELETE /api/calendar/items/:id/series — delete series (this-only, this-and-future, all) - -# Unified personal view (merges system layers + user items) -GET /api/calendar/my — personal calendar (date range, layer filters) -``` - -### Phase B (Sharing + Social) - -``` -# Shared Views -GET /api/calendar/shared — list shared views I own or am a member of -POST /api/calendar/shared — create shared view -PATCH /api/calendar/shared/:id — update shared view -DELETE /api/calendar/shared/:id — delete shared view (owner only) - -# Members -POST /api/calendar/shared/:id/invite — invite user(s) to shared view -PATCH /api/calendar/shared/:id/respond — accept/decline invite -DELETE /api/calendar/shared/:id/leave — leave a shared view -GET /api/calendar/shared/:id/members — list members + colors - -# Merged calendar data -GET /api/calendar/shared/:id/items — merged items from all members - -# Event-level sharing -POST /api/calendar/items/:id/share — share specific item with friend(s) - -# Comments & Reactions (on shared views) -GET /api/calendar/shared/:id/comments?date=YYYY-MM-DD -POST /api/calendar/shared/:id/comments -DELETE /api/calendar/shared/:id/comments/:commentId -POST /api/calendar/shared/:id/reactions -DELETE /api/calendar/shared/:id/reactions/:reactionId - -# Availability finder -GET /api/calendar/shared/:id/availability?start=&end=&dayStart=09:00&dayEnd=17:00 - -# Friend's public calendar -GET /api/calendar/user/:userId — view a friend's public items -``` - -### Phase C (.ics Integration) - -``` -# Feeds (import) -GET /api/calendar/feeds — list user's subscribed feeds -POST /api/calendar/feeds — subscribe to .ics URL -PATCH /api/calendar/feeds/:id — update feed settings -DELETE /api/calendar/feeds/:id — unsubscribe (deletes layer + cached items) -POST /api/calendar/feeds/:id/refresh — force refresh now - -# Export -GET /api/calendar/export/token — get or create export token -DELETE /api/calendar/export/token — revoke export token -GET /api/calendar/feed/:userId/:token.ics — public .ics feed (no auth, token in URL) -``` - -### Phase D (Admin Shared Views) - -``` -# Admin role-based views (requireRole: SUPER_ADMIN, MAP_ADMIN) -POST /api/admin/calendar/shared — create role-based shared view -PATCH /api/admin/calendar/shared/:id — update -DELETE /api/admin/calendar/shared/:id — delete -GET /api/admin/calendar/shared/:id/items — merged system-layer data for matching users -``` - ---- - -## Frontend Pages & Components - -### Phase A - -| Component | Location | Description | -|-----------|----------|-------------| -| MyCalendarPage | `volunteer/MyCalendarPage.tsx` | Personal calendar (main view) | -| CalendarLayerPanel | `components/calendar/CalendarLayerPanel.tsx` | Sidebar: layer list with toggles, colors, visibility | -| CalendarItemModal | `components/calendar/CalendarItemModal.tsx` | Create/edit event, time block, or reminder | -| RecurrenceEditor | `components/calendar/RecurrenceEditor.tsx` | Recurrence rule builder (frequency, days, end date) | -| PersonalCalendarView | `components/calendar/PersonalCalendarView.tsx` | Month/week/day calendar with layer color-coding | -| MobileDayView | `components/calendar/MobileDayView.tsx` | Day/3-day swipeable view for mobile | - -**Mobile UX:** Day or 3-day swipeable view (not full month grid). Swipe left/right to navigate days. Layer toggles in a collapsible bottom sheet. - -### Phase B - -| Component | Location | Description | -|-----------|----------|-------------| -| SharedCalendarsPage | `volunteer/SharedCalendarsPage.tsx` | List of shared views I'm in | -| SharedCalendarView | `components/calendar/SharedCalendarView.tsx` | Merged multi-user calendar with member colors | -| SharedViewMembersPanel | `components/calendar/SharedViewMembersPanel.tsx` | Member list, color overrides, invite button | -| AvailabilityFinder | `components/calendar/AvailabilityFinder.tsx` | Free/busy overlay with slot highlighting | -| CalendarComments | `components/calendar/CalendarComments.tsx` | Comment thread for a date in shared view | -| CalendarReactions | `components/calendar/CalendarReactions.tsx` | Emoji reactions on items | -| FriendCalendarPage | `volunteer/FriendCalendarPage.tsx` | View a friend's public calendar | - -### Phase C - -| Component | Location | Description | -|-----------|----------|-------------| -| CalendarFeedsPanel | `components/calendar/CalendarFeedsPanel.tsx` | Manage .ics subscriptions | -| CalendarExportPanel | `components/calendar/CalendarExportPanel.tsx` | Export token management, copy URL | - -### Phase D - -| Component | Location | Description | -|-----------|----------|-------------| -| AdminSharedViewsPage | `pages/AdminSharedViewsPage.tsx` | Admin: create/manage role-based views | -| AdminCalendarOverview | `components/calendar/AdminCalendarOverview.tsx` | Big shift/event overview for admins | - ---- - -## Navigation & Routing - -### Volunteer Portal -- Footer nav: add "Calendar" tab (CalendarOutlined icon) -- `/volunteer/calendar` — MyCalendarPage -- `/volunteer/calendar/shared` — SharedCalendarsPage -- `/volunteer/calendar/shared/:id` — SharedCalendarView -- `/volunteer/calendar/friend/:userId` — FriendCalendarPage - -### Admin -- Sidebar under existing section: "Calendar Overview" -- `/app/calendar/shared` — AdminSharedViewsPage - ---- - -## Phase Breakdown - -### Phase A: Personal Calendar + Layers + Freeform Events -**Scope:** -- [x] Prisma models: CalendarLayer, CalendarItem, CalendarFeed, SharedCalendarView, SharedCalendarMember, SharedViewComment, SharedViewReaction, CalendarExportToken (+ 12 enums) -- [x] Auto-create system layers on first calendar access (ensureSystemLayers) -- [x] CalendarItem CRUD (create, read, update, delete) -- [x] Recurrence: create series (materialize 3 months), edit/delete with scope options (THIS_ONLY/THIS_AND_FUTURE/ALL) -- [ ] BullMQ job: extend recurring series daily (add 1 month of future instances) -- [x] Personal calendar API: GET /api/calendar/my (merge system layers + user items) -- [x] System layer queries: shifts (from ShiftSignup), tickets (from Ticket), polls (from SchedulingPollVote) -- [x] Layer CRUD: create custom layers, toggle on/off, set color -- [x] Layer visibility settings (PRIVATE/FRIENDS/PUBLIC) — stored but not enforced until Phase B -- [x] MyCalendarPage: month view (desktop), day/3-day view (mobile) -- [x] CalendarLayerPanel: sidebar with layer toggles, color pickers, inline editing, grouped by type -- [x] CalendarItemModal: create/edit form with item type, recurrence, time block settings, scope selector -- [x] RecurrenceEditor: frequency/days/interval/end-date with preview text -- [x] PersonalCalendarView: desktop month view with layer-colored items -- [x] MobileDayView: day view with time grid, current time indicator, floating add button -- [x] Volunteer footer nav: "Calendar" tab (gated behind enableSocialCalendar) -- [x] Feature flag: enableSocialCalendar in SiteSettings, Zod schema, frontend types, FeatureGate -- [x] Settings page toggle added ("Social Calendar" in People & Engagement section) - -### Phase B: Sharing + Social -**Scope:** -- [ ] Prisma models: SharedCalendarView, SharedCalendarMember, SharedViewComment, SharedViewReaction -- [ ] SharedCalendarView CRUD -- [ ] Invite flow: send invite via notification system, accept/decline/leave -- [ ] Merged calendar API: query all members' items with layer type filtering -- [ ] Auto-color assignment for members -- [ ] Layer visibility enforcement (PRIVATE/FRIENDS/PUBLIC filtering based on relationship) -- [ ] Event-level sharing: share a specific item with friend(s) via notification -- [ ] Comments on shared view dates/items -- [ ] Emoji reactions on shared view items -- [ ] Availability finder: free/busy overlay, slot highlighting, time range filter -- [ ] Friend's public calendar view -- [ ] SharedCalendarsPage, SharedCalendarView components -- [ ] AvailabilityFinder component -- [ ] CalendarComments, CalendarReactions components -- [ ] Public share URL (shareToken for unauthenticated view) - -### Phase C: .ics Integration -**Scope:** -- [x] Prisma models: CalendarFeed, CalendarExportToken (already existed from Phase A migration) -- [x] .ics feed parser (node-ical v0.25.5) -- [x] BullMQ job: refresh feeds every 15 minutes (calendar-feed-refresh queue) -- [x] Feed CRUD: subscribe, update, delete, force refresh -- [x] Auto-create EXTERNAL layer per feed, cache items as CalendarItem rows (sourceType: ICS_FEED) -- [x] .ics export: generate feed from user's calendar via ical-generator v10, token-authenticated URL -- [x] Export token management (create, list, revoke) -- [x] CalendarFeedsPanel, CalendarExportPanel components -- [x] MyCalendarPage settings Drawer integration (gear icon) - -### Phase D: Admin Shared Views -**Scope:** -- [ ] Role-based SharedCalendarView (viewType: ROLE_BASED) -- [ ] Auto-include users by role(s) — query live, no member rows needed -- [ ] Only expose system layers (shifts, tickets, polls) — no personal data -- [ ] No notifications to included users -- [ ] Admin routes (requireRole: SUPER_ADMIN, MAP_ADMIN) -- [ ] AdminSharedViewsPage -- [ ] AdminCalendarOverview (big shift/event dashboard) - ---- - -## Implementation Notes - -### Extending UnifiedCalendar - -The existing `UnifiedCalendar` component and `unified-calendar.service.ts` remain as the **public** calendar. The new personal calendar service (`calendar.service.ts`) reuses the same source queries (shifts, Gancio, polls, ticketed events) but filters to the user's own records and merges with their CalendarItem rows. - -### Recurrence Background Job - -```typescript -// jobs/calendar-recurrence.job.ts -// Runs daily via BullMQ repeatable job -// 1. Find all CalendarItems with recurrenceRule where latest materialized date < now + 3 months -// 2. Generate new instances up to 3 months ahead -// 3. Skip dates that already have an instance (idempotent) -``` - -### .ics Feed Refresh Job - -```typescript -// jobs/calendar-feed-refresh.job.ts -// Runs every 15 minutes via BullMQ repeatable job -// 1. Find feeds where lastFetchedAt + refreshInterval < now -// 2. Fetch .ics URL, parse events -// 3. Upsert CalendarItem rows (match on sourceId = ics UID) -// 4. Delete items no longer in feed -// 5. Update feed status -``` - -### Privacy Boundaries - -| Scenario | What's visible | -|----------|---------------| -| Viewing own calendar | Everything (all layers, all items) | -| Friend views your calendar | Items on FRIENDS or PUBLIC visibility layers, plus items with individual FRIENDS/PUBLIC override | -| Public profile calendar | Only PUBLIC visibility layers and PUBLIC override items | -| Admin role-based view | Only system layers (shifts, tickets, polls) for users matching role filter | -| Shared view (MANUAL) | Items from includedLayerTypes on layers with appropriate visibility for the viewer | -| Time blocks (BUSY) | Title shown per showDetailsTo setting, always shows busy bar | - -### Performance Considerations - -- CalendarItem table will grow with materialized recurrence — add indexes on (userId, date), (layerId, date), (seriesId) -- System layers query source tables directly — leverage existing indexes on ShiftSignup, EventTicket, etc. -- .ics feed items are cached — only re-parsed on refresh interval -- Shared view queries can be expensive (N members x M layers) — cache merged results in Redis (2min TTL, bust on member change) -- Availability finder operates on time blocks only — narrow query scope - ---- - -## Tracking Log - -### 2026-03-06 — Planning Complete -- Brainstormed feature across 3 rounds of refinement -- Decided on layer-based architecture (system, user, external layers) -- Recurrence uses materialization (consistent with ShiftSeries pattern) -- Time block visibility is configurable per item (showDetailsTo: NOBODY/FRIENDS/EVERYONE) -- Shared views support manual (invite-based) and role-based (admin, system data only) -- Availability finder included in Phase B -- Comments and reactions on shared view items included in Phase B -- .ics import and export in Phase C -- Admin role-based views in Phase D (no personal data, no notifications) -- Reuse existing notification system for invites -- Auto-color assignment for shared view members with user override option -- Mobile UX: day/3-day swipeable view instead of month grid - -### 2026-03-06 — Phase A Implementation Complete -- Schema: 8 models, 12 enums, migration `20260306203326_social_calendar_layers_items` applied -- Fixed pre-existing migration ordering issue (ticketed_events create must come before alter) -- Backend: calendar.service.ts (layer mgmt, item CRUD, recurrence materialization, personal calendar merge), calendar.routes.ts (9 endpoints), calendar.schemas.ts (Zod validation) -- Frontend: 5 new components (CalendarLayerPanel, CalendarItemModal, RecurrenceEditor, PersonalCalendarView, MobileDayView), MyCalendarPage -- Navigation: VolunteerFooterNav Calendar tab, App.tsx route, SettingsPage toggle -- Smoke tested: layers auto-create, item CRUD works, recurring events materialize correctly (Weekly Mon/Wed/Fri generated 11 instances through June) -- Both API and Admin compile with zero TypeScript errors -- Remaining Phase A item: BullMQ job for extending recurring series (not critical for launch, series materializes 3 months on creation) - -### 2026-03-07 — Phase C Implementation Complete -- Backend: feed.schemas.ts (3 Zod schemas), feed.service.ts (feed CRUD, ICS parsing, RRULE materialization, export generation), feed.routes.ts (1 public + 8 auth routes), calendar-feed-queue.service.ts (BullMQ 15min repeatable job) -- Dependencies: node-ical v0.25.5 (ICS parsing), ical-generator v10.0.0 (ICS output) -- Feed import: streaming body read with 5MB limit, 1000 event cap, RRULE materialization via rrule.between(), stale event cleanup, status tracking (OK/ERROR/PENDING) -- Feed export: 32-byte random token, configurable layer/personal inclusion, past 1 month + future 3 months, standard iCalendar output with Content-Type: text/calendar -- Frontend: CalendarFeedsPanel (add/edit/delete/refresh with status badges), CalendarExportPanel (create/copy/revoke tokens), settings Drawer in MyCalendarPage (gear icon) -- Types: CalendarFeed, CalendarExportToken, CalendarFeedStatus, CalendarFeedInterval added to admin/src/types/api.ts -- server.ts: feedRoutes mounted before calendarRoutes (public .ics route needs no auth), queue worker started on bootstrap, graceful shutdown -- Smoke tested: Google US Holidays feed → 317 events imported with status OK; export token → valid .ics with VEVENT entries; revoke → 404 -- Docker gotcha: anonymous volume `/app/node_modules` caches old dependencies — must `docker compose rm -sf api` to clear when adding new npm packages -- Both API and Admin compile with zero TypeScript errors diff --git a/SOCIAL_SYSTEM_PLAN.md b/SOCIAL_SYSTEM_PLAN.md deleted file mode 100644 index 2e4ee5c6..00000000 --- a/SOCIAL_SYSTEM_PLAN.md +++ /dev/null @@ -1,156 +0,0 @@ -# Social Connections System — Implementation Plan - -See the full plan in the conversation transcript. This file tracks implementation progress. - -## Phase Status - -| Phase | Description | Status | -|-------|-------------|--------| -| 1 | Feature Flag + Social Module Skeleton | COMPLETE | -| 2 | Friendship API (Send, Accept, Decline, Cancel, Unfriend) | COMPLETE | -| 3 | Block/Unblock API + Privacy Settings API | COMPLETE | -| 4 | User Social Profile + Volunteer Portal UI Foundation | COMPLETE | -| 5 | In-App Notification System (Bell Icon + Dropdown) | COMPLETE | -| 6 | Social Activity Feed (Friends' Activities) | COMPLETE | -| 7 | CRM Bridge (Auto-Connect + Friend Suggestions) | COMPLETE | -| 8 | Poke System + Video Recommendations | COMPLETE | -| 9 | Close Friends + Friends Management Page | COMPLETE (merged into Phase 4 UI) | -| 10 | Email Digest Notifications | COMPLETE | -| 11 | Social Integration with Existing Features | COMPLETE | -| 12 | Rocket.Chat DM Integration | COMPLETE | -| 13 | Group/Team Features (Shift Teams, Campaign Teams) | COMPLETE | -| 14 | Gamification (Achievements, Streaks, Leaderboards) | COMPLETE | -| 15 | Real-Time Features (SSE for Live Notifications, Online Status) | COMPLETE | - -## Files Created/Modified - -### Backend (API) -- `api/prisma/schema.prisma` — added `enableSocial` to SiteSettings -- `api/prisma/migrations/20260224215259_add_enable_social/` — migration -- `api/src/modules/social/` — new module directory - - `social.routes.ts` — main router mounting sub-routers - - `social.schemas.ts` — Zod schemas (friendship, privacy, notification) - - `social.middleware.ts` — `checkSocialEnabled` feature gate - - `social.rate-limits.ts` — rate limiters (friend request, social action) - - `friendship.service.ts` — full friendship CRUD + notifications - - `friendship.routes.ts` — 10 friendship endpoints - - `block.service.ts` — block/unblock with auto-unfriend - - `block.routes.ts` — 3 block endpoints - - `privacy.service.ts` — privacy settings get/update (auto-create defaults) - - `privacy.routes.ts` — 2 privacy endpoints - - `notification.service.ts` — notification CRUD + preferences (respects opt-outs) - - `notification.routes.ts` — 7 notification endpoints - - `profile.routes.ts` — user profile view (own + other, privacy-filtered) -- `api/src/modules/settings/settings.schemas.ts` — added `enableSocial` -- `api/src/server.ts` — mounted socialRouter at `/api/social` - -### Frontend (Admin) -- `admin/src/types/social.ts` — TypeScript interfaces -- `admin/src/stores/social.store.ts` — Zustand social store -- `admin/src/components/social/` — new directory - - `UserAvatar.tsx` — initials avatar with userId-based color - - `FriendButton.tsx` — context-aware friend action button - - `NotificationBell.tsx` — bell icon + dropdown (30s polling) -- `admin/src/pages/volunteer/` — new pages - - `SocialProfilePage.tsx` — own + other user profile - - `FriendsPage.tsx` — friends management (tabs: friends, requests, sent, blocked) - - `NotificationsPage.tsx` — full notification list + preferences -- `admin/src/components/VolunteerLayout.tsx` — added NotificationBell -- `admin/src/components/VolunteerFooterNav.tsx` — added "Friends" nav item -- `admin/src/components/FeatureGate.tsx` — added `enableSocial` -- `admin/src/types/api.ts` — added `enableSocial` to SiteSettings -- `admin/src/pages/SettingsPage.tsx` — added toggle -- `admin/src/App.tsx` — added 6 new volunteer routes - -### Phase 6 — Social Activity Feed -- `api/src/modules/social/feed.service.ts` — aggregates 4 activity types + Redis cache (2-min TTL) -- `api/src/modules/social/feed.routes.ts` — GET `/` (friend feed), GET `/my` (own activity) -- `admin/src/components/social/FeedCard.tsx` — activity card with type-based icon/color -- `admin/src/pages/volunteer/SocialFeedPage.tsx` — feed page with suggestions widget - -### Phase 7 — CRM Bridge + Suggestions -- `api/src/modules/social/suggestions.service.ts` — ranked suggestions (household/mutual/shifts/campaigns) -- `api/src/modules/social/suggestions.routes.ts` — GET `/`, POST `/:userId/dismiss` -- `admin/src/components/social/FriendSuggestions.tsx` — horizontal scroll suggestions widget -- `admin/src/pages/volunteer/DiscoverPage.tsx` — search + suggestions page - -### Phase 8 — Poke System + Video Recommendations -- `api/src/modules/social/poke.service.ts` — poke CRUD + 24h Redis cooldown per pair -- `api/src/modules/social/poke.routes.ts` — POST `/`, GET `/`, GET `/count`, POST `/:id/read`, GET `/cooldown/:userId` -- `api/src/modules/social/recommendation.service.ts` — video recommendation CRUD + duplicate detection -- `api/src/modules/social/recommendation.routes.ts` — POST `/`, GET `/`, GET `/sent`, GET `/count`, POST `/:id/read` -- `admin/src/components/social/PokeButton.tsx` — poke button with cooldown indicator -- `admin/src/components/social/RecommendVideoModal.tsx` — friend + video picker modal -- `admin/src/pages/volunteer/SocialProfilePage.tsx` — added PokeButton - -### Phase 10 — Email Digest Notifications -- `api/prisma/migrations/20260224232546_add_digest_frequency/` — adds digestFrequency + lastDigestSentAt -- `api/src/services/social-digest.service.ts` — daily scan, generates digest emails -- `api/src/templates/email/social-digest.html` + `.txt` — digest email templates -- `api/src/server.ts` — added daily social digest scan interval -- `admin/src/pages/volunteer/NotificationsPage.tsx` — added digest frequency selector - -### Phase 11 — Social Integration with Existing Features -- `api/src/modules/social/integration.service.ts` — friends on shifts, campaigns, and active map sessions (privacy-filtered) -- `api/src/modules/social/integration.routes.ts` — 3 endpoints: shifts/:id/friends, campaigns/:id/friends, map/friends -- `admin/src/components/social/FriendsAttendingBadge.tsx` — "N friends attending" badge with stacked avatars -- `admin/src/components/social/FriendsCampaignBadge.tsx` — "N friends participated" badge with stacked avatars -- `admin/src/components/social/FriendsOnMap.tsx` — floating panel showing friends currently canvassing (60s poll) -- `admin/src/pages/public/ShiftsPage.tsx` — added FriendsAttendingBadge per shift card -- `admin/src/pages/public/CampaignPage.tsx` — added FriendsCampaignBadge in hero section -- `admin/src/pages/volunteer/VolunteerShiftsPage.tsx` — added FriendsAttendingBadge per shift card -- `admin/src/pages/volunteer/VolunteerMapPage.tsx` — added FriendsOnMap overlay -- `admin/src/types/social.ts` — added FriendOnShift, FriendOnCampaign, FriendOnMap types - -### Phase 12 — Rocket.Chat DM Integration -- `api/src/modules/social/messaging.service.ts` — openDM: provisions both users, creates DM room, returns roomId -- `api/src/modules/social/profile.routes.ts` — added POST `/:userId/dm` endpoint -- `api/src/services/rocketchat.client.ts` — added `createDM(usernames)` method -- `admin/src/components/social/MessageButton.tsx` — DM button (opens chat widget, RC-gated) -- `admin/src/pages/volunteer/SocialProfilePage.tsx` — added MessageButton for accepted friends - -### Phase 13 — Group/Team Features -- `api/prisma/schema.prisma` — added SocialGroup, SocialGroupMember models + SocialGroupType enum + User.socialGroupMemberships relation -- `api/prisma/migrations/20260225000017_add_social_groups/` — migration creating social_groups + social_group_members tables -- `api/src/modules/social/group.service.ts` — getOrCreate, syncShiftTeam, syncCampaignTeam, listMyGroups, getGroupDetail -- `api/src/modules/social/group.routes.ts` — GET `/` (my groups), GET `/:id` (group detail) -- `api/src/modules/social/social.routes.ts` — mounted groupRouter at `/groups` -- `api/src/modules/map/shifts/shifts.service.ts` — added fire-and-forget groupService.syncShiftTeam() on all signup/cancel events -- `api/src/modules/influence/campaign-emails/campaign-emails.service.ts` — added fire-and-forget groupService.syncCampaignTeam() on email creation -- `admin/src/types/social.ts` — added SocialGroupSummary, SocialGroupDetail interfaces -- `admin/src/components/social/GroupCard.tsx` — group card with type-based icon/color -- `admin/src/pages/volunteer/GroupDetailPage.tsx` — group detail with member list + FriendButton per member -- `admin/src/pages/volunteer/FriendsPage.tsx` — added "Groups" tab -- `admin/src/App.tsx` — added `/volunteer/groups/:id` route - -### Phase 14 — Gamification (Achievements, Streaks, Leaderboards) -- `api/src/modules/social/achievements.service.ts` — 11 achievements (4 shift, 4 canvass, 2 campaign, 2 social), checkAndUnlock, getLeaderboard (raw SQL), getVolunteerStats (on-the-fly computed) -- `api/src/modules/social/achievements.routes.ts` — 6 endpoints: achievements, definitions, stats, stats/:userId, user/:userId, leaderboard -- `api/src/modules/social/social.routes.ts` — mounted achievementsRouter at `/achievements` -- `api/src/modules/map/canvass/canvass.service.ts` — added achievements.checkAndUnlock after recordVisit -- `api/src/modules/map/shifts/shifts.service.ts` — added achievements.checkAndUnlock after signup events (admin, public, volunteer) -- `api/src/modules/influence/campaign-emails/campaign-emails.service.ts` — added achievements.checkAndUnlock after email creation -- `api/src/modules/social/friendship.service.ts` — added achievements.checkAndUnlock on friend accept (both users) -- `admin/src/types/social.ts` — added AchievementDef, AchievementWithProgress, VolunteerStats, LeaderboardEntry interfaces -- `admin/src/pages/volunteer/AchievementsPage.tsx` — badge gallery (locked/unlocked + progress bars), volunteer stats summary, leaderboard (canvass/shifts/campaigns tabs) -- `admin/src/pages/volunteer/SocialProfilePage.tsx` — added achievement badges section to own + other user profiles -- `admin/src/pages/volunteer/SocialFeedPage.tsx` — added top canvassers leaderboard widget -- `admin/src/App.tsx` — added `/volunteer/achievements` route - -### Phase 15 — Real-Time Features (SSE for Live Notifications, Online Status) -- `api/src/modules/social/sse.service.ts` — in-memory SSE connection manager (addClient, removeClient, sendToUser, sendToUsers, heartbeat, closeAll) -- `api/src/modules/social/presence.service.ts` — online/offline tracking with privacy filtering, broadcastPresence to friends, stale cleanup (5min timeout), markAllOffline (startup) -- `api/src/modules/social/sse.routes.ts` — GET `/` (SSE stream), GET `/online-friends`, GET `/status` -- `api/src/modules/social/social.routes.ts` — mounted sseRouter at `/sse`, added query-param token injection for EventSource auth -- `api/src/modules/social/notification.service.ts` — SSE push after notification creation (real-time delivery) -- `api/src/modules/social/friendship.service.ts` — SSE push on friend_request + friend_accepted events -- `api/src/modules/social/poke.service.ts` — SSE push on poke events -- `api/src/server.ts` — SSE heartbeat start, presenceService.markAllOffline on startup, 1-min stale cleanup interval, sseService.closeAll on graceful shutdown -- `admin/src/hooks/useSSE.ts` — EventSource hook with auto-reconnect (exponential backoff), handles notification/presence/friend_request/friend_accepted/poke events -- `admin/src/components/social/OnlineIndicator.tsx` — green dot showing online status for friends -- `admin/src/components/social/UserAvatar.tsx` — added showOnline prop with OnlineIndicator overlay -- `admin/src/stores/social.store.ts` — added onlineFriends state + fetchOnlineFriends action -- `admin/src/components/VolunteerLayout.tsx` — initialized useSSE() on mount -- `admin/src/components/social/NotificationBell.tsx` — reduced polling to 2-min fallback (SSE handles real-time) -- `admin/src/pages/volunteer/FriendsPage.tsx` — enabled showOnline on friend list avatars -- `admin/src/pages/volunteer/SocialProfilePage.tsx` — enabled showOnline on other user profile avatars diff --git a/admin/src/pages/SettingsPage.tsx b/admin/src/pages/SettingsPage.tsx index 0e40eb56..97991c77 100644 --- a/admin/src/pages/SettingsPage.tsx +++ b/admin/src/pages/SettingsPage.tsx @@ -713,6 +713,7 @@ function SystemUpgradeTab() { const [confirmOpen, setConfirmOpen] = useState(false); const [skipBackup, setSkipBackup] = useState(false); const [pullServices, setPullServices] = useState(false); + const [useRegistry, setUseRegistry] = useState(false); const [history, setHistory] = useState([]); const pollRef = useRef | null>(null); const checkStartRef = useRef(null); @@ -818,7 +819,7 @@ function SystemUpgradeTab() { setUpgrading(true); setResult(null); try { - await api.post('/upgrade/start', { skipBackup, pullServices }); + await api.post('/upgrade/start', { skipBackup, pullServices, useRegistry }); startUpgradePoll(); } catch { setUpgrading(false); @@ -1125,6 +1126,40 @@ function SystemUpgradeTab() { + {/* Container Registry */} + Container Registry} + style={{ marginBottom: 16 }} + > + +
+ handleAutoUpgradeToggle('useRegistryForUpgrade', v)} + /> +
+ Use Gitea registry for upgrades +
+ + Pull pre-built production images instead of compiling from source. Faster upgrades. + Requires scripts/build-and-push.sh to have been run first. + +
+
+ {settings?.useRegistryForUpgrade && ( +
+ + Registry URL + + + {settings?.giteaRegistryUrl || 'gitea.bnkops.com/admin'} + +
+ )} +
+
+ {/* Recent Commits Feed */} {status?.changelog && status.changelog.length > 0 && status.commitsBehind === 0 && ( Skip backup (not recommended) + setUseRegistry(e.target.checked)} + > + Use registry images (faster — needs build-and-push.sh run first) + diff --git a/admin/src/types/api.ts b/admin/src/types/api.ts index ac26c054..84db201e 100644 --- a/admin/src/types/api.ts +++ b/admin/src/types/api.ts @@ -1184,6 +1184,9 @@ export interface SiteSettings { autoUpgradeSchedule?: 'daily-3am' | 'daily-4am' | 'daily-5am' | 'weekly-sun-3am' | 'weekly-mon-3am' | '12h' | '24h'; autoUpgradePullServices?: boolean; notifyAdminAutoUpgrade?: boolean; + // Registry settings + useRegistryForUpgrade?: boolean; + giteaRegistryUrl?: string; // Navigation configuration navConfig: NavConfig | null; // User Provisioning diff --git a/api/Dockerfile b/api/Dockerfile index ef47d960..b804c040 100644 --- a/api/Dockerfile +++ b/api/Dockerfile @@ -25,10 +25,13 @@ RUN npm run build # Production stage FROM node:22-alpine AS production WORKDIR /app +# Copy compiled output and manifests COPY --from=build /app/dist ./dist -COPY --from=build /app/node_modules ./node_modules COPY --from=build /app/package.json ./ +COPY --from=build /app/package-lock.json* ./ COPY --from=build /app/prisma ./prisma +# Install production-only deps and regenerate Prisma client +RUN npm ci --omit=dev && npx prisma generate COPY --from=build /app/docker-entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/docker-entrypoint.sh \ && mkdir -p /app/uploads && chown -R node:node /app/uploads diff --git a/api/Dockerfile.media b/api/Dockerfile.media index 5e230d3c..757e4470 100644 --- a/api/Dockerfile.media +++ b/api/Dockerfile.media @@ -40,11 +40,15 @@ WORKDIR /app # Install ffmpeg for video metadata, vips-dev for sharp HEIC support, yt-dlp for video fetching RUN apk add --no-cache ffmpeg vips-dev python3 py3-pip && pip3 install --break-system-packages yt-dlp -# Copy built files and node_modules +# Copy manifests and install production-only deps (no devDeps like typescript) +COPY --from=build /app/package*.json ./ +RUN npm ci --omit=dev --ignore-scripts && \ + npm install --no-save @img/sharp-linuxmusl-x64 + +# Copy built output and schema COPY --from=build /app/dist ./dist -COPY --from=build /app/node_modules ./node_modules -COPY --from=build /app/package.json ./ COPY --from=build /app/prisma ./prisma +RUN npx prisma generate # Run as non-root user USER node diff --git a/api/dist/config/env.d.ts b/api/dist/config/env.d.ts index 21d152f8..039f9416 100644 --- a/api/dist/config/env.d.ts +++ b/api/dist/config/env.d.ts @@ -5,15 +5,19 @@ declare const envSchema: z.ZodObject<{ API_URL: z.ZodDefault; ADMIN_URL: z.ZodDefault; DOMAIN: z.ZodDefault; + INSTANCE_LABEL: z.ZodDefault; + BUNKER_OPS_ENABLED: z.ZodDefault; + BUNKER_OPS_REMOTE_WRITE_URL: z.ZodDefault; DATABASE_URL: z.ZodString; REDIS_URL: z.ZodDefault; JWT_ACCESS_SECRET: z.ZodString; JWT_REFRESH_SECRET: z.ZodString; + JWT_INVITE_SECRET: z.ZodString; JWT_ACCESS_EXPIRY: z.ZodDefault; JWT_REFRESH_EXPIRY: z.ZodDefault; ENCRYPTION_KEY: z.ZodOptional; INITIAL_ADMIN_EMAIL: z.ZodDefault; - INITIAL_ADMIN_PASSWORD: z.ZodDefault; + INITIAL_ADMIN_PASSWORD: z.ZodEffects, string, string | undefined>; SMTP_HOST: z.ZodDefault; SMTP_PORT: z.ZodDefault; SMTP_USER: z.ZodDefault; @@ -26,6 +30,7 @@ declare const envSchema: z.ZodObject<{ LISTMONK_ADMIN_USER: z.ZodDefault; LISTMONK_ADMIN_PASSWORD: z.ZodDefault; LISTMONK_SYNC_ENABLED: z.ZodDefault; + LISTMONK_WEBHOOK_SECRET: z.ZodDefault; LISTMONK_PROXY_PORT: z.ZodDefault; REPRESENT_API_URL: z.ZodDefault; CORS_ORIGINS: z.ZodDefault; @@ -58,6 +63,27 @@ declare const envSchema: z.ZodObject<{ EXCALIDRAW_URL: z.ZodDefault; EXCALIDRAW_PORT: z.ZodDefault; EXCALIDRAW_EMBED_PORT: z.ZodDefault; + HOMEPAGE_URL: z.ZodDefault; + HOMEPAGE_EMBED_PORT: z.ZodDefault; + VAULTWARDEN_URL: z.ZodDefault; + VAULTWARDEN_ADMIN_TOKEN: z.ZodDefault; + VAULTWARDEN_EMBED_PORT: z.ZodDefault; + ROCKETCHAT_URL: z.ZodDefault; + ROCKETCHAT_ADMIN_USER: z.ZodDefault; + ROCKETCHAT_ADMIN_PASSWORD: z.ZodDefault; + ROCKETCHAT_EMBED_PORT: z.ZodDefault; + ENABLE_CHAT: z.ZodDefault; + GANCIO_URL: z.ZodDefault; + GANCIO_PORT: z.ZodDefault; + GANCIO_EMBED_PORT: z.ZodDefault; + GANCIO_ADMIN_USER: z.ZodDefault; + GANCIO_ADMIN_PASSWORD: z.ZodDefault; + GANCIO_SYNC_ENABLED: z.ZodDefault; + ENABLE_MEET: z.ZodDefault; + JITSI_APP_ID: z.ZodDefault; + JITSI_APP_SECRET: z.ZodDefault; + JITSI_URL: z.ZodDefault; + JITSI_EMBED_PORT: z.ZodDefault; PANGOLIN_API_URL: z.ZodEffects, string, string | undefined>; PANGOLIN_API_KEY: z.ZodDefault; PANGOLIN_ORG_ID: z.ZodDefault; @@ -66,13 +92,32 @@ declare const envSchema: z.ZodObject<{ PANGOLIN_NEWT_ID: z.ZodDefault; PANGOLIN_NEWT_SECRET: z.ZodDefault; NAR_DATA_DIR: z.ZodDefault; + OVERPASS_API_URL: z.ZodDefault; + OVERPASS_MIN_DELAY_MS: z.ZodDefault; + AREA_IMPORT_MAX_GRID_POINTS: z.ZodDefault; + ENABLE_PAYMENTS: z.ZodDefault; ENABLE_MEDIA_FEATURES: z.ZodDefault; MEDIA_API_PORT: z.ZodDefault; MEDIA_API_PUBLIC_URL: z.ZodDefault; MEDIA_ROOT: z.ZodDefault; MEDIA_UPLOADS: z.ZodDefault; MAX_UPLOAD_SIZE_GB: z.ZodDefault; - PUBLIC_MEDIA_PORT: z.ZodDefault; + GITEA_REGISTRY: z.ZodDefault; + GITEA_REGISTRY_USER: z.ZodDefault; + GITEA_REGISTRY_PASS: z.ZodDefault; + GITEA_COMMENTS_ENABLED: z.ZodDefault; + GITEA_API_TOKEN: z.ZodDefault; + GITEA_COMMENTS_REPO_OWNER: z.ZodDefault; + GITEA_COMMENTS_REPO_NAME: z.ZodDefault; + GITEA_OAUTH_CLIENT_ID: z.ZodDefault; + GITEA_OAUTH_CLIENT_SECRET: z.ZodDefault; + ENABLE_SMS: z.ZodDefault; + TERMUX_API_URL: z.ZodDefault; + TERMUX_API_KEY: z.ZodDefault; + SMS_DELAY_BETWEEN_MS: z.ZodDefault; + SMS_MAX_RETRIES: z.ZodDefault; + SMS_RESPONSE_SYNC_INTERVAL_MS: z.ZodDefault; + SMS_DEVICE_MONITOR_INTERVAL_MS: z.ZodDefault; CODE_SERVER_URL: z.ZodDefault; CODE_SERVER_PORT: z.ZodDefault; MKDOCS_PREVIEW_URL: z.ZodDefault; @@ -86,8 +131,10 @@ declare const envSchema: z.ZodObject<{ PROMETHEUS_PORT: z.ZodDefault; GRAFANA_URL: z.ZodDefault; GRAFANA_PORT: z.ZodDefault; + GRAFANA_EMBED_PORT: z.ZodDefault; ALERTMANAGER_URL: z.ZodDefault; ALERTMANAGER_PORT: z.ZodDefault; + ALERTMANAGER_EMBED_PORT: z.ZodDefault; CADVISOR_URL: z.ZodDefault; CADVISOR_PORT: z.ZodDefault; NODE_EXPORTER_URL: z.ZodDefault; @@ -102,10 +149,14 @@ declare const envSchema: z.ZodObject<{ API_URL: string; ADMIN_URL: string; DOMAIN: string; + INSTANCE_LABEL: string; + BUNKER_OPS_ENABLED: string; + BUNKER_OPS_REMOTE_WRITE_URL: string; DATABASE_URL: string; REDIS_URL: string; JWT_ACCESS_SECRET: string; JWT_REFRESH_SECRET: string; + JWT_INVITE_SECRET: string; JWT_ACCESS_EXPIRY: string; JWT_REFRESH_EXPIRY: string; INITIAL_ADMIN_EMAIL: string; @@ -122,6 +173,7 @@ declare const envSchema: z.ZodObject<{ LISTMONK_ADMIN_USER: string; LISTMONK_ADMIN_PASSWORD: string; LISTMONK_SYNC_ENABLED: string; + LISTMONK_WEBHOOK_SECRET: string; LISTMONK_PROXY_PORT: number; REPRESENT_API_URL: string; CORS_ORIGINS: string; @@ -152,6 +204,27 @@ declare const envSchema: z.ZodObject<{ EXCALIDRAW_URL: string; EXCALIDRAW_PORT: number; EXCALIDRAW_EMBED_PORT: number; + HOMEPAGE_URL: string; + HOMEPAGE_EMBED_PORT: number; + VAULTWARDEN_URL: string; + VAULTWARDEN_ADMIN_TOKEN: string; + VAULTWARDEN_EMBED_PORT: number; + ROCKETCHAT_URL: string; + ROCKETCHAT_ADMIN_USER: string; + ROCKETCHAT_ADMIN_PASSWORD: string; + ROCKETCHAT_EMBED_PORT: number; + ENABLE_CHAT: string; + GANCIO_URL: string; + GANCIO_PORT: number; + GANCIO_EMBED_PORT: number; + GANCIO_ADMIN_USER: string; + GANCIO_ADMIN_PASSWORD: string; + GANCIO_SYNC_ENABLED: string; + ENABLE_MEET: string; + JITSI_APP_ID: string; + JITSI_APP_SECRET: string; + JITSI_URL: string; + JITSI_EMBED_PORT: number; PANGOLIN_API_URL: string; PANGOLIN_API_KEY: string; PANGOLIN_ORG_ID: string; @@ -160,13 +233,32 @@ declare const envSchema: z.ZodObject<{ PANGOLIN_NEWT_ID: string; PANGOLIN_NEWT_SECRET: string; NAR_DATA_DIR: string; + OVERPASS_API_URL: string; + OVERPASS_MIN_DELAY_MS: number; + AREA_IMPORT_MAX_GRID_POINTS: number; + ENABLE_PAYMENTS: string; ENABLE_MEDIA_FEATURES: string; MEDIA_API_PORT: number; MEDIA_API_PUBLIC_URL: string; MEDIA_ROOT: string; MEDIA_UPLOADS: string; MAX_UPLOAD_SIZE_GB: number; - PUBLIC_MEDIA_PORT: number; + GITEA_REGISTRY: string; + GITEA_REGISTRY_USER: string; + GITEA_REGISTRY_PASS: string; + GITEA_COMMENTS_ENABLED: string; + GITEA_API_TOKEN: string; + GITEA_COMMENTS_REPO_OWNER: string; + GITEA_COMMENTS_REPO_NAME: string; + GITEA_OAUTH_CLIENT_ID: string; + GITEA_OAUTH_CLIENT_SECRET: string; + ENABLE_SMS: string; + TERMUX_API_URL: string; + TERMUX_API_KEY: string; + SMS_DELAY_BETWEEN_MS: number; + SMS_MAX_RETRIES: number; + SMS_RESPONSE_SYNC_INTERVAL_MS: number; + SMS_DEVICE_MONITOR_INTERVAL_MS: number; CODE_SERVER_URL: string; CODE_SERVER_PORT: number; MKDOCS_PREVIEW_URL: string; @@ -180,8 +272,10 @@ declare const envSchema: z.ZodObject<{ PROMETHEUS_PORT: number; GRAFANA_URL: string; GRAFANA_PORT: number; + GRAFANA_EMBED_PORT: number; ALERTMANAGER_URL: string; ALERTMANAGER_PORT: number; + ALERTMANAGER_EMBED_PORT: number; CADVISOR_URL: string; CADVISOR_PORT: number; NODE_EXPORTER_URL: string; @@ -197,11 +291,15 @@ declare const envSchema: z.ZodObject<{ DATABASE_URL: string; JWT_ACCESS_SECRET: string; JWT_REFRESH_SECRET: string; + JWT_INVITE_SECRET: string; NODE_ENV?: "development" | "production" | "test" | undefined; PORT?: number | undefined; API_URL?: string | undefined; ADMIN_URL?: string | undefined; DOMAIN?: string | undefined; + INSTANCE_LABEL?: string | undefined; + BUNKER_OPS_ENABLED?: string | undefined; + BUNKER_OPS_REMOTE_WRITE_URL?: string | undefined; REDIS_URL?: string | undefined; JWT_ACCESS_EXPIRY?: string | undefined; JWT_REFRESH_EXPIRY?: string | undefined; @@ -220,6 +318,7 @@ declare const envSchema: z.ZodObject<{ LISTMONK_ADMIN_USER?: string | undefined; LISTMONK_ADMIN_PASSWORD?: string | undefined; LISTMONK_SYNC_ENABLED?: string | undefined; + LISTMONK_WEBHOOK_SECRET?: string | undefined; LISTMONK_PROXY_PORT?: number | undefined; REPRESENT_API_URL?: string | undefined; CORS_ORIGINS?: string | undefined; @@ -252,6 +351,27 @@ declare const envSchema: z.ZodObject<{ EXCALIDRAW_URL?: string | undefined; EXCALIDRAW_PORT?: number | undefined; EXCALIDRAW_EMBED_PORT?: number | undefined; + HOMEPAGE_URL?: string | undefined; + HOMEPAGE_EMBED_PORT?: number | undefined; + VAULTWARDEN_URL?: string | undefined; + VAULTWARDEN_ADMIN_TOKEN?: string | undefined; + VAULTWARDEN_EMBED_PORT?: number | undefined; + ROCKETCHAT_URL?: string | undefined; + ROCKETCHAT_ADMIN_USER?: string | undefined; + ROCKETCHAT_ADMIN_PASSWORD?: string | undefined; + ROCKETCHAT_EMBED_PORT?: number | undefined; + ENABLE_CHAT?: string | undefined; + GANCIO_URL?: string | undefined; + GANCIO_PORT?: number | undefined; + GANCIO_EMBED_PORT?: number | undefined; + GANCIO_ADMIN_USER?: string | undefined; + GANCIO_ADMIN_PASSWORD?: string | undefined; + GANCIO_SYNC_ENABLED?: string | undefined; + ENABLE_MEET?: string | undefined; + JITSI_APP_ID?: string | undefined; + JITSI_APP_SECRET?: string | undefined; + JITSI_URL?: string | undefined; + JITSI_EMBED_PORT?: number | undefined; PANGOLIN_API_URL?: string | undefined; PANGOLIN_API_KEY?: string | undefined; PANGOLIN_ORG_ID?: string | undefined; @@ -260,13 +380,32 @@ declare const envSchema: z.ZodObject<{ PANGOLIN_NEWT_ID?: string | undefined; PANGOLIN_NEWT_SECRET?: string | undefined; NAR_DATA_DIR?: string | undefined; + OVERPASS_API_URL?: string | undefined; + OVERPASS_MIN_DELAY_MS?: number | undefined; + AREA_IMPORT_MAX_GRID_POINTS?: number | undefined; + ENABLE_PAYMENTS?: string | undefined; ENABLE_MEDIA_FEATURES?: string | undefined; MEDIA_API_PORT?: number | undefined; MEDIA_API_PUBLIC_URL?: string | undefined; MEDIA_ROOT?: string | undefined; MEDIA_UPLOADS?: string | undefined; MAX_UPLOAD_SIZE_GB?: number | undefined; - PUBLIC_MEDIA_PORT?: number | undefined; + GITEA_REGISTRY?: string | undefined; + GITEA_REGISTRY_USER?: string | undefined; + GITEA_REGISTRY_PASS?: string | undefined; + GITEA_COMMENTS_ENABLED?: string | undefined; + GITEA_API_TOKEN?: string | undefined; + GITEA_COMMENTS_REPO_OWNER?: string | undefined; + GITEA_COMMENTS_REPO_NAME?: string | undefined; + GITEA_OAUTH_CLIENT_ID?: string | undefined; + GITEA_OAUTH_CLIENT_SECRET?: string | undefined; + ENABLE_SMS?: string | undefined; + TERMUX_API_URL?: string | undefined; + TERMUX_API_KEY?: string | undefined; + SMS_DELAY_BETWEEN_MS?: number | undefined; + SMS_MAX_RETRIES?: number | undefined; + SMS_RESPONSE_SYNC_INTERVAL_MS?: number | undefined; + SMS_DEVICE_MONITOR_INTERVAL_MS?: number | undefined; CODE_SERVER_URL?: string | undefined; CODE_SERVER_PORT?: number | undefined; MKDOCS_PREVIEW_URL?: string | undefined; @@ -280,8 +419,10 @@ declare const envSchema: z.ZodObject<{ PROMETHEUS_PORT?: number | undefined; GRAFANA_URL?: string | undefined; GRAFANA_PORT?: number | undefined; + GRAFANA_EMBED_PORT?: number | undefined; ALERTMANAGER_URL?: string | undefined; ALERTMANAGER_PORT?: number | undefined; + ALERTMANAGER_EMBED_PORT?: number | undefined; CADVISOR_URL?: string | undefined; CADVISOR_PORT?: number | undefined; NODE_EXPORTER_URL?: string | undefined; @@ -298,10 +439,14 @@ export declare const env: { API_URL: string; ADMIN_URL: string; DOMAIN: string; + INSTANCE_LABEL: string; + BUNKER_OPS_ENABLED: string; + BUNKER_OPS_REMOTE_WRITE_URL: string; DATABASE_URL: string; REDIS_URL: string; JWT_ACCESS_SECRET: string; JWT_REFRESH_SECRET: string; + JWT_INVITE_SECRET: string; JWT_ACCESS_EXPIRY: string; JWT_REFRESH_EXPIRY: string; INITIAL_ADMIN_EMAIL: string; @@ -318,6 +463,7 @@ export declare const env: { LISTMONK_ADMIN_USER: string; LISTMONK_ADMIN_PASSWORD: string; LISTMONK_SYNC_ENABLED: string; + LISTMONK_WEBHOOK_SECRET: string; LISTMONK_PROXY_PORT: number; REPRESENT_API_URL: string; CORS_ORIGINS: string; @@ -348,6 +494,27 @@ export declare const env: { EXCALIDRAW_URL: string; EXCALIDRAW_PORT: number; EXCALIDRAW_EMBED_PORT: number; + HOMEPAGE_URL: string; + HOMEPAGE_EMBED_PORT: number; + VAULTWARDEN_URL: string; + VAULTWARDEN_ADMIN_TOKEN: string; + VAULTWARDEN_EMBED_PORT: number; + ROCKETCHAT_URL: string; + ROCKETCHAT_ADMIN_USER: string; + ROCKETCHAT_ADMIN_PASSWORD: string; + ROCKETCHAT_EMBED_PORT: number; + ENABLE_CHAT: string; + GANCIO_URL: string; + GANCIO_PORT: number; + GANCIO_EMBED_PORT: number; + GANCIO_ADMIN_USER: string; + GANCIO_ADMIN_PASSWORD: string; + GANCIO_SYNC_ENABLED: string; + ENABLE_MEET: string; + JITSI_APP_ID: string; + JITSI_APP_SECRET: string; + JITSI_URL: string; + JITSI_EMBED_PORT: number; PANGOLIN_API_URL: string; PANGOLIN_API_KEY: string; PANGOLIN_ORG_ID: string; @@ -356,13 +523,32 @@ export declare const env: { PANGOLIN_NEWT_ID: string; PANGOLIN_NEWT_SECRET: string; NAR_DATA_DIR: string; + OVERPASS_API_URL: string; + OVERPASS_MIN_DELAY_MS: number; + AREA_IMPORT_MAX_GRID_POINTS: number; + ENABLE_PAYMENTS: string; ENABLE_MEDIA_FEATURES: string; MEDIA_API_PORT: number; MEDIA_API_PUBLIC_URL: string; MEDIA_ROOT: string; MEDIA_UPLOADS: string; MAX_UPLOAD_SIZE_GB: number; - PUBLIC_MEDIA_PORT: number; + GITEA_REGISTRY: string; + GITEA_REGISTRY_USER: string; + GITEA_REGISTRY_PASS: string; + GITEA_COMMENTS_ENABLED: string; + GITEA_API_TOKEN: string; + GITEA_COMMENTS_REPO_OWNER: string; + GITEA_COMMENTS_REPO_NAME: string; + GITEA_OAUTH_CLIENT_ID: string; + GITEA_OAUTH_CLIENT_SECRET: string; + ENABLE_SMS: string; + TERMUX_API_URL: string; + TERMUX_API_KEY: string; + SMS_DELAY_BETWEEN_MS: number; + SMS_MAX_RETRIES: number; + SMS_RESPONSE_SYNC_INTERVAL_MS: number; + SMS_DEVICE_MONITOR_INTERVAL_MS: number; CODE_SERVER_URL: string; CODE_SERVER_PORT: number; MKDOCS_PREVIEW_URL: string; @@ -376,8 +562,10 @@ export declare const env: { PROMETHEUS_PORT: number; GRAFANA_URL: string; GRAFANA_PORT: number; + GRAFANA_EMBED_PORT: number; ALERTMANAGER_URL: string; ALERTMANAGER_PORT: number; + ALERTMANAGER_EMBED_PORT: number; CADVISOR_URL: string; CADVISOR_PORT: number; NODE_EXPORTER_URL: string; diff --git a/api/dist/config/env.d.ts.map b/api/dist/config/env.d.ts.map index 4ff9c2ac..fdea75da 100644 --- a/api/dist/config/env.d.ts.map +++ b/api/dist/config/env.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkJb,CAAC;AAEH,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAY5C,eAAO,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAgB,CAAC"} \ No newline at end of file +{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2Nb,CAAC;AAEH,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAY5C,eAAO,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAgB,CAAC"} \ No newline at end of file diff --git a/api/dist/config/env.js b/api/dist/config/env.js index 9be24888..e115537d 100644 --- a/api/dist/config/env.js +++ b/api/dist/config/env.js @@ -14,6 +14,10 @@ const envSchema = zod_1.z.object({ API_URL: zod_1.z.string().default('http://localhost:4000'), ADMIN_URL: zod_1.z.string().default('http://localhost:3000'), DOMAIN: zod_1.z.string().default('cmlite.org'), + // Bunker Ops (Fleet Management) + INSTANCE_LABEL: zod_1.z.string().default(''), + BUNKER_OPS_ENABLED: zod_1.z.string().default('false'), + BUNKER_OPS_REMOTE_WRITE_URL: zod_1.z.string().default(''), // Database DATABASE_URL: zod_1.z.string(), // Redis @@ -21,13 +25,15 @@ const envSchema = zod_1.z.object({ // JWT JWT_ACCESS_SECRET: zod_1.z.string().min(32), JWT_REFRESH_SECRET: zod_1.z.string().min(32), + JWT_INVITE_SECRET: zod_1.z.string().min(32), JWT_ACCESS_EXPIRY: zod_1.z.string().default('15m'), JWT_REFRESH_EXPIRY: zod_1.z.string().default('7d'), // Encryption (for DB-stored secrets like SMTP password; falls back to JWT_ACCESS_SECRET) - ENCRYPTION_KEY: zod_1.z.string().optional(), + ENCRYPTION_KEY: zod_1.z.string().min(32, 'ENCRYPTION_KEY must be at least 32 characters').optional(), // Initial Super Admin (auto-created during database seeding) INITIAL_ADMIN_EMAIL: zod_1.z.string().email().default('admin@cmlite.org'), - INITIAL_ADMIN_PASSWORD: zod_1.z.string().min(12).default('REQUIRED_STRONG_PASSWORD_CHANGE_THIS'), + INITIAL_ADMIN_PASSWORD: zod_1.z.string().min(12).default('REQUIRED_STRONG_PASSWORD_CHANGE_THIS') + .refine((val) => val !== 'REQUIRED_STRONG_PASSWORD_CHANGE_THIS', { message: 'INITIAL_ADMIN_PASSWORD must be changed from the default placeholder value' }), // SMTP SMTP_HOST: zod_1.z.string().default('mailhog-changemaker'), SMTP_PORT: zod_1.z.coerce.number().default(1025), @@ -42,6 +48,7 @@ const envSchema = zod_1.z.object({ LISTMONK_ADMIN_USER: zod_1.z.string().default('admin'), LISTMONK_ADMIN_PASSWORD: zod_1.z.string().default(''), LISTMONK_SYNC_ENABLED: zod_1.z.string().default('false'), + LISTMONK_WEBHOOK_SECRET: zod_1.z.string().default(''), LISTMONK_PROXY_PORT: zod_1.z.coerce.number().default(9002), // Represent API (Canadian electoral data) REPRESENT_API_URL: zod_1.z.string().default('https://represent.opennorth.ca'), @@ -84,6 +91,32 @@ const envSchema = zod_1.z.object({ EXCALIDRAW_URL: zod_1.z.string().default('http://excalidraw-changemaker:80'), EXCALIDRAW_PORT: zod_1.z.coerce.number().default(8090), EXCALIDRAW_EMBED_PORT: zod_1.z.coerce.number().default(8886), + // Homepage (service dashboard) + HOMEPAGE_URL: zod_1.z.string().default('http://homepage-changemaker:3000'), + HOMEPAGE_EMBED_PORT: zod_1.z.coerce.number().default(8887), + // Vaultwarden (password manager) + VAULTWARDEN_URL: zod_1.z.string().default('http://vaultwarden-changemaker:80'), + VAULTWARDEN_ADMIN_TOKEN: zod_1.z.string().default(''), + VAULTWARDEN_EMBED_PORT: zod_1.z.coerce.number().default(8890), + // Rocket.Chat (team chat) + ROCKETCHAT_URL: zod_1.z.string().default('http://rocketchat-changemaker:3000'), + ROCKETCHAT_ADMIN_USER: zod_1.z.string().default(''), + ROCKETCHAT_ADMIN_PASSWORD: zod_1.z.string().default(''), + ROCKETCHAT_EMBED_PORT: zod_1.z.coerce.number().default(8891), + ENABLE_CHAT: zod_1.z.string().default('false'), + // Gancio (event management) + GANCIO_URL: zod_1.z.string().default('http://gancio-changemaker:13120'), + GANCIO_PORT: zod_1.z.coerce.number().default(8092), + GANCIO_EMBED_PORT: zod_1.z.coerce.number().default(8892), + GANCIO_ADMIN_USER: zod_1.z.string().default('admin'), + GANCIO_ADMIN_PASSWORD: zod_1.z.string().default(''), + GANCIO_SYNC_ENABLED: zod_1.z.string().default('false'), + // Jitsi Meet (video conferencing) + ENABLE_MEET: zod_1.z.string().default('false'), + JITSI_APP_ID: zod_1.z.string().default('changemaker'), + JITSI_APP_SECRET: zod_1.z.string().default(''), + JITSI_URL: zod_1.z.string().default('http://jitsi-web-changemaker:80'), + JITSI_EMBED_PORT: zod_1.z.coerce.number().default(8893), // Pangolin (tunnel / reverse proxy) PANGOLIN_API_URL: zod_1.z.string() .default('') @@ -96,6 +129,12 @@ const envSchema = zod_1.z.object({ PANGOLIN_NEWT_SECRET: zod_1.z.string().default(''), // NAR (National Address Register) NAR_DATA_DIR: zod_1.z.string().default('/data'), + // Overpass / Area Import + OVERPASS_API_URL: zod_1.z.string().default('https://overpass-api.de/api/interpreter'), + OVERPASS_MIN_DELAY_MS: zod_1.z.coerce.number().default(30000), + AREA_IMPORT_MAX_GRID_POINTS: zod_1.z.coerce.number().default(500), + // Payments (Stripe) + ENABLE_PAYMENTS: zod_1.z.string().default('false'), // Media Management ENABLE_MEDIA_FEATURES: zod_1.z.string().default('false'), MEDIA_API_PORT: zod_1.z.coerce.number().default(4100), @@ -103,7 +142,25 @@ const envSchema = zod_1.z.object({ MEDIA_ROOT: zod_1.z.string().default('/media/library'), MEDIA_UPLOADS: zod_1.z.string().default('/media/uploads'), MAX_UPLOAD_SIZE_GB: zod_1.z.coerce.number().default(10), - PUBLIC_MEDIA_PORT: zod_1.z.coerce.number().default(3100), + // Container Registry + GITEA_REGISTRY: zod_1.z.string().default('gitea.bnkops.com/admin'), + GITEA_REGISTRY_USER: zod_1.z.string().default(''), + GITEA_REGISTRY_PASS: zod_1.z.string().default(''), + // Gitea Docs Comments + GITEA_COMMENTS_ENABLED: zod_1.z.string().default('false'), + GITEA_API_TOKEN: zod_1.z.string().default(''), + GITEA_COMMENTS_REPO_OWNER: zod_1.z.string().default(''), + GITEA_COMMENTS_REPO_NAME: zod_1.z.string().default('docs-comments'), + GITEA_OAUTH_CLIENT_ID: zod_1.z.string().default(''), + GITEA_OAUTH_CLIENT_SECRET: zod_1.z.string().default(''), + // SMS Campaigns (Termux Android bridge) + ENABLE_SMS: zod_1.z.string().default('false'), + TERMUX_API_URL: zod_1.z.string().default('http://10.0.0.193:5001'), + TERMUX_API_KEY: zod_1.z.string().default(''), + SMS_DELAY_BETWEEN_MS: zod_1.z.coerce.number().default(3000), + SMS_MAX_RETRIES: zod_1.z.coerce.number().default(3), + SMS_RESPONSE_SYNC_INTERVAL_MS: zod_1.z.coerce.number().default(30000), + SMS_DEVICE_MONITOR_INTERVAL_MS: zod_1.z.coerce.number().default(30000), // Docs / Code Server CODE_SERVER_URL: zod_1.z.string().default('http://code-server-changemaker:8080'), CODE_SERVER_PORT: zod_1.z.coerce.number().default(8888), @@ -119,8 +176,10 @@ const envSchema = zod_1.z.object({ PROMETHEUS_PORT: zod_1.z.coerce.number().default(9090), GRAFANA_URL: zod_1.z.string().default('http://grafana-changemaker:3000'), GRAFANA_PORT: zod_1.z.coerce.number().default(3005), + GRAFANA_EMBED_PORT: zod_1.z.coerce.number().default(8894), ALERTMANAGER_URL: zod_1.z.string().default('http://alertmanager-changemaker:9093'), ALERTMANAGER_PORT: zod_1.z.coerce.number().default(9093), + ALERTMANAGER_EMBED_PORT: zod_1.z.coerce.number().default(8895), CADVISOR_URL: zod_1.z.string().default('http://cadvisor-changemaker:8080'), CADVISOR_PORT: zod_1.z.coerce.number().default(8086), NODE_EXPORTER_URL: zod_1.z.string().default('http://node-exporter-changemaker:9100'), diff --git a/api/dist/config/env.js.map b/api/dist/config/env.js.map index 755f9bb5..ef25c12d 100644 --- a/api/dist/config/env.js.map +++ b/api/dist/config/env.js.map @@ -1 +1 @@ -{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/api/dist/media-server.js b/api/dist/media-server.js index 1ecc283c..d7015910 100644 --- a/api/dist/media-server.js +++ b/api/dist/media-server.js @@ -11,13 +11,30 @@ const logger_1 = require("./utils/logger"); const videos_routes_1 = require("./modules/media/routes/videos.routes"); const video_streaming_routes_1 = require("./modules/media/routes/video-streaming.routes"); const reactions_routes_1 = require("./modules/media/routes/reactions.routes"); -const public_media_routes_1 = require("./modules/media/routes/public-media.routes"); +const public_routes_1 = require("./modules/media/routes/public.routes"); +const chat_stream_routes_1 = require("./modules/media/routes/chat-stream.routes"); const comments_routes_1 = require("./modules/media/routes/comments.routes"); const upload_routes_1 = require("./modules/media/routes/upload.routes"); const video_actions_routes_1 = require("./modules/media/routes/video-actions.routes"); const video_schedule_routes_1 = require("./modules/media/routes/video-schedule.routes"); const video_tracking_routes_1 = require("./modules/media/routes/video-tracking.routes"); +const comment_admin_routes_1 = require("./modules/media/routes/comment-admin.routes"); +const chat_notifications_routes_1 = require("./modules/media/routes/chat-notifications.routes"); +const chat_threads_routes_1 = require("./modules/media/routes/chat-threads.routes"); +const user_profile_routes_1 = require("./modules/media/routes/user-profile.routes"); +const shorts_routes_1 = require("./modules/media/routes/shorts.routes"); +const upvote_routes_1 = require("./modules/media/routes/upvote.routes"); const video_schedule_queue_service_1 = require("./services/video-schedule-queue.service"); +const video_fetch_queue_service_1 = require("./services/video-fetch-queue.service"); +const fetch_routes_1 = require("./modules/media/routes/fetch.routes"); +const playlists_public_routes_1 = require("./modules/media/routes/playlists-public.routes"); +const playlists_user_routes_1 = require("./modules/media/routes/playlists-user.routes"); +const playlists_admin_routes_1 = require("./modules/media/routes/playlists-admin.routes"); +const photos_routes_1 = require("./modules/media/routes/photos.routes"); +const photo_upload_routes_1 = require("./modules/media/routes/photo-upload.routes"); +const photo_albums_routes_1 = require("./modules/media/routes/photo-albums.routes"); +const photos_public_routes_1 = require("./modules/media/routes/photos-public.routes"); +const photo_engagement_routes_1 = require("./modules/media/routes/photo-engagement.routes"); // Add BigInt serialization support for Prisma BigInt fields // This converts BigInt values to strings when JSON.stringify() is called BigInt.prototype.toJSON = function () { @@ -34,6 +51,7 @@ const fastify = (0, fastify_1.default)({ process.on('SIGTERM', async () => { logger_1.logger.info('SIGTERM received, shutting down gracefully...'); await video_schedule_queue_service_1.videoScheduleQueueService.close(); + await video_fetch_queue_service_1.videoFetchQueueService.close(); fastify.close(() => { logger_1.logger.info('Media API server closed'); process.exit(0); @@ -52,8 +70,23 @@ process.on('uncaughtException', (error) => { // Start server const start = async () => { try { - // CORS configuration + // CORS configuration — allow admin app + MkDocs docs site const allowedOrigins = env_1.env.CORS_ORIGINS.split(',').map(o => o.trim()); + // Auto-add MkDocs origins so video cards/players work in docs + const mkdocsOrigin = `http://localhost:${env_1.env.MKDOCS_PORT || 4003}`; + if (!allowedOrigins.includes(mkdocsOrigin)) { + allowedOrigins.push(mkdocsOrigin); + } + // Also allow the docs subdomain in production (docs.domain.org) + for (const origin of [...allowedOrigins]) { + const match = origin.match(/^(https?:\/\/)app\./); + if (match) { + const docsOrigin = origin.replace(/^(https?:\/\/)app\./, '$1docs.'); + if (!allowedOrigins.includes(docsOrigin)) { + allowedOrigins.push(docsOrigin); + } + } + } await fastify.register(cors_1.default, { origin: (origin, cb) => { // Allow requests with no origin (mobile apps, curl, etc.) @@ -93,10 +126,29 @@ const start = async () => { await fastify.register(video_schedule_routes_1.videoScheduleRoutes, { prefix: '/api/videos' }); await fastify.register(video_tracking_routes_1.videoTrackingRoutes, { prefix: '/api/track' }); await fastify.register(reactions_routes_1.reactionsRoutes, { prefix: '/api/reactions' }); - await fastify.register(public_media_routes_1.publicMediaRoutes, { prefix: '/api/media' }); - await fastify.register(comments_routes_1.commentsRoutes, { prefix: '/api/media' }); - // TODO: Add more routes - // await fastify.register(jobsRoutes, { prefix: '/api/jobs' }); + await fastify.register(public_routes_1.publicRoutes, { prefix: '/api' }); + await fastify.register(comments_routes_1.commentsRoutes, { prefix: '/api' }); + await fastify.register(chat_stream_routes_1.chatStreamRoutes, { prefix: '/api' }); + await fastify.register(comment_admin_routes_1.commentAdminRoutes, { prefix: '/api/media' }); + await fastify.register(chat_notifications_routes_1.chatNotificationsRoutes, { prefix: '/api/media' }); + await fastify.register(chat_threads_routes_1.chatThreadsRoutes, { prefix: '/api/media' }); + await fastify.register(user_profile_routes_1.userProfileRoutes, { prefix: '/api/media' }); + await fastify.register(fetch_routes_1.fetchRoutes, { prefix: '/api/videos' }); + await fastify.register(shorts_routes_1.shortsRoutes, { prefix: '/api' }); + await fastify.register(upvote_routes_1.upvoteRoutes, { prefix: '/api' }); + await fastify.register(playlists_public_routes_1.playlistsPublicRoutes, { prefix: '/api/playlists' }); + await fastify.register(playlists_user_routes_1.playlistsUserRoutes, { prefix: '/api/playlists' }); + await fastify.register(playlists_admin_routes_1.playlistsAdminRoutes, { prefix: '/api/media' }); + // Photo gallery routes + await fastify.register(photos_routes_1.photosRoutes, { prefix: '/api/photos' }); + await fastify.register(photo_upload_routes_1.photoUploadRoutes, { prefix: '/api/photos' }); + await fastify.register(photo_albums_routes_1.photoAlbumsRoutes, { prefix: '/api/albums' }); + await fastify.register(photos_public_routes_1.photosPublicRoutes, { prefix: '/api' }); + await fastify.register(photo_engagement_routes_1.photoEngagementRoutes, { prefix: '/api' }); + // 404 handler for unmatched routes + fastify.setNotFoundHandler((_request, reply) => { + reply.status(404).send({ error: { message: 'Route not found', code: 'NOT_FOUND' } }); + }); const port = env_1.env.MEDIA_API_PORT; const host = '0.0.0.0'; await fastify.listen({ port, host }); @@ -104,6 +156,9 @@ const start = async () => { // Start video schedule queue worker video_schedule_queue_service_1.videoScheduleQueueService.startWorker(); logger_1.logger.info('Video schedule queue worker initialized'); + // Start video fetch queue worker + video_fetch_queue_service_1.videoFetchQueueService.startWorker(); + logger_1.logger.info('Video fetch queue worker initialized'); if (env_1.env.ENABLE_MEDIA_FEATURES !== 'true') { logger_1.logger.warn('Media features are disabled (ENABLE_MEDIA_FEATURES=false)'); } diff --git a/api/dist/media-server.js.map b/api/dist/media-server.js.map index a337870b..44077a40 100644 --- a/api/dist/media-server.js.map +++ b/api/dist/media-server.js.map @@ -1 +1 @@ -{"version":3,"file":"media-server.js","sourceRoot":"","sources":["../src/media-server.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"media-server.js","sourceRoot":"","sources":["../src/media-server.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/api/dist/middleware/auth.middleware.d.ts.map b/api/dist/middleware/auth.middleware.d.ts.map index 19cdef69..5aefea6d 100644 --- a/api/dist/middleware/auth.middleware.d.ts.map +++ b/api/dist/middleware/auth.middleware.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"auth.middleware.d.ts","sourceRoot":"","sources":["../../src/middleware/auth.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAY1D,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,QAe5E;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,QAiB5E"} \ No newline at end of file +{"version":3,"file":"auth.middleware.d.ts","sourceRoot":"","sources":["../../src/middleware/auth.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAa1D,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,QAoB5E;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,QAsB5E"} \ No newline at end of file diff --git a/api/dist/middleware/auth.middleware.js b/api/dist/middleware/auth.middleware.js index 5890f609..63134691 100644 --- a/api/dist/middleware/auth.middleware.js +++ b/api/dist/middleware/auth.middleware.js @@ -15,8 +15,13 @@ function authenticate(req, _res, next) { } const token = header.slice(7); try { - const payload = jsonwebtoken_1.default.verify(token, env_1.env.JWT_ACCESS_SECRET); - req.user = { id: payload.id, email: payload.email, role: payload.role }; + const payload = jsonwebtoken_1.default.verify(token, env_1.env.JWT_ACCESS_SECRET, { algorithms: ['HS256'] }); + req.user = { + id: payload.id, + email: payload.email, + role: payload.role, + roles: payload.roles || [payload.role], // Backwards compat: old JWTs without roles + }; next(); } catch { @@ -31,8 +36,13 @@ function optionalAuth(req, _res, next) { } const token = header.slice(7); try { - const payload = jsonwebtoken_1.default.verify(token, env_1.env.JWT_ACCESS_SECRET); - req.user = { id: payload.id, email: payload.email, role: payload.role }; + const payload = jsonwebtoken_1.default.verify(token, env_1.env.JWT_ACCESS_SECRET, { algorithms: ['HS256'] }); + req.user = { + id: payload.id, + email: payload.email, + role: payload.role, + roles: payload.roles || [payload.role], + }; } catch { // Token invalid — continue without user diff --git a/api/dist/middleware/auth.middleware.js.map b/api/dist/middleware/auth.middleware.js.map index 5a1d611d..b400ce31 100644 --- a/api/dist/middleware/auth.middleware.js.map +++ b/api/dist/middleware/auth.middleware.js.map @@ -1 +1 @@ -{"version":3,"file":"auth.middleware.js","sourceRoot":"","sources":["../../src/middleware/auth.middleware.ts"],"names":[],"mappings":";;;;;AAYA,oCAeC;AAED,oCAiBC;AA7CD,gEAA+B;AAE/B,uCAAoC;AACpC,mDAA2C;AAQ3C,SAAgB,YAAY,CAAC,GAAY,EAAE,IAAc,EAAE,IAAkB;IAC3E,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;IACzC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,yBAAyB,EAAE,eAAe,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE9B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,sBAAG,CAAC,MAAM,CAAC,KAAK,EAAE,SAAG,CAAC,iBAAiB,CAAiB,CAAC;QACzE,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;QACxE,IAAI,EAAE,CAAC;IACT,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,0BAA0B,EAAE,eAAe,CAAC,CAAC;IACvE,CAAC;AACH,CAAC;AAED,SAAgB,YAAY,CAAC,GAAY,EAAE,IAAc,EAAE,IAAkB;IAC3E,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;IACzC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,IAAI,EAAE,CAAC;QACP,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE9B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,sBAAG,CAAC,MAAM,CAAC,KAAK,EAAE,SAAG,CAAC,iBAAiB,CAAiB,CAAC;QACzE,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,wCAAwC;IAC1C,CAAC;IAED,IAAI,EAAE,CAAC;AACT,CAAC"} \ No newline at end of file +{"version":3,"file":"auth.middleware.js","sourceRoot":"","sources":["../../src/middleware/auth.middleware.ts"],"names":[],"mappings":";;;;;AAaA,oCAoBC;AAED,oCAsBC;AAxDD,gEAA+B;AAE/B,uCAAoC;AACpC,mDAA2C;AAS3C,SAAgB,YAAY,CAAC,GAAY,EAAE,IAAc,EAAE,IAAkB;IAC3E,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;IACzC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,yBAAyB,EAAE,eAAe,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE9B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,sBAAG,CAAC,MAAM,CAAC,KAAK,EAAE,SAAG,CAAC,iBAAiB,EAAE,EAAE,UAAU,EAAE,CAAC,OAAO,CAAC,EAAE,CAAiB,CAAC;QACpG,GAAG,CAAC,IAAI,GAAG;YACT,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,2CAA2C;SACpF,CAAC;QACF,IAAI,EAAE,CAAC;IACT,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,0BAA0B,EAAE,eAAe,CAAC,CAAC;IACvE,CAAC;AACH,CAAC;AAED,SAAgB,YAAY,CAAC,GAAY,EAAE,IAAc,EAAE,IAAkB;IAC3E,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;IACzC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,IAAI,EAAE,CAAC;QACP,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE9B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,sBAAG,CAAC,MAAM,CAAC,KAAK,EAAE,SAAG,CAAC,iBAAiB,EAAE,EAAE,UAAU,EAAE,CAAC,OAAO,CAAC,EAAE,CAAiB,CAAC;QACpG,GAAG,CAAC,IAAI,GAAG;YACT,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;SACvC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,wCAAwC;IAC1C,CAAC;IAED,IAAI,EAAE,CAAC;AACT,CAAC"} \ No newline at end of file diff --git a/api/dist/middleware/rate-limit.d.ts b/api/dist/middleware/rate-limit.d.ts index ed702523..2d4e1666 100644 --- a/api/dist/middleware/rate-limit.d.ts +++ b/api/dist/middleware/rate-limit.d.ts @@ -6,7 +6,19 @@ export declare const canvassVisitRateLimit: import("express-rate-limit").RateLim export declare const canvassBulkVisitRateLimit: import("express-rate-limit").RateLimitRequestHandler; export declare const gpsTrackingRateLimit: import("express-rate-limit").RateLimitRequestHandler; export declare const canvassGeocodeRateLimit: import("express-rate-limit").RateLimitRequestHandler; +export declare const adTrackingRateLimit: import("express-rate-limit").RateLimitRequestHandler; +export declare const quickJoinRateLimit: import("express-rate-limit").RateLimitRequestHandler; export declare const authRateLimit: import("express-rate-limit").RateLimitRequestHandler; export declare const observabilityRateLimit: import("express-rate-limit").RateLimitRequestHandler; +export declare const docsAnalyticsRateLimit: import("express-rate-limit").RateLimitRequestHandler; +export declare const docsCommentAnonRateLimit: import("express-rate-limit").RateLimitRequestHandler; +export declare const docsCommentAuthRateLimit: import("express-rate-limit").RateLimitRequestHandler; +export declare const docsCommentFetchRateLimit: import("express-rate-limit").RateLimitRequestHandler; +export declare const profileViewRateLimit: import("express-rate-limit").RateLimitRequestHandler; +export declare const profileEditRateLimit: import("express-rate-limit").RateLimitRequestHandler; +export declare const profilePhotoRateLimit: import("express-rate-limit").RateLimitRequestHandler; +export declare const profilePasswordRateLimit: import("express-rate-limit").RateLimitRequestHandler; +export declare const eventSubmissionRateLimit: import("express-rate-limit").RateLimitRequestHandler; +export declare const errorReportRateLimit: import("express-rate-limit").RateLimitRequestHandler; export declare const healthMetricsRateLimit: import("express-rate-limit").RateLimitRequestHandler; //# sourceMappingURL=rate-limit.d.ts.map \ No newline at end of file diff --git a/api/dist/middleware/rate-limit.d.ts.map b/api/dist/middleware/rate-limit.d.ts.map index 1384b593..3d738252 100644 --- a/api/dist/middleware/rate-limit.d.ts.map +++ b/api/dist/middleware/rate-limit.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"rate-limit.d.ts","sourceRoot":"","sources":["../../src/middleware/rate-limit.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,eAAe,sDAe1B,CAAC;AAEH,eAAO,MAAM,cAAc,sDAezB,CAAC;AAEH,eAAO,MAAM,iBAAiB,sDAe5B,CAAC;AAEH,eAAO,MAAM,oBAAoB,sDAe/B,CAAC;AAEH,eAAO,MAAM,qBAAqB,sDAehC,CAAC;AAEH,eAAO,MAAM,yBAAyB,sDAepC,CAAC;AAEH,eAAO,MAAM,oBAAoB,sDAe/B,CAAC;AAEH,eAAO,MAAM,uBAAuB,sDAelC,CAAC;AAEH,eAAO,MAAM,aAAa,sDAexB,CAAC;AAEH,eAAO,MAAM,sBAAsB,sDAejC,CAAC;AAEH,eAAO,MAAM,sBAAsB,sDAejC,CAAC"} \ No newline at end of file +{"version":3,"file":"rate-limit.d.ts","sourceRoot":"","sources":["../../src/middleware/rate-limit.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,eAAe,sDAe1B,CAAC;AAEH,eAAO,MAAM,cAAc,sDAezB,CAAC;AAEH,eAAO,MAAM,iBAAiB,sDAe5B,CAAC;AAEH,eAAO,MAAM,oBAAoB,sDAe/B,CAAC;AAEH,eAAO,MAAM,qBAAqB,sDAehC,CAAC;AAEH,eAAO,MAAM,yBAAyB,sDAepC,CAAC;AAEH,eAAO,MAAM,oBAAoB,sDAe/B,CAAC;AAEH,eAAO,MAAM,uBAAuB,sDAelC,CAAC;AAEH,eAAO,MAAM,mBAAmB,sDAe9B,CAAC;AAEH,eAAO,MAAM,kBAAkB,sDAe7B,CAAC;AAEH,eAAO,MAAM,aAAa,sDAexB,CAAC;AAEH,eAAO,MAAM,sBAAsB,sDAejC,CAAC;AAEH,eAAO,MAAM,sBAAsB,sDAejC,CAAC;AAEH,eAAO,MAAM,wBAAwB,sDAenC,CAAC;AAEH,eAAO,MAAM,wBAAwB,sDAenC,CAAC;AAEH,eAAO,MAAM,yBAAyB,sDAepC,CAAC;AAEH,eAAO,MAAM,oBAAoB,sDAe/B,CAAC;AAEH,eAAO,MAAM,oBAAoB,sDAe/B,CAAC;AAEH,eAAO,MAAM,qBAAqB,sDAehC,CAAC;AAEH,eAAO,MAAM,wBAAwB,sDAenC,CAAC;AAEH,eAAO,MAAM,wBAAwB,sDAenC,CAAC;AAEH,eAAO,MAAM,oBAAoB,sDAe/B,CAAC;AAEH,eAAO,MAAM,sBAAsB,sDAejC,CAAC"} \ No newline at end of file diff --git a/api/dist/middleware/rate-limit.js b/api/dist/middleware/rate-limit.js index a23f84f1..cb8f22c8 100644 --- a/api/dist/middleware/rate-limit.js +++ b/api/dist/middleware/rate-limit.js @@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); -exports.healthMetricsRateLimit = exports.observabilityRateLimit = exports.authRateLimit = exports.canvassGeocodeRateLimit = exports.gpsTrackingRateLimit = exports.canvassBulkVisitRateLimit = exports.canvassVisitRateLimit = exports.shiftSignupRateLimit = exports.responseRateLimit = exports.emailRateLimit = exports.globalRateLimit = void 0; +exports.healthMetricsRateLimit = exports.errorReportRateLimit = exports.eventSubmissionRateLimit = exports.profilePasswordRateLimit = exports.profilePhotoRateLimit = exports.profileEditRateLimit = exports.profileViewRateLimit = exports.docsCommentFetchRateLimit = exports.docsCommentAuthRateLimit = exports.docsCommentAnonRateLimit = exports.docsAnalyticsRateLimit = exports.observabilityRateLimit = exports.authRateLimit = exports.quickJoinRateLimit = exports.adTrackingRateLimit = exports.canvassGeocodeRateLimit = exports.gpsTrackingRateLimit = exports.canvassBulkVisitRateLimit = exports.canvassVisitRateLimit = exports.shiftSignupRateLimit = exports.responseRateLimit = exports.emailRateLimit = exports.globalRateLimit = void 0; const express_rate_limit_1 = __importDefault(require("express-rate-limit")); const rate_limit_redis_1 = __importDefault(require("rate-limit-redis")); const redis_1 = require("../config/redis"); @@ -136,6 +136,38 @@ exports.canvassGeocodeRateLimit = (0, express_rate_limit_1.default)({ }, }, }); +exports.adTrackingRateLimit = (0, express_rate_limit_1.default)({ + windowMs: 60 * 1000, // 1 minute + max: 60, // 60 events/min per IP (generous for scroll-heavy gallery pages) + standardHeaders: true, + legacyHeaders: false, + store: new rate_limit_redis_1.default({ + sendCommand: (command, ...args) => redis_1.redis.call(command, ...args), + prefix: 'rl:ad-track:', + }), + message: { + error: { + message: 'Too many tracking requests', + code: 'RATE_LIMIT_EXCEEDED', + }, + }, +}); +exports.quickJoinRateLimit = (0, express_rate_limit_1.default)({ + windowMs: 60 * 60 * 1000, // 1 hour + max: 10, + standardHeaders: true, + legacyHeaders: false, + store: new rate_limit_redis_1.default({ + sendCommand: (command, ...args) => redis_1.redis.call(command, ...args), + prefix: 'rl:quick-join:', + }), + message: { + error: { + message: 'Too many join attempts, please try again later', + code: 'QUICK_JOIN_RATE_LIMIT_EXCEEDED', + }, + }, +}); exports.authRateLimit = (0, express_rate_limit_1.default)({ windowMs: 15 * 60 * 1000, max: 10, // Reduced from 20 to prevent brute force attacks @@ -168,6 +200,166 @@ exports.observabilityRateLimit = (0, express_rate_limit_1.default)({ }, }, }); +exports.docsAnalyticsRateLimit = (0, express_rate_limit_1.default)({ + windowMs: 60 * 1000, // 1 minute + max: 60, // 60 requests/min per IP + standardHeaders: true, + legacyHeaders: false, + store: new rate_limit_redis_1.default({ + sendCommand: (command, ...args) => redis_1.redis.call(command, ...args), + prefix: 'rl:docs-analytics:', + }), + message: { + error: { + message: 'Too many tracking requests, please slow down', + code: 'DOCS_ANALYTICS_RATE_LIMIT_EXCEEDED', + }, + }, +}); +exports.docsCommentAnonRateLimit = (0, express_rate_limit_1.default)({ + windowMs: 60 * 60 * 1000, // 1 hour + max: 5, + standardHeaders: true, + legacyHeaders: false, + store: new rate_limit_redis_1.default({ + sendCommand: (command, ...args) => redis_1.redis.call(command, ...args), + prefix: 'rl:docs-comment-anon:', + }), + message: { + error: { + message: 'Too many anonymous comments, please try again later', + code: 'DOCS_COMMENT_ANON_RATE_LIMIT_EXCEEDED', + }, + }, +}); +exports.docsCommentAuthRateLimit = (0, express_rate_limit_1.default)({ + windowMs: 60 * 60 * 1000, // 1 hour + max: 30, + standardHeaders: true, + legacyHeaders: false, + store: new rate_limit_redis_1.default({ + sendCommand: (command, ...args) => redis_1.redis.call(command, ...args), + prefix: 'rl:docs-comment-auth:', + }), + message: { + error: { + message: 'Too many comments, please try again later', + code: 'DOCS_COMMENT_AUTH_RATE_LIMIT_EXCEEDED', + }, + }, +}); +exports.docsCommentFetchRateLimit = (0, express_rate_limit_1.default)({ + windowMs: 60 * 1000, // 1 minute + max: 60, + standardHeaders: true, + legacyHeaders: false, + store: new rate_limit_redis_1.default({ + sendCommand: (command, ...args) => redis_1.redis.call(command, ...args), + prefix: 'rl:docs-comment-fetch:', + }), + message: { + error: { + message: 'Too many comment fetch requests, please slow down', + code: 'DOCS_COMMENT_FETCH_RATE_LIMIT_EXCEEDED', + }, + }, +}); +exports.profileViewRateLimit = (0, express_rate_limit_1.default)({ + windowMs: 60 * 1000, // 1 minute + max: 60, // 60 requests per minute (shared across profile, photo, activity endpoints) + standardHeaders: true, + legacyHeaders: false, + store: new rate_limit_redis_1.default({ + sendCommand: (command, ...args) => redis_1.redis.call(command, ...args), + prefix: 'rl:profile-view:', + }), + message: { + error: { + message: 'Too many profile requests, please try again later', + code: 'PROFILE_VIEW_RATE_LIMIT_EXCEEDED', + }, + }, +}); +exports.profileEditRateLimit = (0, express_rate_limit_1.default)({ + windowMs: 60 * 60 * 1000, // 1 hour + max: 20, + standardHeaders: true, + legacyHeaders: false, + store: new rate_limit_redis_1.default({ + sendCommand: (command, ...args) => redis_1.redis.call(command, ...args), + prefix: 'rl:profile-edit:', + }), + message: { + error: { + message: 'Too many profile edit requests, please try again later', + code: 'PROFILE_EDIT_RATE_LIMIT_EXCEEDED', + }, + }, +}); +exports.profilePhotoRateLimit = (0, express_rate_limit_1.default)({ + windowMs: 60 * 60 * 1000, // 1 hour + max: 5, + standardHeaders: true, + legacyHeaders: false, + store: new rate_limit_redis_1.default({ + sendCommand: (command, ...args) => redis_1.redis.call(command, ...args), + prefix: 'rl:profile-photo:', + }), + message: { + error: { + message: 'Too many photo uploads, please try again later', + code: 'PROFILE_PHOTO_RATE_LIMIT_EXCEEDED', + }, + }, +}); +exports.profilePasswordRateLimit = (0, express_rate_limit_1.default)({ + windowMs: 15 * 60 * 1000, // 15 minutes + max: 5, // Stricter than auth (10/15min) — profile passwords may be simpler + standardHeaders: true, + legacyHeaders: false, + store: new rate_limit_redis_1.default({ + sendCommand: (command, ...args) => redis_1.redis.call(command, ...args), + prefix: 'rl:profile-password:', + }), + message: { + error: { + message: 'Too many password attempts, please try again later', + code: 'PROFILE_PASSWORD_RATE_LIMIT_EXCEEDED', + }, + }, +}); +exports.eventSubmissionRateLimit = (0, express_rate_limit_1.default)({ + windowMs: 60 * 60 * 1000, // 1 hour + max: 5, + standardHeaders: true, + legacyHeaders: false, + store: new rate_limit_redis_1.default({ + sendCommand: (command, ...args) => redis_1.redis.call(command, ...args), + prefix: 'rl:event-submit:', + }), + message: { + error: { + message: 'Too many event submissions, please try again later', + code: 'EVENT_SUBMISSION_RATE_LIMIT_EXCEEDED', + }, + }, +}); +exports.errorReportRateLimit = (0, express_rate_limit_1.default)({ + windowMs: 60 * 60 * 1000, // 1 hour + max: 5, + standardHeaders: true, + legacyHeaders: false, + store: new rate_limit_redis_1.default({ + sendCommand: (command, ...args) => redis_1.redis.call(command, ...args), + prefix: 'rl:error-report:', + }), + message: { + error: { + message: 'Too many error reports, please try again later', + code: 'ERROR_REPORT_RATE_LIMIT_EXCEEDED', + }, + }, +}); exports.healthMetricsRateLimit = (0, express_rate_limit_1.default)({ windowMs: 60 * 1000, // 1 minute max: 30, // 30 requests per minute diff --git a/api/dist/middleware/rate-limit.js.map b/api/dist/middleware/rate-limit.js.map index ee614ec4..79069ce2 100644 --- a/api/dist/middleware/rate-limit.js.map +++ b/api/dist/middleware/rate-limit.js.map @@ -1 +1 @@ -{"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../../src/middleware/rate-limit.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../../src/middleware/rate-limit.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/api/dist/middleware/rbac.middleware.d.ts.map b/api/dist/middleware/rbac.middleware.d.ts.map index 6991b07b..29072e84 100644 --- a/api/dist/middleware/rbac.middleware.d.ts.map +++ b/api/dist/middleware/rbac.middleware.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"rbac.middleware.d.ts","sourceRoot":"","sources":["../../src/middleware/rbac.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,wBAAgB,WAAW,CAAC,GAAG,KAAK,EAAE,QAAQ,EAAE,IACtC,KAAK,OAAO,EAAE,MAAM,QAAQ,EAAE,MAAM,YAAY,UAWzD;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,QAU9E"} \ No newline at end of file +{"version":3,"file":"rbac.middleware.d.ts","sourceRoot":"","sources":["../../src/middleware/rbac.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,wBAAgB,WAAW,CAAC,GAAG,KAAK,EAAE,QAAQ,EAAE,IACtC,KAAK,OAAO,EAAE,MAAM,QAAQ,EAAE,MAAM,YAAY,UAqBzD;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,QAY9E"} \ No newline at end of file diff --git a/api/dist/middleware/rbac.middleware.js b/api/dist/middleware/rbac.middleware.js index 03616fb6..1705433b 100644 --- a/api/dist/middleware/rbac.middleware.js +++ b/api/dist/middleware/rbac.middleware.js @@ -9,7 +9,14 @@ function requireRole(...roles) { if (!req.user) { throw new error_handler_1.AppError(401, 'Authentication required', 'AUTH_REQUIRED'); } - if (!roles.includes(req.user.role)) { + // Check multi-role array (falls back to single role via auth middleware) + const userRoles = req.user.roles || [req.user.role]; + // SUPER_ADMIN bypasses all role checks + if (userRoles.includes(client_1.UserRole.SUPER_ADMIN)) { + return next(); + } + const hasRole = userRoles.some(r => roles.includes(r)); + if (!hasRole) { throw new error_handler_1.AppError(403, 'Insufficient permissions', 'FORBIDDEN'); } next(); @@ -19,7 +26,9 @@ function requireNonTemp(req, _res, next) { if (!req.user) { throw new error_handler_1.AppError(401, 'Authentication required', 'AUTH_REQUIRED'); } - if (req.user.role === client_1.UserRole.TEMP) { + const userRoles = req.user.roles || [req.user.role]; + // User is "temp only" if their only role is TEMP + if (userRoles.length === 1 && userRoles[0] === client_1.UserRole.TEMP) { throw new error_handler_1.AppError(403, 'Temporary accounts cannot access this resource', 'TEMP_FORBIDDEN'); } next(); diff --git a/api/dist/middleware/rbac.middleware.js.map b/api/dist/middleware/rbac.middleware.js.map index ea9cba80..0133466a 100644 --- a/api/dist/middleware/rbac.middleware.js.map +++ b/api/dist/middleware/rbac.middleware.js.map @@ -1 +1 @@ -{"version":3,"file":"rbac.middleware.js","sourceRoot":"","sources":["../../src/middleware/rbac.middleware.ts"],"names":[],"mappings":";;AAIA,kCAYC;AAED,wCAUC;AA3BD,2CAA0C;AAC1C,mDAA2C;AAE3C,SAAgB,WAAW,CAAC,GAAG,KAAiB;IAC9C,OAAO,CAAC,GAAY,EAAE,IAAc,EAAE,IAAkB,EAAE,EAAE;QAC1D,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,yBAAyB,EAAE,eAAe,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,0BAA0B,EAAE,WAAW,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC;AAED,SAAgB,cAAc,CAAC,GAAY,EAAE,IAAc,EAAE,IAAkB;IAC7E,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,yBAAyB,EAAE,eAAe,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,iBAAQ,CAAC,IAAI,EAAE,CAAC;QACpC,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,gDAAgD,EAAE,gBAAgB,CAAC,CAAC;IAC9F,CAAC;IAED,IAAI,EAAE,CAAC;AACT,CAAC"} \ No newline at end of file +{"version":3,"file":"rbac.middleware.js","sourceRoot":"","sources":["../../src/middleware/rbac.middleware.ts"],"names":[],"mappings":";;AAIA,kCAsBC;AAED,wCAYC;AAvCD,2CAA0C;AAC1C,mDAA2C;AAE3C,SAAgB,WAAW,CAAC,GAAG,KAAiB;IAC9C,OAAO,CAAC,GAAY,EAAE,IAAc,EAAE,IAAkB,EAAE,EAAE;QAC1D,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,yBAAyB,EAAE,eAAe,CAAC,CAAC;QACtE,CAAC;QAED,yEAAyE;QACzE,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEpD,uCAAuC;QACvC,IAAI,SAAS,CAAC,QAAQ,CAAC,iBAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7C,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QAED,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAEvD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,0BAA0B,EAAE,WAAW,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC;AAED,SAAgB,cAAc,CAAC,GAAY,EAAE,IAAc,EAAE,IAAkB;IAC7E,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,yBAAyB,EAAE,eAAe,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpD,iDAAiD;IACjD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,iBAAQ,CAAC,IAAI,EAAE,CAAC;QAC7D,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,gDAAgD,EAAE,gBAAgB,CAAC,CAAC;IAC9F,CAAC;IAED,IAAI,EAAE,CAAC;AACT,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/auth/auth.routes.d.ts.map b/api/dist/modules/auth/auth.routes.d.ts.map index f5412e44..9d7e7214 100644 --- a/api/dist/modules/auth/auth.routes.d.ts.map +++ b/api/dist/modules/auth/auth.routes.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"auth.routes.d.ts","sourceRoot":"","sources":["../../../src/modules/auth/auth.routes.ts"],"names":[],"mappings":"AAOA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAmGxB,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"auth.routes.d.ts","sourceRoot":"","sources":["../../../src/modules/auth/auth.routes.ts"],"names":[],"mappings":"AAmBA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAmUxB,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/auth/auth.routes.js b/api/dist/modules/auth/auth.routes.js index 7128c274..6a69ef0d 100644 --- a/api/dist/modules/auth/auth.routes.js +++ b/api/dist/modules/auth/auth.routes.js @@ -1,45 +1,27 @@ "use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || (function () { - var ownKeys = function(o) { - ownKeys = Object.getOwnPropertyNames || function (o) { - var ar = []; - for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; - return ar; - }; - return ownKeys(o); - }; - return function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); - __setModuleDefault(result, mod); - return result; - }; -})(); +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; Object.defineProperty(exports, "__esModule", { value: true }); exports.authRouter = void 0; const express_1 = require("express"); +const zod_1 = require("zod"); +const bcryptjs_1 = __importDefault(require("bcryptjs")); +const client_1 = require("@prisma/client"); const auth_service_1 = require("./auth.service"); const auth_schemas_1 = require("./auth.schemas"); const validate_1 = require("../../middleware/validate"); const auth_middleware_1 = require("../../middleware/auth.middleware"); const rate_limit_1 = require("../../middleware/rate-limit"); +const database_1 = require("../../config/database"); +const verification_token_service_1 = require("../../services/verification-token.service"); +const password_reset_token_service_1 = require("../../services/password-reset-token.service"); +const email_service_1 = require("../../services/email.service"); +const settings_service_1 = require("../settings/settings.service"); +const env_1 = require("../../config/env"); +const logger_1 = require("../../utils/logger"); +const auth_rate_limits_1 = require("./auth.rate-limits"); +const profile_service_1 = require("../people/profile.service"); const router = (0, express_1.Router)(); exports.authRouter = router; // POST /api/auth/login @@ -62,6 +44,138 @@ router.post('/register', rate_limit_1.authRateLimit, (0, validate_1.validate)(au next(err); } }); +// POST /api/auth/verify-email +const verifyEmailSchema = zod_1.z.object({ token: zod_1.z.string().min(1) }); +router.post('/verify-email', rate_limit_1.authRateLimit, (0, validate_1.validate)(verifyEmailSchema), async (req, res, next) => { + try { + const { token } = req.body; + const result = await verification_token_service_1.verificationTokenService.verifyToken(token); + if (!result.valid || !result.userId) { + res.status(400).json({ + error: { message: result.error || 'Invalid token', code: 'INVALID_TOKEN' }, + }); + return; + } + const settings = await settings_service_1.siteSettingsService.get(); + const autoApprove = settings.autoApproveVerifiedUsers; + const newStatus = autoApprove ? client_1.UserStatus.ACTIVE : client_1.UserStatus.PENDING_APPROVAL; + await database_1.prisma.user.update({ + where: { id: result.userId }, + data: { emailVerified: true, status: newStatus }, + }); + // If not auto-approved, notify admins + if (!autoApprove) { + const user = await database_1.prisma.user.findUnique({ where: { id: result.userId } }); + if (user) { + const admins = await database_1.prisma.user.findMany({ + where: { role: client_1.UserRole.SUPER_ADMIN, status: client_1.UserStatus.ACTIVE }, + select: { email: true }, + }); + if (admins.length > 0) { + await email_service_1.emailService.sendPendingApprovalNotification({ + adminEmails: admins.map(a => a.email), + newUserEmail: user.email, + newUserName: user.name || '', + }).catch(err => logger_1.logger.error('Failed to send approval notification:', err)); + } + } + } + res.json({ + verified: true, + approved: autoApprove, + message: autoApprove + ? 'Email verified. You can now log in.' + : 'Email verified. Your account is pending admin approval.', + }); + } + catch (err) { + next(err); + } +}); +// POST /api/auth/resend-verification +const resendVerificationSchema = zod_1.z.object({ email: zod_1.z.string().email() }); +router.post('/resend-verification', (0, auth_rate_limits_1.createVerificationRateLimit)(), (0, validate_1.validate)(resendVerificationSchema), async (req, res, next) => { + try { + // Always return success to prevent user enumeration + res.json({ message: 'If your email is registered and pending verification, a new verification link has been sent.' }); + // Send asynchronously (don't block response) + const user = await database_1.prisma.user.findUnique({ where: { email: req.body.email } }); + if (user && user.status === client_1.UserStatus.PENDING_VERIFICATION) { + const token = await verification_token_service_1.verificationTokenService.createToken(user.id); + const adminUrl = env_1.env.ADMIN_URL || 'http://localhost:3000'; + const verificationUrl = `${adminUrl}/verify-email?token=${token}`; + await email_service_1.emailService.sendVerificationEmail({ + recipientEmail: user.email, + recipientName: user.name || 'there', + verificationUrl, + }).catch(err => logger_1.logger.error('Failed to resend verification email:', err)); + } + } + catch (err) { + next(err); + } +}); +// POST /api/auth/forgot-password +const forgotPasswordSchema = zod_1.z.object({ email: zod_1.z.string().email() }); +router.post('/forgot-password', (0, auth_rate_limits_1.createResetRateLimit)(), (0, validate_1.validate)(forgotPasswordSchema), async (req, res, next) => { + try { + // Always return success to prevent user enumeration + res.json({ message: 'If your email is registered, a password reset link has been sent.' }); + // Send asynchronously + const user = await database_1.prisma.user.findUnique({ where: { email: req.body.email } }); + if (user && user.status === client_1.UserStatus.ACTIVE) { + const token = await password_reset_token_service_1.passwordResetTokenService.createToken(user.id); + const adminUrl = env_1.env.ADMIN_URL || 'http://localhost:3000'; + const resetUrl = `${adminUrl}/reset-password?token=${token}`; + await email_service_1.emailService.sendPasswordResetEmail({ + recipientEmail: user.email, + recipientName: user.name || 'there', + resetUrl, + }).catch(err => logger_1.logger.error('Failed to send password reset email:', err)); + } + } + catch (err) { + next(err); + } +}); +// POST /api/auth/reset-password +const resetPasswordSchema = zod_1.z.object({ + token: zod_1.z.string().min(1), + password: zod_1.z.string() + .min(12, 'Password must be at least 12 characters') + .regex(/[A-Z]/, 'Password must contain at least one uppercase letter') + .regex(/[a-z]/, 'Password must contain at least one lowercase letter') + .regex(/[0-9]/, 'Password must contain at least one digit'), +}); +router.post('/reset-password', rate_limit_1.authRateLimit, (0, validate_1.validate)(resetPasswordSchema), async (req, res, next) => { + try { + const { token, password } = req.body; + const result = await password_reset_token_service_1.passwordResetTokenService.validateToken(token); + if (!result.valid || !result.userId) { + res.status(400).json({ + error: { message: result.error || 'Invalid token', code: 'INVALID_TOKEN' }, + }); + return; + } + const hashedPassword = await bcryptjs_1.default.hash(password, 12); + // Update password, mark token used, invalidate all refresh tokens — all in one transaction + await database_1.prisma.$transaction(async (tx) => { + await tx.user.update({ + where: { id: result.userId }, + data: { password: hashedPassword }, + }); + await tx.refreshToken.deleteMany({ where: { userId: result.userId } }); + await tx.passwordResetToken.update({ + where: { token }, + data: { usedAt: new Date() }, + }); + }); + res.json({ message: 'Password has been reset. You can now log in with your new password.' }); + } + catch (err) { + next(err); + } +}); // POST /api/auth/refresh router.post('/refresh', rate_limit_1.authRateLimit, (0, validate_1.validate)(auth_schemas_1.refreshSchema), async (req, res, next) => { try { @@ -82,11 +196,59 @@ router.post('/logout', rate_limit_1.authRateLimit, (0, validate_1.validate)(auth next(err); } }); +// GET /api/auth/me/profile-token +router.get('/me/profile-token', auth_middleware_1.authenticate, async (req, res, next) => { + try { + const userId = req.user.id; + // Look up existing Contact linked to this user + let contact = await database_1.prisma.contact.findUnique({ where: { userId } }); + // Auto-create Contact if none exists + if (!contact) { + const user = await database_1.prisma.user.findUnique({ + where: { id: userId }, + select: { name: true, email: true }, + }); + if (!user) { + res.status(401).json({ error: { message: 'Invalid token', code: 'INVALID_TOKEN' } }); + return; + } + try { + contact = await database_1.prisma.contact.create({ + data: { + displayName: user.name || user.email, + firstName: user.name?.split(' ')[0] || null, + lastName: user.name?.split(' ').slice(1).join(' ') || null, + email: user.email, + userId, + primarySource: 'USER', + }, + }); + } + catch (err) { + // Race condition: another request created the Contact — retry lookup + if (err.code === 'P2002') { + contact = await database_1.prisma.contact.findUnique({ where: { userId } }); + } + if (!contact) + throw err; + } + } + // Generate profile token if Contact doesn't have one + if (!contact.profileToken) { + const result = await profile_service_1.profileService.generateProfileToken(contact.id); + res.json({ token: result.token }); + return; + } + res.json({ token: contact.profileToken }); + } + catch (err) { + next(err); + } +}); // GET /api/auth/me router.get('/me', auth_middleware_1.authenticate, async (req, res, next) => { try { - const { prisma } = await Promise.resolve().then(() => __importStar(require('../../config/database'))); - const user = await prisma.user.findUnique({ + const user = await database_1.prisma.user.findUnique({ where: { id: req.user.id }, select: { id: true, @@ -94,6 +256,7 @@ router.get('/me', auth_middleware_1.authenticate, async (req, res, next) => { name: true, phone: true, role: true, + roles: true, status: true, permissions: true, createdVia: true, diff --git a/api/dist/modules/auth/auth.routes.js.map b/api/dist/modules/auth/auth.routes.js.map index b4466d65..114a67f2 100644 --- a/api/dist/modules/auth/auth.routes.js.map +++ b/api/dist/modules/auth/auth.routes.js.map @@ -1 +1 @@ -{"version":3,"file":"auth.routes.js","sourceRoot":"","sources":["../../../src/modules/auth/auth.routes.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"auth.routes.js","sourceRoot":"","sources":["../../../src/modules/auth/auth.routes.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/api/dist/modules/auth/auth.schemas.d.ts b/api/dist/modules/auth/auth.schemas.d.ts index 5410a1a7..e628b0ef 100644 --- a/api/dist/modules/auth/auth.schemas.d.ts +++ b/api/dist/modules/auth/auth.schemas.d.ts @@ -14,16 +14,19 @@ export declare const registerSchema: z.ZodObject<{ password: z.ZodString; name: z.ZodOptional; phone: z.ZodOptional; + inviteCode: z.ZodOptional; }, "strip", z.ZodTypeAny, { email: string; password: string; name?: string | undefined; phone?: string | undefined; + inviteCode?: string | undefined; }, { email: string; password: string; name?: string | undefined; phone?: string | undefined; + inviteCode?: string | undefined; }>; export declare const refreshSchema: z.ZodObject<{ refreshToken: z.ZodString; diff --git a/api/dist/modules/auth/auth.schemas.d.ts.map b/api/dist/modules/auth/auth.schemas.d.ts.map index a97a373c..926cb062 100644 --- a/api/dist/modules/auth/auth.schemas.d.ts.map +++ b/api/dist/modules/auth/auth.schemas.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"auth.schemas.d.ts","sourceRoot":"","sources":["../../../src/modules/auth/auth.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,WAAW;;;;;;;;;EAGtB,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;EAUzB,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;EAExB,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AACrD,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAC3D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"auth.schemas.d.ts","sourceRoot":"","sources":["../../../src/modules/auth/auth.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,WAAW;;;;;;;;;EAGtB,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;EAWzB,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;EAExB,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AACrD,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAC3D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/auth/auth.schemas.js b/api/dist/modules/auth/auth.schemas.js index 82e85ffe..71ccc323 100644 --- a/api/dist/modules/auth/auth.schemas.js +++ b/api/dist/modules/auth/auth.schemas.js @@ -15,6 +15,7 @@ exports.registerSchema = zod_1.z.object({ .regex(/[0-9]/, 'Password must contain at least one digit'), name: zod_1.z.string().optional(), phone: zod_1.z.string().optional(), + inviteCode: zod_1.z.string().max(20).optional(), // Role removed from public registration - must be set server-side only }); exports.refreshSchema = zod_1.z.object({ diff --git a/api/dist/modules/auth/auth.schemas.js.map b/api/dist/modules/auth/auth.schemas.js.map index 09c49e76..34697a55 100644 --- a/api/dist/modules/auth/auth.schemas.js.map +++ b/api/dist/modules/auth/auth.schemas.js.map @@ -1 +1 @@ -{"version":3,"file":"auth.schemas.js","sourceRoot":"","sources":["../../../src/modules/auth/auth.schemas.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAGX,QAAA,WAAW,GAAG,OAAC,CAAC,MAAM,CAAC;IAClC,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;IACzB,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,sBAAsB,CAAC;CACpD,CAAC,CAAC;AAEU,QAAA,cAAc,GAAG,OAAC,CAAC,MAAM,CAAC;IACrC,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;IACzB,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;SACjB,GAAG,CAAC,EAAE,EAAE,yCAAyC,CAAC;SAClD,KAAK,CAAC,OAAO,EAAE,qDAAqD,CAAC;SACrE,KAAK,CAAC,OAAO,EAAE,qDAAqD,CAAC;SACrE,KAAK,CAAC,OAAO,EAAE,0CAA0C,CAAC;IAC7D,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,uEAAuE;CACxE,CAAC,CAAC;AAEU,QAAA,aAAa,GAAG,OAAC,CAAC,MAAM,CAAC;IACpC,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,2BAA2B,CAAC;CAC7D,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"auth.schemas.js","sourceRoot":"","sources":["../../../src/modules/auth/auth.schemas.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAGX,QAAA,WAAW,GAAG,OAAC,CAAC,MAAM,CAAC;IAClC,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;IACzB,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,sBAAsB,CAAC;CACpD,CAAC,CAAC;AAEU,QAAA,cAAc,GAAG,OAAC,CAAC,MAAM,CAAC;IACrC,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;IACzB,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;SACjB,GAAG,CAAC,EAAE,EAAE,yCAAyC,CAAC;SAClD,KAAK,CAAC,OAAO,EAAE,qDAAqD,CAAC;SACrE,KAAK,CAAC,OAAO,EAAE,qDAAqD,CAAC;SACrE,KAAK,CAAC,OAAO,EAAE,0CAA0C,CAAC;IAC7D,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACzC,uEAAuE;CACxE,CAAC,CAAC;AAEU,QAAA,aAAa,GAAG,OAAC,CAAC,MAAM,CAAC;IACpC,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,2BAA2B,CAAC;CAC7D,CAAC,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/auth/auth.service.d.ts b/api/dist/modules/auth/auth.service.d.ts index 9b3e83f8..84ff4410 100644 --- a/api/dist/modules/auth/auth.service.d.ts +++ b/api/dist/modules/auth/auth.service.d.ts @@ -1,9 +1,15 @@ import { UserRole } from '@prisma/client'; import type { RegisterInput } from './auth.schemas'; -interface TokenPair { +export interface TokenPair { accessToken: string; refreshToken: string; } +type UserForToken = { + id: string; + email: string; + role: UserRole; + roles?: unknown; +}; export declare const authService: { login(email: string, password: string): Promise<{ accessToken: string; @@ -14,7 +20,9 @@ export declare const authService: { email: string; name: string | null; phone: string | null; + pronouns: string | null; role: import(".prisma/client").$Enums.UserRole; + roles: import("@prisma/client/runtime/library").JsonValue; permissions: import("@prisma/client/runtime/library").JsonValue | null; createdVia: import(".prisma/client").$Enums.UserCreatedVia; expiresAt: Date | null; @@ -26,15 +34,15 @@ export declare const authService: { }; }>; register(data: RegisterInput): Promise<{ - accessToken: string; - refreshToken: string; user: { status: import(".prisma/client").$Enums.UserStatus; id: string; email: string; name: string | null; phone: string | null; + pronouns: string | null; role: import(".prisma/client").$Enums.UserRole; + roles: import("@prisma/client/runtime/library").JsonValue; permissions: import("@prisma/client/runtime/library").JsonValue | null; createdVia: import(".prisma/client").$Enums.UserCreatedVia; expiresAt: Date | null; @@ -44,6 +52,31 @@ export declare const authService: { createdAt: Date; updatedAt: Date; }; + requiresVerification: boolean; + message: string; + } | { + accessToken: string; + refreshToken: string; + user: { + status: import(".prisma/client").$Enums.UserStatus; + id: string; + email: string; + name: string | null; + phone: string | null; + pronouns: string | null; + role: import(".prisma/client").$Enums.UserRole; + roles: import("@prisma/client/runtime/library").JsonValue; + permissions: import("@prisma/client/runtime/library").JsonValue | null; + createdVia: import(".prisma/client").$Enums.UserCreatedVia; + expiresAt: Date | null; + expireDays: number | null; + lastLoginAt: Date | null; + emailVerified: boolean; + createdAt: Date; + updatedAt: Date; + }; + requiresVerification?: undefined; + message?: undefined; }>; refreshTokens(refreshToken: string): Promise<{ accessToken: string; @@ -54,7 +87,9 @@ export declare const authService: { email: string; name: string | null; phone: string | null; + pronouns: string | null; role: import(".prisma/client").$Enums.UserRole; + roles: import("@prisma/client/runtime/library").JsonValue; permissions: import("@prisma/client/runtime/library").JsonValue | null; createdVia: import(".prisma/client").$Enums.UserCreatedVia; expiresAt: Date | null; @@ -66,21 +101,9 @@ export declare const authService: { }; }>; logout(refreshToken: string): Promise; - generateAccessToken(user: { - id: string; - email: string; - role: UserRole; - }): string; - generateRefreshToken(user: { - id: string; - email: string; - role: UserRole; - }): Promise; - generateTokenPair(user: { - id: string; - email: string; - role: UserRole; - }): Promise; + generateAccessToken(user: UserForToken): string; + generateRefreshToken(user: UserForToken): Promise; + generateTokenPair(user: UserForToken): Promise; }; export {}; //# sourceMappingURL=auth.service.d.ts.map \ No newline at end of file diff --git a/api/dist/modules/auth/auth.service.d.ts.map b/api/dist/modules/auth/auth.service.d.ts.map index 95163074..cc3d246e 100644 --- a/api/dist/modules/auth/auth.service.d.ts.map +++ b/api/dist/modules/auth/auth.service.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"auth.service.d.ts","sourceRoot":"","sources":["../../../src/modules/auth/auth.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAc,MAAM,gBAAgB,CAAC;AAKtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAQpD,UAAU,SAAS;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,WAAW;iBACH,MAAM,YAAY,MAAM;qBAL9B,MAAM;sBACL,MAAM;;;;;;;;;;;;;;;;;;mBAwCC,aAAa;qBAzCrB,MAAM;sBACL,MAAM;;;;;;;;;;;;;;;;;;gCAgEc,MAAM;;;;;;;;;;;;;;;;;;;;yBAwDb,MAAM;8BAIP;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,GAAG,MAAM;+BAO/C;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;4BAqBlE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,CAAC;CAKjG,CAAC"} \ No newline at end of file +{"version":3,"file":"auth.service.d.ts","sourceRoot":"","sources":["../../../src/modules/auth/auth.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAc,MAAM,gBAAgB,CAAC;AAUtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AASpD,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,KAAK,YAAY,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAUnF,eAAO,MAAM,WAAW;iBACH,MAAM,YAAY,MAAM;qBAf9B,MAAM;sBACL,MAAM;;;;;;;;;;;;;;;;;;;;mBA+EC,aAAa;;;;;;;;;;;;;;;;;;;;;;qBAhFrB,MAAM;sBACL,MAAM;;;;;;;;;;;;;;;;;;;;;;gCAiLc,MAAM;;;;;;;;;;;;;;;;;;;;;;yBAsEb,MAAM;8BAIP,YAAY,GAAG,MAAM;+BAcd,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;4BA2BjC,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;CAKhE,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/auth/auth.service.js b/api/dist/modules/auth/auth.service.js index 6e8ec304..ccfc108b 100644 --- a/api/dist/modules/auth/auth.service.js +++ b/api/dist/modules/auth/auth.service.js @@ -1,4 +1,37 @@ "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || (function () { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; + }; +})(); var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; @@ -11,6 +44,18 @@ const database_1 = require("../../config/database"); const env_1 = require("../../config/env"); const error_handler_1 = require("../../middleware/error-handler"); const metrics_1 = require("../../utils/metrics"); +const settings_service_1 = require("../settings/settings.service"); +const verification_token_service_1 = require("../../services/verification-token.service"); +const email_service_1 = require("../../services/email.service"); +const roles_1 = require("../../utils/roles"); +const logger_1 = require("../../utils/logger"); +/** Parse the roles JSON field into a UserRole[] array */ +function parseRoles(user) { + if (Array.isArray(user.roles) && user.roles.length > 0) { + return user.roles; + } + return [user.role]; +} exports.authService = { async login(email, password) { const user = await database_1.prisma.user.findUnique({ where: { email } }); @@ -23,6 +68,15 @@ exports.authService = { (0, metrics_1.recordLoginAttempt)('failure'); throw new error_handler_1.AppError(401, 'Invalid email or password', 'INVALID_CREDENTIALS'); } + // Status-specific errors + if (user.status === client_1.UserStatus.PENDING_VERIFICATION) { + (0, metrics_1.recordLoginAttempt)('failure'); + throw new error_handler_1.AppError(403, 'Please verify your email address before logging in', 'EMAIL_NOT_VERIFIED'); + } + if (user.status === client_1.UserStatus.PENDING_APPROVAL) { + (0, metrics_1.recordLoginAttempt)('failure'); + throw new error_handler_1.AppError(403, 'Your account is pending admin approval', 'ACCOUNT_PENDING'); + } if (user.status !== client_1.UserStatus.ACTIVE) { (0, metrics_1.recordLoginAttempt)('failure'); throw new error_handler_1.AppError(403, `Account is ${user.status.toLowerCase()}`, 'ACCOUNT_INACTIVE'); @@ -36,25 +90,111 @@ exports.authService = { where: { id: user.id }, data: { lastLoginAt: new Date() }, }); + // Fire-and-forget: log USER_LOGIN activity on linked Contact + database_1.prisma.contact.findFirst({ + where: { userId: user.id, mergedIntoId: null }, + }).then(async (contact) => { + if (contact) { + await database_1.prisma.contactActivity.create({ + data: { + contactId: contact.id, + type: 'USER_LOGIN', + title: 'User logged in', + description: `Login from ${user.email}`, + }, + }); + } + }).catch(err => { + logger_1.logger.warn('Login activity logging failed:', err); + }); const tokens = await this.generateTokenPair(user); const { password: _, ...userWithoutPassword } = user; return { user: userWithoutPassword, ...tokens }; }, async register(data) { + // Check if public registration is enabled + const settings = await settings_service_1.siteSettingsService.get(); + if (!settings.enablePublicRegistration) { + throw new error_handler_1.AppError(403, 'Public registration is currently disabled', 'REGISTRATION_DISABLED'); + } const existing = await database_1.prisma.user.findUnique({ where: { email: data.email } }); if (existing) { throw new error_handler_1.AppError(409, 'Email already registered', 'EMAIL_EXISTS'); } const hashedPassword = await bcryptjs_1.default.hash(data.password, 12); + // Determine if email verification is needed + const smtpReady = await email_service_1.emailService.isSmtpConfigured(); + const requireVerification = settings.enableEmailVerification && smtpReady; const user = await database_1.prisma.user.create({ data: { email: data.email, password: hashedPassword, name: data.name, phone: data.phone, - role: client_1.UserRole.USER, // Always USER for public registration + role: client_1.UserRole.USER, + roles: JSON.parse(JSON.stringify([client_1.UserRole.USER])), + status: requireVerification ? client_1.UserStatus.PENDING_VERIFICATION : client_1.UserStatus.ACTIVE, + emailVerified: !requireVerification, + createdVia: 'SELF_REGISTRATION', }, }); + // Fire-and-forget: process referral if invite code provided + if (data.inviteCode) { + Promise.resolve().then(() => __importStar(require('../social/referral.service'))).then(({ referralService }) => { + referralService.processRegistrationReferral(user.id, data.inviteCode).catch(err => { + logger_1.logger.warn('Referral processing failed:', err); + }); + }).catch(() => { }); + } + // Fire-and-forget: auto-link or create Contact if People feature is enabled + settings_service_1.siteSettingsService.get().then(async (s) => { + if (!s.enablePeople) + return; + // Check for existing Contact with matching email → link + const existingContact = await database_1.prisma.contact.findFirst({ + where: { email: { equals: data.email, mode: 'insensitive' }, userId: null, mergedIntoId: null }, + }); + if (existingContact) { + await database_1.prisma.contact.update({ where: { id: existingContact.id }, data: { userId: user.id } }); + logger_1.logger.info(`Auto-linked contact ${existingContact.id} to registered user ${user.id}`); + } + else { + // Create new Contact linked to the user + await database_1.prisma.contact.create({ + data: { + displayName: data.name || data.email, + firstName: data.name?.split(' ')[0] || null, + lastName: data.name?.split(' ').slice(1).join(' ') || null, + email: data.email, + phone: data.phone || null, + primarySource: 'USER', + userId: user.id, + tags: [], + }, + }); + logger_1.logger.info(`Auto-created contact for registered user ${user.id}`); + } + }).catch(err => { + logger_1.logger.warn('Contact auto-creation on register failed:', err); + }); + // If verification required, send email and don't issue tokens + if (requireVerification) { + const token = await verification_token_service_1.verificationTokenService.createToken(user.id); + const adminUrl = env_1.env.ADMIN_URL || 'http://localhost:3000'; + const verificationUrl = `${adminUrl}/verify-email?token=${token}`; + await email_service_1.emailService.sendVerificationEmail({ + recipientEmail: user.email, + recipientName: user.name || 'there', + verificationUrl, + }); + const { password: _, ...userWithoutPassword } = user; + return { + user: userWithoutPassword, + requiresVerification: true, + message: 'Please check your email to verify your account', + }; + } + // No verification needed — issue tokens immediately const tokens = await this.generateTokenPair(user); const { password: _, ...userWithoutPassword } = user; return { user: userWithoutPassword, ...tokens }; @@ -62,7 +202,7 @@ exports.authService = { async refreshTokens(refreshToken) { let payload; try { - payload = jsonwebtoken_1.default.verify(refreshToken, env_1.env.JWT_REFRESH_SECRET); + payload = jsonwebtoken_1.default.verify(refreshToken, env_1.env.JWT_REFRESH_SECRET, { algorithms: ['HS256'] }); } catch { throw new error_handler_1.AppError(401, 'Invalid refresh token', 'INVALID_REFRESH_TOKEN'); @@ -74,6 +214,16 @@ exports.authService = { if (!stored) { throw new error_handler_1.AppError(401, 'Refresh token not found', 'INVALID_REFRESH_TOKEN'); } + // Check user status — banned/inactive users must not get new tokens + if (stored.user.status !== client_1.UserStatus.ACTIVE) { + await database_1.prisma.refreshToken.delete({ where: { id: stored.id } }); + throw new error_handler_1.AppError(401, 'Account is not active', 'ACCOUNT_INACTIVE'); + } + // Check account expiry + if (stored.user.expiresAt && stored.user.expiresAt < new Date()) { + await database_1.prisma.refreshToken.delete({ where: { id: stored.id } }); + throw new error_handler_1.AppError(401, 'Account has expired', 'ACCOUNT_EXPIRED'); + } if (stored.expiresAt < new Date()) { await database_1.prisma.refreshToken.delete({ where: { id: stored.id } }); throw new error_handler_1.AppError(401, 'Refresh token expired', 'REFRESH_TOKEN_EXPIRED'); @@ -81,14 +231,16 @@ exports.authService = { // Rotate: delete old and create new atomically const tokens = await database_1.prisma.$transaction(async (tx) => { await tx.refreshToken.delete({ where: { id: stored.id } }); - // Generate new token pair + const userRoles = parseRoles(stored.user); const accessToken = this.generateAccessToken(stored.user); const refreshPayload = { id: stored.user.id, email: stored.user.email, - role: stored.user.role + role: (0, roles_1.getPrimaryRole)(userRoles), + roles: userRoles, }; const refreshToken = jsonwebtoken_1.default.sign(refreshPayload, env_1.env.JWT_REFRESH_SECRET, { + algorithm: 'HS256', expiresIn: env_1.env.JWT_REFRESH_EXPIRY, }); const decoded = jsonwebtoken_1.default.decode(refreshToken); @@ -109,17 +261,30 @@ exports.authService = { await database_1.prisma.refreshToken.deleteMany({ where: { token: refreshToken } }); }, generateAccessToken(user) { - const payload = { id: user.id, email: user.email, role: user.role }; + const userRoles = parseRoles(user); + const payload = { + id: user.id, + email: user.email, + role: (0, roles_1.getPrimaryRole)(userRoles), + roles: userRoles, + }; return jsonwebtoken_1.default.sign(payload, env_1.env.JWT_ACCESS_SECRET, { + algorithm: 'HS256', expiresIn: env_1.env.JWT_ACCESS_EXPIRY, }); }, async generateRefreshToken(user) { - const payload = { id: user.id, email: user.email, role: user.role }; + const userRoles = parseRoles(user); + const payload = { + id: user.id, + email: user.email, + role: (0, roles_1.getPrimaryRole)(userRoles), + roles: userRoles, + }; const token = jsonwebtoken_1.default.sign(payload, env_1.env.JWT_REFRESH_SECRET, { + algorithm: 'HS256', expiresIn: env_1.env.JWT_REFRESH_EXPIRY, }); - // Parse expiry to get a Date const decoded = jsonwebtoken_1.default.decode(token); const expiresAt = new Date(decoded.exp * 1000); await database_1.prisma.refreshToken.create({ diff --git a/api/dist/modules/auth/auth.service.js.map b/api/dist/modules/auth/auth.service.js.map index 4bea957a..eb81f5c4 100644 --- a/api/dist/modules/auth/auth.service.js.map +++ b/api/dist/modules/auth/auth.service.js.map @@ -1 +1 @@ -{"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../../src/modules/auth/auth.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../../src/modules/auth/auth.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/api/dist/modules/docs/docs-files.service.d.ts b/api/dist/modules/docs/docs-files.service.d.ts index 2b8d8325..a214ea10 100644 --- a/api/dist/modules/docs/docs-files.service.d.ts +++ b/api/dist/modules/docs/docs-files.service.d.ts @@ -26,6 +26,17 @@ declare function createFile(relativePath: string, content?: string, isDirectory? declare function deleteFile(relativePath: string): Promise; declare function renameFile(fromPath: string, toPath: string): Promise; declare function isEditableFile(relativePath: string): boolean; +declare function uploadFile(relativePath: string, sourcePath: string): Promise; +declare function invalidateTreeCache(): Promise; +/** + * Flatten a FileNode tree into file-only entries, then filter by + * case-insensitive query match on name or path. Name matches score + * higher so they sort first. + */ +declare function searchFiles(query: string, limit?: number): Promise<{ + name: string; + path: string; +}[]>; export declare const docsFilesService: { listTree: typeof listTree; readFileContent: typeof readFileContent; @@ -33,8 +44,11 @@ export declare const docsFilesService: { createFile: typeof createFile; deleteFile: typeof deleteFile; renameFile: typeof renameFile; + uploadFile: typeof uploadFile; safeResolve: typeof safeResolve; isEditableFile: typeof isEditableFile; + invalidateTreeCache: typeof invalidateTreeCache; + searchFiles: typeof searchFiles; }; export {}; //# sourceMappingURL=docs-files.service.d.ts.map \ No newline at end of file diff --git a/api/dist/modules/docs/docs-files.service.d.ts.map b/api/dist/modules/docs/docs-files.service.d.ts.map index a8d18b0e..5a70d817 100644 --- a/api/dist/modules/docs/docs-files.service.d.ts.map +++ b/api/dist/modules/docs/docs-files.service.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"docs-files.service.d.ts","sourceRoot":"","sources":["../../../src/modules/docs/docs-files.service.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;CACvB;AAaD;;;GAGG;AACH,iBAAS,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAOjD;AAED,qBAAa,kBAAmB,SAAQ,KAAK;;CAK5C;AAED,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,QAAQ,EAAE,MAAM;CAI7B;AAED;;;GAGG;AACH,iBAAe,QAAQ,CAAC,GAAG,GAAE,MAAkB,EAAE,OAAO,GAAE,MAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAiD1F;AAED,iBAAe,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmCpE;AAED,iBAAe,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYpF;AAED,iBAAe,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BtG;AAED,iBAAe,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8B7D;AAED,iBAAe,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBzE;AAED,iBAAS,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAGrD;AAED,eAAO,MAAM,gBAAgB;;;;;;;;;CAS5B,CAAC"} \ No newline at end of file +{"version":3,"file":"docs-files.service.d.ts","sourceRoot":"","sources":["../../../src/modules/docs/docs-files.service.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;CACvB;AAcD;;;GAGG;AACH,iBAAS,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAQjD;AAED,qBAAa,kBAAmB,SAAQ,KAAK;;CAK5C;AAED,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,QAAQ,EAAE,MAAM;CAI7B;AAED;;;GAGG;AACH,iBAAe,QAAQ,CAAC,GAAG,GAAE,MAAkB,EAAE,OAAO,GAAE,MAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAiD1F;AAED,iBAAe,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmCpE;AAED,iBAAe,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYpF;AAED,iBAAe,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BtG;AAED,iBAAe,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8B7D;AAED,iBAAe,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBzE;AAED,iBAAS,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAGrD;AAOD,iBAAe,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBjF;AAED,iBAAe,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAMlD;AAED;;;;GAIG;AACH,iBAAe,WAAW,CACxB,KAAK,EAAE,MAAM,EACb,KAAK,SAAI,GACR,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAyB3C;AAED,eAAO,MAAM,gBAAgB;;;;;;;;;;;;CAY5B,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/docs/docs-files.service.js b/api/dist/modules/docs/docs-files.service.js index edead5a7..36899623 100644 --- a/api/dist/modules/docs/docs-files.service.js +++ b/api/dist/modules/docs/docs-files.service.js @@ -15,7 +15,8 @@ const DOCS_ROOT = (0, path_1.resolve)(env_1.env.MKDOCS_DOCS_PATH); // Redis cache configuration const CACHE_KEY_PREFIX = 'DOCS_CACHE:'; const TREE_CACHE_KEY = `${CACHE_KEY_PREFIX}tree`; -const FILE_CACHE_TTL = 60 * 60; // 1 hour +const TREE_CACHE_TTL = 30; // 30 seconds — short so external changes show quickly +const FILE_CONTENT_CACHE_TTL = 60 * 60; // 1 hour for file content function hashFilePath(path) { return crypto_1.default.createHash('sha256').update(path).digest('hex').substring(0, 16); } @@ -26,7 +27,8 @@ function hashFilePath(path) { function safeResolve(relativePath) { const normalized = (0, path_1.normalize)(relativePath).replace(/^(\.\.(\/|\\|$))+/, ''); const resolved = (0, path_1.resolve)(DOCS_ROOT, normalized); - if (!resolved.startsWith(DOCS_ROOT)) { + // Use DOCS_ROOT + sep to prevent prefix attacks (e.g., /mkdocs/docs-evil matching /mkdocs/docs) + if (resolved !== DOCS_ROOT && !resolved.startsWith(DOCS_ROOT + '/')) { throw new PathTraversalError(); } return resolved; @@ -89,7 +91,7 @@ async function listTree(dir = DOCS_ROOT, relBase = '') { // Cache root result if (dir === DOCS_ROOT && !relBase) { try { - await redis_1.redis.setex(TREE_CACHE_KEY, FILE_CACHE_TTL, JSON.stringify(nodes)); + await redis_1.redis.setex(TREE_CACHE_KEY, TREE_CACHE_TTL, JSON.stringify(nodes)); } catch (err) { logger_1.logger.warn('Failed to cache docs tree:', err); @@ -118,7 +120,7 @@ async function readFileContent(relativePath) { const content = await (0, promises_1.readFile)(fullPath, 'utf-8'); // Cache the result try { - await redis_1.redis.setex(cacheKey, FILE_CACHE_TTL, content); + await redis_1.redis.setex(cacheKey, FILE_CONTENT_CACHE_TTL, content); } catch (err) { logger_1.logger.warn('Failed to cache file content:', err); @@ -235,6 +237,65 @@ function isEditableFile(relativePath) { const ext = (0, path_1.extname)(relativePath).toLowerCase(); return ['.md', '.txt', '.yml', '.yaml', '.json', '.css', '.html', '.js'].includes(ext); } +const ALLOWED_UPLOAD_EXTENSIONS = new Set([ + '.png', '.jpg', '.jpeg', '.gif', '.svg', '.webp', '.ico', + '.pdf', '.zip', +]); +async function uploadFile(relativePath, sourcePath) { + const ext = (0, path_1.extname)(relativePath).toLowerCase(); + if (!ALLOWED_UPLOAD_EXTENSIONS.has(ext)) { + throw new Error(`File type not allowed: ${ext}`); + } + const fullPath = safeResolve(relativePath); + await (0, promises_1.mkdir)((0, path_1.dirname)(fullPath), { recursive: true }); + await (0, promises_1.copyFile)(sourcePath, fullPath); + // Invalidate tree cache (structure changed) + try { + await redis_1.redis.del(TREE_CACHE_KEY); + } + catch (err) { + logger_1.logger.warn('Failed to invalidate tree cache after upload:', err); + } +} +async function invalidateTreeCache() { + try { + await redis_1.redis.del(TREE_CACHE_KEY); + } + catch (err) { + logger_1.logger.warn('Failed to invalidate tree cache:', err); + } +} +/** + * Flatten a FileNode tree into file-only entries, then filter by + * case-insensitive query match on name or path. Name matches score + * higher so they sort first. + */ +async function searchFiles(query, limit = 5) { + const tree = await listTree(); + const q = query.toLowerCase(); + const matches = []; + function walk(nodes) { + for (const node of nodes) { + if (node.isDirectory) { + if (node.children) + walk(node.children); + } + else { + const nameLower = node.name.toLowerCase(); + const pathLower = node.path.toLowerCase(); + if (nameLower.includes(q)) { + matches.push({ name: node.name, path: node.path, score: 2 }); + } + else if (pathLower.includes(q)) { + matches.push({ name: node.name, path: node.path, score: 1 }); + } + } + } + } + walk(tree); + matches.sort((a, b) => b.score - a.score); + return matches.slice(0, limit).map(({ name, path }) => ({ name, path })); +} exports.docsFilesService = { listTree, readFileContent, @@ -242,7 +303,10 @@ exports.docsFilesService = { createFile, deleteFile, renameFile, + uploadFile, safeResolve, isEditableFile, + invalidateTreeCache, + searchFiles, }; //# sourceMappingURL=docs-files.service.js.map \ No newline at end of file diff --git a/api/dist/modules/docs/docs-files.service.js.map b/api/dist/modules/docs/docs-files.service.js.map index f5ea4532..d9e0414a 100644 --- a/api/dist/modules/docs/docs-files.service.js.map +++ b/api/dist/modules/docs/docs-files.service.js.map @@ -1 +1 @@ -{"version":3,"file":"docs-files.service.js","sourceRoot":"","sources":["../../../src/modules/docs/docs-files.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"docs-files.service.js","sourceRoot":"","sources":["../../../src/modules/docs/docs-files.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/api/dist/modules/docs/docs.routes.d.ts.map b/api/dist/modules/docs/docs.routes.d.ts.map index 27354af0..7726e9d3 100644 --- a/api/dist/modules/docs/docs.routes.d.ts.map +++ b/api/dist/modules/docs/docs.routes.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"docs.routes.d.ts","sourceRoot":"","sources":["../../../src/modules/docs/docs.routes.ts"],"names":[],"mappings":"AAiQA,eAAO,MAAM,UAAU,4CAAS,CAAC"} \ No newline at end of file +{"version":3,"file":"docs.routes.d.ts","sourceRoot":"","sources":["../../../src/modules/docs/docs.routes.ts"],"names":[],"mappings":"AA4YA,eAAO,MAAM,UAAU,4CAAS,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/docs/docs.routes.js b/api/dist/modules/docs/docs.routes.js index 8bdbe8a5..543e9922 100644 --- a/api/dist/modules/docs/docs.routes.js +++ b/api/dist/modules/docs/docs.routes.js @@ -1,21 +1,31 @@ "use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; Object.defineProperty(exports, "__esModule", { value: true }); exports.docsRouter = void 0; const express_1 = require("express"); +const multer_1 = __importDefault(require("multer")); +const promises_1 = require("fs/promises"); +const path_1 = require("path"); const auth_middleware_1 = require("../../middleware/auth.middleware"); const rbac_middleware_1 = require("../../middleware/rbac.middleware"); const env_1 = require("../../config/env"); +const roles_1 = require("../../utils/roles"); const logger_1 = require("../../utils/logger"); const health_check_1 = require("../../utils/health-check"); const metrics_1 = require("../../utils/metrics"); const docs_files_service_1 = require("./docs-files.service"); +const docs_collab_service_1 = require("./docs-collab.service"); const mkdocs_config_service_1 = require("./mkdocs-config.service"); +const header_builder_service_1 = require("./header-builder.service"); +const header_builder_schemas_1 = require("./header-builder.schemas"); const router = (0, express_1.Router)(); router.use(auth_middleware_1.authenticate); router.use(rbac_middleware_1.requireNonTemp); // Removed duplicated isServiceOnline - now using shared utility from utils/health-check.ts -// GET /api/docs/status — check MkDocs and Code Server availability -router.get('/status', async (_req, res, next) => { +// GET /api/docs/status — check MkDocs and Code Server availability (content editors only) +router.get('/status', (0, rbac_middleware_1.requireRole)(...roles_1.CONTENT_ROLES), async (_req, res, next) => { try { const [mkdocsOnline, codeServerOnline, siteServerOnline] = await Promise.all([ (0, health_check_1.isServiceOnline)(env_1.env.MKDOCS_PREVIEW_URL), @@ -33,8 +43,8 @@ router.get('/status', async (_req, res, next) => { next(err); } }); -// GET /api/docs/config — return public-facing port numbers for iframe URLs -router.get('/config', async (_req, res, _next) => { +// GET /api/docs/config — return public-facing port numbers for iframe URLs (content editors only) +router.get('/config', (0, rbac_middleware_1.requireRole)(...roles_1.CONTENT_ROLES), async (_req, res, _next) => { res.json({ codeServerPort: env_1.env.CODE_SERVER_PORT, mkdocsPort: env_1.env.MKDOCS_PORT, @@ -42,8 +52,8 @@ router.get('/config', async (_req, res, _next) => { }); }); // --- MkDocs Config Endpoints --- -// GET /api/docs/mkdocs-config — read raw mkdocs.yml content -router.get('/mkdocs-config', async (_req, res, next) => { +// GET /api/docs/mkdocs-config — read raw mkdocs.yml content (content editors only) +router.get('/mkdocs-config', (0, rbac_middleware_1.requireRole)(...roles_1.CONTENT_ROLES), async (_req, res, next) => { try { const content = await mkdocs_config_service_1.mkdocsConfigService.readConfig(); res.json({ content }); @@ -54,7 +64,7 @@ router.get('/mkdocs-config', async (_req, res, next) => { } }); // PUT /api/docs/mkdocs-config — validate + write mkdocs.yml (SUPER_ADMIN only) -router.put('/mkdocs-config', (0, rbac_middleware_1.requireRole)('SUPER_ADMIN'), async (req, res, next) => { +router.put('/mkdocs-config', (0, rbac_middleware_1.requireRole)(...roles_1.CONTENT_ROLES), async (req, res, next) => { try { const { content } = req.body; if (typeof content !== 'string') { @@ -73,8 +83,8 @@ router.put('/mkdocs-config', (0, rbac_middleware_1.requireRole)('SUPER_ADMIN'), next(err); } }); -// POST /api/docs/build — trigger mkdocs build in container (SUPER_ADMIN only) -router.post('/build', (0, rbac_middleware_1.requireRole)('SUPER_ADMIN'), async (_req, res, next) => { +// POST /api/docs/build — trigger mkdocs build in container +router.post('/build', (0, rbac_middleware_1.requireRole)(...roles_1.CONTENT_ROLES), async (_req, res, next) => { try { const result = await mkdocs_config_service_1.mkdocsConfigService.triggerBuild(); res.json(result); @@ -84,11 +94,95 @@ router.post('/build', (0, rbac_middleware_1.requireRole)('SUPER_ADMIN'), async ( next(err); } }); +// --- Header Builder --- +// GET /api/docs/header-config — read header nav bar config (content editors only) +router.get('/header-config', (0, rbac_middleware_1.requireRole)(...roles_1.CONTENT_ROLES), async (_req, res, next) => { + try { + const config = await header_builder_service_1.headerBuilderService.readConfig(); + res.json(config); + } + catch (err) { + logger_1.logger.error('Failed to read header config', err); + next(err); + } +}); +// PUT /api/docs/header-config — save header nav bar config + regenerate template +router.put('/header-config', (0, rbac_middleware_1.requireRole)(...roles_1.CONTENT_ROLES), async (req, res, next) => { + try { + const parsed = header_builder_schemas_1.headerConfigSchema.safeParse(req.body); + if (!parsed.success) { + res.status(400).json({ + error: { message: 'Invalid header config', code: 'VALIDATION_ERROR', details: parsed.error.flatten().fieldErrors }, + }); + return; + } + await header_builder_service_1.headerBuilderService.writeConfig(parsed.data); + // Invalidate docs file tree cache so the new main.html shows up + await docs_files_service_1.docsFilesService.invalidateTreeCache(); + res.json({ success: true }); + } + catch (err) { + logger_1.logger.error('Failed to save header config', err); + next(err); + } +}); +// --- File Upload --- +const ALLOWED_UPLOAD_EXTENSIONS = new Set([ + '.png', '.jpg', '.jpeg', '.gif', '.svg', '.webp', '.ico', + '.pdf', '.zip', +]); +const upload = (0, multer_1.default)({ + storage: multer_1.default.diskStorage({}), // temp dir + limits: { fileSize: 20 * 1024 * 1024 }, // 20MB + fileFilter: (_req, file, cb) => { + const ext = (0, path_1.extname)(file.originalname).toLowerCase(); + if (ALLOWED_UPLOAD_EXTENSIONS.has(ext)) { + cb(null, true); + } + else { + cb(new Error(`File type not allowed: ${ext}`)); + } + }, +}); +// POST /api/docs/upload — upload binary file (image, pdf, etc.) +router.post('/upload', (0, rbac_middleware_1.requireRole)(...roles_1.CONTENT_ROLES), upload.single('file'), async (req, res, next) => { + const tempPath = req.file?.path; + try { + metrics_1.cm_docs_operations.inc({ operation: 'upload' }); + if (!req.file) { + res.status(400).json({ error: { message: 'No file provided', code: 'VALIDATION_ERROR' } }); + return; + } + const targetDir = req.body.path || ''; + const fileName = (0, path_1.basename)(req.file.originalname).replace(/[^a-zA-Z0-9._-]/g, '_'); + const relativePath = targetDir ? `${targetDir}/${fileName}` : fileName; + await docs_files_service_1.docsFilesService.uploadFile(relativePath, req.file.path); + // Clean up temp file + try { + await (0, promises_1.rm)(req.file.path); + } + catch { /* ignore */ } + res.json({ success: true, path: relativePath }); + } + catch (err) { + // Clean up temp file on error + if (tempPath) { + try { + await (0, promises_1.rm)(tempPath); + } + catch { /* ignore */ } + } + handleFileError(err, res, next); + } +}); // --- File Management Endpoints --- -// GET /api/docs/files — list file tree -router.get('/files', async (_req, res, next) => { +// GET /api/docs/files — list file tree (content editors only) +router.get('/files', (0, rbac_middleware_1.requireRole)(...roles_1.CONTENT_ROLES), async (req, res, next) => { try { metrics_1.cm_docs_operations.inc({ operation: 'list' }); + if (req.query['force'] === 'true') { + await docs_files_service_1.docsFilesService.invalidateTreeCache(); + } const tree = await docs_files_service_1.docsFilesService.listTree(); res.json(tree); } @@ -97,8 +191,25 @@ router.get('/files', async (_req, res, next) => { next(err); } }); +// GET /api/docs/files/search — search files by name/path (content editors only) +router.get('/files/search', (0, rbac_middleware_1.requireRole)(...roles_1.CONTENT_ROLES), async (req, res, next) => { + try { + const search = String(req.query['search'] ?? req.query['q'] ?? '').trim(); + if (!search) { + res.json({ files: [] }); + return; + } + const limit = Math.min(Math.max(Number(req.query['limit']) || 5, 1), 20); + const files = await docs_files_service_1.docsFilesService.searchFiles(search, limit); + res.json({ files }); + } + catch (err) { + logger_1.logger.error('Failed to search docs files', err); + next(err); + } +}); // POST /api/docs/files/rename — rename/move file -router.post('/files/rename', async (req, res, next) => { +router.post('/files/rename', (0, rbac_middleware_1.requireRole)(...roles_1.CONTENT_ROLES), async (req, res, next) => { try { metrics_1.cm_docs_operations.inc({ operation: 'rename' }); const { from, to } = req.body; @@ -107,14 +218,16 @@ router.post('/files/rename', async (req, res, next) => { return; } await docs_files_service_1.docsFilesService.renameFile(from, to); + // Invalidate old path's collaboration state + docs_collab_service_1.docsCollabService.invalidateDocument(from).catch(() => { }); res.json({ success: true }); } catch (err) { handleFileError(err, res, next); } }); -// GET /api/docs/files/* — read file content -router.get('/files/*', async (req, res, next) => { +// GET /api/docs/files/* — read file content (content editors only) +router.get('/files/*', (0, rbac_middleware_1.requireRole)(...roles_1.CONTENT_ROLES), async (req, res, next) => { try { metrics_1.cm_docs_operations.inc({ operation: 'read' }); const filePath = extractWildcardPath(req); @@ -130,7 +243,7 @@ router.get('/files/*', async (req, res, next) => { } }); // PUT /api/docs/files/* — write/update file content -router.put('/files/*', async (req, res, next) => { +router.put('/files/*', (0, rbac_middleware_1.requireRole)(...roles_1.CONTENT_ROLES), async (req, res, next) => { try { metrics_1.cm_docs_operations.inc({ operation: 'write' }); const filePath = extractWildcardPath(req); @@ -144,6 +257,8 @@ router.put('/files/*', async (req, res, next) => { return; } await docs_files_service_1.docsFilesService.writeFileContent(filePath, content); + // Invalidate collaboration state so next session starts fresh from disk + docs_collab_service_1.docsCollabService.invalidateDocument(filePath).catch(() => { }); res.json({ success: true, path: filePath }); } catch (err) { @@ -151,7 +266,7 @@ router.put('/files/*', async (req, res, next) => { } }); // POST /api/docs/files/* — create new file or folder -router.post('/files/*', async (req, res, next) => { +router.post('/files/*', (0, rbac_middleware_1.requireRole)(...roles_1.CONTENT_ROLES), async (req, res, next) => { try { metrics_1.cm_docs_operations.inc({ operation: 'create' }); const filePath = extractWildcardPath(req); @@ -168,7 +283,7 @@ router.post('/files/*', async (req, res, next) => { } }); // DELETE /api/docs/files/* — delete file or empty folder -router.delete('/files/*', async (req, res, next) => { +router.delete('/files/*', (0, rbac_middleware_1.requireRole)(...roles_1.CONTENT_ROLES), async (req, res, next) => { try { metrics_1.cm_docs_operations.inc({ operation: 'delete' }); const filePath = extractWildcardPath(req); @@ -177,6 +292,8 @@ router.delete('/files/*', async (req, res, next) => { return; } await docs_files_service_1.docsFilesService.deleteFile(filePath); + // Invalidate collaboration state for deleted file + docs_collab_service_1.docsCollabService.invalidateDocument(filePath).catch(() => { }); res.json({ success: true }); } catch (err) { diff --git a/api/dist/modules/docs/docs.routes.js.map b/api/dist/modules/docs/docs.routes.js.map index 4140b569..b273362e 100644 --- a/api/dist/modules/docs/docs.routes.js.map +++ b/api/dist/modules/docs/docs.routes.js.map @@ -1 +1 @@ -{"version":3,"file":"docs.routes.js","sourceRoot":"","sources":["../../../src/modules/docs/docs.routes.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"docs.routes.js","sourceRoot":"","sources":["../../../src/modules/docs/docs.routes.ts"],"names":[],"mappings":";;;;;;AAAA,qCAAkE;AAClE,oDAA4B;AAC5B,0CAAiC;AACjC,+BAAyC;AACzC,sEAAgE;AAChE,sEAA+E;AAC/E,0CAAuC;AACvC,6CAAkD;AAClD,+CAA4C;AAC5C,2DAA2D;AAC3D,iDAAyD;AACzD,6DAA+F;AAC/F,+DAA0D;AAC1D,mEAA8D;AAC9D,qEAAgE;AAChE,qEAA8D;AAE9D,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;AACxB,MAAM,CAAC,GAAG,CAAC,8BAAY,CAAC,CAAC;AACzB,MAAM,CAAC,GAAG,CAAC,gCAAc,CAAC,CAAC;AAE3B,2FAA2F;AAE3F,0FAA0F;AAC1F,MAAM,CAAC,GAAG,CACR,SAAS,EACT,IAAA,6BAAW,EAAC,GAAG,qBAAa,CAAC,EAC7B,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACzD,IAAI,CAAC;QACH,MAAM,CAAC,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC3E,IAAA,8BAAe,EAAC,SAAG,CAAC,kBAAkB,CAAC;YACvC,IAAA,8BAAe,EAAC,SAAG,CAAC,eAAe,CAAC;YACpC,IAAA,8BAAe,EAAC,SAAG,CAAC,sBAAsB,CAAC;SAC5C,CAAC,CAAC;QAEH,GAAG,CAAC,IAAI,CAAC;YACP,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,SAAG,CAAC,kBAAkB,EAAE;YAC7D,UAAU,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,SAAG,CAAC,eAAe,EAAE;YAClE,UAAU,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,SAAG,CAAC,sBAAsB,EAAE;SAC1E,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,kGAAkG;AAClG,MAAM,CAAC,GAAG,CACR,SAAS,EACT,IAAA,6BAAW,EAAC,GAAG,qBAAa,CAAC,EAC7B,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,KAAmB,EAAE,EAAE;IAC1D,GAAG,CAAC,IAAI,CAAC;QACP,cAAc,EAAE,SAAG,CAAC,gBAAgB;QACpC,UAAU,EAAE,SAAG,CAAC,WAAW;QAC3B,cAAc,EAAE,SAAG,CAAC,uBAAuB;KAC5C,CAAC,CAAC;AACL,CAAC,CACF,CAAC;AAEF,kCAAkC;AAElC,mFAAmF;AACnF,MAAM,CAAC,GAAG,CACR,gBAAgB,EAChB,IAAA,6BAAW,EAAC,GAAG,qBAAa,CAAC,EAC7B,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACzD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,2CAAmB,CAAC,UAAU,EAAE,CAAC;QACvD,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;QAClD,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,+EAA+E;AAC/E,MAAM,CAAC,GAAG,CACR,gBAAgB,EAChB,IAAA,6BAAW,EAAC,GAAG,qBAAa,CAAC,EAC7B,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,IAA4B,CAAC;QACrD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,yBAAyB,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;YAClG,OAAO;QACT,CAAC;QACD,MAAM,2CAAmB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC/C,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAAa,CAAC,OAAO,EAAE,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YACvD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAG,GAAa,CAAC,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;YAC/F,OAAO;QACT,CAAC;QACD,eAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;QACnD,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,2DAA2D;AAC3D,MAAM,CAAC,IAAI,CACT,QAAQ,EACR,IAAA,6BAAW,EAAC,GAAG,qBAAa,CAAC,EAC7B,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACzD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,2CAAmB,CAAC,YAAY,EAAE,CAAC;QACxD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,yBAAyB;AAEzB,kFAAkF;AAClF,MAAM,CAAC,GAAG,CACR,gBAAgB,EAChB,IAAA,6BAAW,EAAC,GAAG,qBAAa,CAAC,EAC7B,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACzD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,6CAAoB,CAAC,UAAU,EAAE,CAAC;QACvD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;QAClD,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,iFAAiF;AACjF,MAAM,CAAC,GAAG,CACR,gBAAgB,EAChB,IAAA,6BAAW,EAAC,GAAG,qBAAa,CAAC,EAC7B,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,2CAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,KAAK,EAAE,EAAE,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE;aACnH,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,MAAM,6CAAoB,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpD,gEAAgE;QAChE,MAAM,qCAAgB,CAAC,mBAAmB,EAAE,CAAC;QAC7C,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;QAClD,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,sBAAsB;AAEtB,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC;IACxC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IACxD,MAAM,EAAE,MAAM;CACf,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,IAAA,gBAAM,EAAC;IACpB,OAAO,EAAE,gBAAM,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,WAAW;IAC5C,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,OAAO;IAC/C,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE;QAC7B,MAAM,GAAG,GAAG,IAAA,cAAO,EAAC,IAAI,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;QACrD,IAAI,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,IAAI,KAAK,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH,gEAAgE;AAChE,MAAM,CAAC,IAAI,CACT,SAAS,EACT,IAAA,6BAAW,EAAC,GAAG,qBAAa,CAAC,EAC7B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EACrB,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;IAChC,IAAI,CAAC;QACH,4BAAkB,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACd,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;YAC3F,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAI,GAAG,CAAC,IAA0B,CAAC,IAAI,IAAI,EAAE,CAAC;QAC7D,MAAM,QAAQ,GAAG,IAAA,eAAQ,EAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QAClF,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QAEvE,MAAM,qCAAgB,CAAC,UAAU,CAAC,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/D,qBAAqB;QACrB,IAAI,CAAC;YAAC,MAAM,IAAA,aAAE,EAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAEvD,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,8BAA8B;QAC9B,IAAI,QAAQ,EAAE,CAAC;YAAC,IAAI,CAAC;gBAAC,MAAM,IAAA,aAAE,EAAC,QAAQ,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAAC,CAAC;QACpE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;AACH,CAAC,CACF,CAAC;AAEF,oCAAoC;AAEpC,8DAA8D;AAC9D,MAAM,CAAC,GAAG,CACR,QAAQ,EACR,IAAA,6BAAW,EAAC,GAAG,qBAAa,CAAC,EAC7B,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,4BAAkB,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9C,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;YAClC,MAAM,qCAAgB,CAAC,mBAAmB,EAAE,CAAC;QAC/C,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,qCAAgB,CAAC,QAAQ,EAAE,CAAC;QAC/C,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,gFAAgF;AAChF,MAAM,CAAC,GAAG,CACR,eAAe,EACf,IAAA,6BAAW,EAAC,GAAG,qBAAa,CAAC,EAC7B,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1E,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YACxB,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,MAAM,qCAAgB,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAChE,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACtB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,iDAAiD;AACjD,MAAM,CAAC,IAAI,CACT,eAAe,EACf,IAAA,6BAAW,EAAC,GAAG,qBAAa,CAAC,EAC7B,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,4BAAkB,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChD,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,IAAsC,CAAC;QAChE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACjB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,yCAAyC,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;YAClH,OAAO;QACT,CAAC;QACD,MAAM,qCAAgB,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC5C,4CAA4C;QAC5C,uCAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC3D,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;AACH,CAAC,CACF,CAAC;AAEF,mEAAmE;AACnE,MAAM,CAAC,GAAG,CACR,UAAU,EACV,IAAA,6BAAW,EAAC,GAAG,qBAAa,CAAC,EAC7B,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,4BAAkB,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;YAC7F,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,qCAAgB,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACjE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;AACH,CAAC,CACF,CAAC;AAEF,oDAAoD;AACpD,MAAM,CAAC,GAAG,CACR,UAAU,EACV,IAAA,6BAAW,EAAC,GAAG,qBAAa,CAAC,EAC7B,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,4BAAkB,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;YAC7F,OAAO;QACT,CAAC;QACD,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,IAA4B,CAAC;QACrD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,yBAAyB,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;YAClG,OAAO;QACT,CAAC;QACD,MAAM,qCAAgB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC3D,wEAAwE;QACxE,uCAAiB,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC/D,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;AACH,CAAC,CACF,CAAC;AAEF,qDAAqD;AACrD,MAAM,CAAC,IAAI,CACT,UAAU,EACV,IAAA,6BAAW,EAAC,GAAG,qBAAa,CAAC,EAC7B,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,4BAAkB,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;YAC7F,OAAO;QACT,CAAC;QACD,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,IAAmD,CAAC;QACzF,MAAM,qCAAgB,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QAClE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;AACH,CAAC,CACF,CAAC;AAEF,yDAAyD;AACzD,MAAM,CAAC,MAAM,CACX,UAAU,EACV,IAAA,6BAAW,EAAC,GAAG,qBAAa,CAAC,EAC7B,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,4BAAkB,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;YAC7F,OAAO;QACT,CAAC;QACD,MAAM,qCAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC5C,kDAAkD;QAClD,uCAAiB,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC/D,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;AACH,CAAC,CACF,CAAC;AAEF;;;GAGG;AACH,SAAS,mBAAmB,CAAC,GAAY;IACvC,mDAAmD;IACnD,MAAM,MAAM,GAAG,GAAG,CAAC,MAA2C,CAAC;IAC/D,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;QAAE,OAAO,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjE,OAAQ,aAAwB,IAAI,EAAE,CAAC;AACzC,CAAC;AAED,SAAS,eAAe,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB;IACtE,IAAI,GAAG,YAAY,uCAAkB,EAAE,CAAC;QACtC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,4BAA4B,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;QAC9F,OAAO;IACT,CAAC;IACD,IAAI,GAAG,YAAY,sCAAiB,EAAE,CAAC;QACrC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAG,GAAa,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;QACxF,OAAO;IACT,CAAC;IACD,IAAK,GAAa,CAAC,OAAO,EAAE,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACzD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAG,GAAa,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;QACvF,OAAO;IACT,CAAC;IACD,IAAK,GAAa,CAAC,OAAO,KAAK,wBAAwB,EAAE,CAAC;QACxD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;QACjG,OAAO;IACT,CAAC;IACD,eAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;IAChD,IAAI,CAAC,GAAG,CAAC,CAAC;AACZ,CAAC;AAEY,QAAA,UAAU,GAAG,MAAM,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/docs/mkdocs-config.service.d.ts b/api/dist/modules/docs/mkdocs-config.service.d.ts index 19199250..069e13fa 100644 --- a/api/dist/modules/docs/mkdocs-config.service.d.ts +++ b/api/dist/modules/docs/mkdocs-config.service.d.ts @@ -12,7 +12,8 @@ declare function validateYaml(content: string): string | null; declare function readConfig(): Promise; declare function writeConfig(content: string): Promise; /** - * Execute `mkdocs build` inside the running MkDocs container via Docker Engine API. + * Trigger `mkdocs build --clean` via the build trigger HTTP server + * running inside the MkDocs container on port 8001. */ declare function triggerBuild(): Promise<{ success: boolean; diff --git a/api/dist/modules/docs/mkdocs-config.service.d.ts.map b/api/dist/modules/docs/mkdocs-config.service.d.ts.map index 2e1d6101..e010614c 100644 --- a/api/dist/modules/docs/mkdocs-config.service.d.ts.map +++ b/api/dist/modules/docs/mkdocs-config.service.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"mkdocs-config.service.d.ts","sourceRoot":"","sources":["../../../src/modules/docs/mkdocs-config.service.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiB,QAAQ,EAAE,MAAM,MAAM,CAAC;AAuB/C;;;GAGG;AACH,iBAAS,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAS9C;AAED;;;GAGG;AACH,iBAAS,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWpD;AAED,iBAAe,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAE3C;AAED,iBAAe,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAezD;AA8DD;;GAEG;AACH,iBAAe,YAAY,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAgE7F;AAED,eAAO,MAAM,mBAAmB;;;;;;CAM/B,CAAC"} \ No newline at end of file +{"version":3,"file":"mkdocs-config.service.d.ts","sourceRoot":"","sources":["../../../src/modules/docs/mkdocs-config.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,QAAQ,EAAE,MAAM,MAAM,CAAC;AAqB/C;;;GAGG;AACH,iBAAS,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAS9C;AAED;;;GAGG;AACH,iBAAS,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWpD;AAED,iBAAe,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAE3C;AAED,iBAAe,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAezD;AAED;;;GAGG;AACH,iBAAe,YAAY,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAyB7F;AAED,eAAO,MAAM,mBAAmB;;;;;;CAM/B,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/docs/mkdocs-config.service.js b/api/dist/modules/docs/mkdocs-config.service.js index 17496b42..68e9b1ff 100644 --- a/api/dist/modules/docs/mkdocs-config.service.js +++ b/api/dist/modules/docs/mkdocs-config.service.js @@ -2,11 +2,9 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.mkdocsConfigService = void 0; const promises_1 = require("fs/promises"); -const http_1 = require("http"); const env_1 = require("../../config/env"); const logger_1 = require("../../utils/logger"); const yaml_1 = require("yaml"); -const DOCKER_SOCKET = '/var/run/docker.sock'; /** * Custom YAML tag schema to preserve !!python/name: and !!python/object: tags. * Without this, the yaml library would reject these custom tags. @@ -73,102 +71,22 @@ async function writeConfig(content) { await (0, promises_1.writeFile)(env_1.env.MKDOCS_CONFIG_PATH, content, 'utf-8'); } /** - * Make a request to the Docker Engine API over Unix socket. - */ -function dockerRequest(method, path, body) { - return new Promise((resolve, reject) => { - const options = { - socketPath: DOCKER_SOCKET, - path, - method, - headers: body - ? { 'Content-Type': 'application/json' } - : undefined, - }; - const req = (0, http_1.request)(options, (res) => { - const chunks = []; - res.on('data', (chunk) => chunks.push(chunk)); - res.on('end', () => { - resolve({ - statusCode: res.statusCode || 0, - body: Buffer.concat(chunks).toString(), - }); - }); - }); - req.on('error', reject); - if (body) { - req.write(JSON.stringify(body)); - } - req.end(); - }); -} -/** - * Read raw output from a Docker exec start stream. - * Docker multiplexes stdout/stderr with 8-byte headers. - */ -function demuxDockerStream(raw) { - const lines = []; - let offset = 0; - while (offset < raw.length) { - if (offset + 8 > raw.length) - break; - // byte 0: stream type (1=stdout, 2=stderr) - const size = raw.readUInt32BE(offset + 4); - offset += 8; - if (offset + size > raw.length) { - lines.push(raw.subarray(offset).toString('utf-8')); - break; - } - lines.push(raw.subarray(offset, offset + size).toString('utf-8')); - offset += size; - } - return lines.join(''); -} -/** - * Execute `mkdocs build` inside the running MkDocs container via Docker Engine API. + * Trigger `mkdocs build --clean` via the build trigger HTTP server + * running inside the MkDocs container on port 8001. */ async function triggerBuild() { - const containerName = env_1.env.MKDOCS_CONTAINER_NAME; + const buildUrl = `${env_1.env.MKDOCS_PREVIEW_URL.replace(':8000', ':8001')}/build`; const startTime = Date.now(); try { - // 1. Create exec instance - const execCreate = await dockerRequest('POST', `/containers/${containerName}/exec`, { - AttachStdout: true, - AttachStderr: true, - Cmd: ['mkdocs', 'build', '--clean'], + const controller = new AbortController(); + const timeout = setTimeout(() => controller.abort(), 130_000); + const response = await fetch(buildUrl, { + method: 'POST', + signal: controller.signal, }); - if (execCreate.statusCode !== 201) { - throw new Error(`Failed to create exec: ${execCreate.body}`); - } - const { Id: execId } = JSON.parse(execCreate.body); - // 2. Start exec and collect output - const execOutput = await new Promise((resolve, reject) => { - const options = { - socketPath: DOCKER_SOCKET, - path: `/exec/${execId}/start`, - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - }; - const req = (0, http_1.request)(options, (res) => { - const chunks = []; - res.on('data', (chunk) => chunks.push(chunk)); - res.on('end', () => resolve(Buffer.concat(chunks))); - }); - req.on('error', reject); - req.write(JSON.stringify({ Detach: false, Tty: false })); - req.end(); - }); - const output = demuxDockerStream(execOutput); - // 3. Check exit code - const execInspect = await dockerRequest('GET', `/exec/${execId}/json`); - const inspectData = JSON.parse(execInspect.body); - const exitCode = inspectData.ExitCode ?? -1; - const duration = Date.now() - startTime; - return { - success: exitCode === 0, - output: output || '(no output)', - duration, - }; + clearTimeout(timeout); + const data = await response.json(); + return data; } catch (err) { const duration = Date.now() - startTime; diff --git a/api/dist/modules/docs/mkdocs-config.service.js.map b/api/dist/modules/docs/mkdocs-config.service.js.map index 09fd5054..2d4eb16c 100644 --- a/api/dist/modules/docs/mkdocs-config.service.js.map +++ b/api/dist/modules/docs/mkdocs-config.service.js.map @@ -1 +1 @@ -{"version":3,"file":"mkdocs-config.service.js","sourceRoot":"","sources":["../../../src/modules/docs/mkdocs-config.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"mkdocs-config.service.js","sourceRoot":"","sources":["../../../src/modules/docs/mkdocs-config.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/api/dist/modules/email-templates/email-templates-admin.routes.d.ts.map b/api/dist/modules/email-templates/email-templates-admin.routes.d.ts.map index 941b183e..139fa47f 100644 --- a/api/dist/modules/email-templates/email-templates-admin.routes.d.ts.map +++ b/api/dist/modules/email-templates/email-templates-admin.routes.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"email-templates-admin.routes.d.ts","sourceRoot":"","sources":["../../../src/modules/email-templates/email-templates-admin.routes.ts"],"names":[],"mappings":"AAqBA,QAAA,MAAM,MAAM,4CAAW,CAAC;AA8UxB,eAAe,MAAM,CAAC"} \ No newline at end of file +{"version":3,"file":"email-templates-admin.routes.d.ts","sourceRoot":"","sources":["../../../src/modules/email-templates/email-templates-admin.routes.ts"],"names":[],"mappings":"AAuBA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAqUxB,eAAe,MAAM,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/email-templates/email-templates-admin.routes.js b/api/dist/modules/email-templates/email-templates-admin.routes.js index 1924c4ee..49d9bfb2 100644 --- a/api/dist/modules/email-templates/email-templates-admin.routes.js +++ b/api/dist/modules/email-templates/email-templates-admin.routes.js @@ -12,19 +12,21 @@ const logger_1 = require("../../utils/logger"); const auth_middleware_1 = require("../../middleware/auth.middleware"); const rbac_middleware_1 = require("../../middleware/rbac.middleware"); const client_1 = require("@prisma/client"); +const roles_1 = require("../../utils/roles"); const express_rate_limit_1 = __importDefault(require("express-rate-limit")); const rate_limit_redis_1 = __importDefault(require("rate-limit-redis")); const redis_1 = require("../../config/redis"); +const seed_email_templates_1 = require("../../scripts/seed-email-templates"); const router = (0, express_1.Router)(); // All email template routes require authentication router.use(auth_middleware_1.authenticate); -// All routes require admin role (SUPER_ADMIN, INFLUENCE_ADMIN, or MAP_ADMIN) -const requireAdminRole = (0, rbac_middleware_1.requireRole)(client_1.UserRole.SUPER_ADMIN, client_1.UserRole.INFLUENCE_ADMIN, client_1.UserRole.MAP_ADMIN); +// All routes require broadcast admin role +const requireBroadcastRole = (0, rbac_middleware_1.requireRole)(...roles_1.BROADCAST_ROLES); /** * List email templates * GET /email-templates */ -router.get('/', requireAdminRole, (0, validate_1.validate)(email_templates_schemas_1.listEmailTemplatesSchema, 'query'), async (req, res) => { +router.get('/', requireBroadcastRole, (0, validate_1.validate)(email_templates_schemas_1.listEmailTemplatesSchema, 'query'), async (req, res) => { try { const result = await email_templates_service_1.emailTemplatesService.list(req.query); res.json(result); @@ -38,7 +40,7 @@ router.get('/', requireAdminRole, (0, validate_1.validate)(email_templates_schem * Get single email template * GET /email-templates/:id */ -router.get('/:id', requireAdminRole, async (req, res) => { +router.get('/:id', requireBroadcastRole, async (req, res) => { try { const template = await email_templates_service_1.emailTemplatesService.getById(req.params.id); res.json(template); @@ -56,7 +58,7 @@ router.get('/:id', requireAdminRole, async (req, res) => { * Create email template * POST /email-templates */ -router.post('/', requireAdminRole, (0, validate_1.validate)(email_templates_schemas_1.createEmailTemplateSchema), async (req, res) => { +router.post('/', requireBroadcastRole, (0, validate_1.validate)(email_templates_schemas_1.createEmailTemplateSchema), async (req, res) => { try { const template = await email_templates_service_1.emailTemplatesService.create(req.body, req.user.id); res.status(201).json(template); @@ -78,7 +80,7 @@ router.post('/', requireAdminRole, (0, validate_1.validate)(email_templates_sche * Update email template * PUT /email-templates/:id */ -router.put('/:id', requireAdminRole, (0, validate_1.validate)(email_templates_schemas_1.updateEmailTemplateSchema), async (req, res) => { +router.put('/:id', requireBroadcastRole, (0, validate_1.validate)(email_templates_schemas_1.updateEmailTemplateSchema), async (req, res) => { try { const template = await email_templates_service_1.emailTemplatesService.update(req.params.id, req.body, req.user.id); // Clear cache so changes take effect immediately @@ -103,7 +105,7 @@ router.put('/:id', requireAdminRole, (0, validate_1.validate)(email_templates_sc * Delete email template * DELETE /email-templates/:id */ -router.delete('/:id', requireAdminRole, async (req, res) => { +router.delete('/:id', requireBroadcastRole, async (req, res) => { try { // Fetch template before deleting to get the key const template = await email_templates_service_1.emailTemplatesService.getById(req.params.id); @@ -130,7 +132,7 @@ router.delete('/:id', requireAdminRole, async (req, res) => { * Get version history * GET /email-templates/:id/versions */ -router.get('/:id/versions', requireAdminRole, async (req, res) => { +router.get('/:id/versions', requireBroadcastRole, async (req, res) => { try { const versions = await email_templates_service_1.emailTemplatesService.getVersions(req.params.id); res.json(versions); @@ -144,7 +146,7 @@ router.get('/:id/versions', requireAdminRole, async (req, res) => { * Get specific version * GET /email-templates/:id/versions/:versionNumber */ -router.get('/:id/versions/:versionNumber', requireAdminRole, async (req, res) => { +router.get('/:id/versions/:versionNumber', requireBroadcastRole, async (req, res) => { try { const version = await email_templates_service_1.emailTemplatesService.getVersion(req.params.id, parseInt(req.params.versionNumber, 10)); res.json(version); @@ -162,7 +164,7 @@ router.get('/:id/versions/:versionNumber', requireAdminRole, async (req, res) => * Rollback to previous version * POST /email-templates/:id/rollback */ -router.post('/:id/rollback', requireAdminRole, (0, validate_1.validate)(email_templates_schemas_1.rollbackToVersionSchema), async (req, res) => { +router.post('/:id/rollback', requireBroadcastRole, (0, validate_1.validate)(email_templates_schemas_1.rollbackToVersionSchema), async (req, res) => { try { const template = await email_templates_service_1.emailTemplatesService.rollbackToVersion(req.params.id, req.body, req.user.id); res.json(template); @@ -180,7 +182,7 @@ router.post('/:id/rollback', requireAdminRole, (0, validate_1.validate)(email_te * Validate template syntax * POST /email-templates/validate */ -router.post('/validate', requireAdminRole, (0, validate_1.validate)(email_templates_schemas_1.validateTemplateSchema), async (req, res) => { +router.post('/validate', requireBroadcastRole, (0, validate_1.validate)(email_templates_schemas_1.validateTemplateSchema), async (req, res) => { try { const result = email_templates_service_1.emailTemplatesService.validateTemplate(req.body); res.json(result); @@ -195,7 +197,7 @@ router.post('/validate', requireAdminRole, (0, validate_1.validate)(email_templa * POST /email-templates/:id/test * Rate limited to 10 per 15 minutes per user */ -router.post('/:id/test', requireAdminRole, (0, express_rate_limit_1.default)({ +router.post('/:id/test', requireBroadcastRole, (0, express_rate_limit_1.default)({ windowMs: 15 * 60 * 1000, // 15 minutes max: 10, standardHeaders: true, @@ -223,7 +225,7 @@ router.post('/:id/test', requireAdminRole, (0, express_rate_limit_1.default)({ * Get test logs for template * GET /email-templates/:id/test-logs */ -router.get('/:id/test-logs', requireAdminRole, async (req, res) => { +router.get('/:id/test-logs', requireBroadcastRole, async (req, res) => { try { const limit = req.query.limit ? parseInt(req.query.limit, 10) : 10; const logs = await email_templates_service_1.emailTemplatesService.getTestLogs(req.params.id, limit); @@ -240,16 +242,9 @@ router.get('/:id/test-logs', requireAdminRole, async (req, res) => { */ router.post('/seed', (0, rbac_middleware_1.requireRole)(client_1.UserRole.SUPER_ADMIN), async (req, res) => { try { - // This is a placeholder - the actual seeding is done via the script - // But we keep this endpoint for manual triggering if needed - const { exec } = require('child_process'); - const { promisify } = require('util'); - const execAsync = promisify(exec); - const result = await execAsync('npx tsx src/scripts/seed-email-templates.ts', { - cwd: '/app', - }); + await (0, seed_email_templates_1.seedEmailTemplates)(); logger_1.logger.info('Email templates seeded via API'); - res.json({ success: true, output: result.stdout }); + res.json({ success: true, message: 'Templates seeded successfully' }); } catch (error) { logger_1.logger.error('Error seeding templates:', error); diff --git a/api/dist/modules/email-templates/email-templates-admin.routes.js.map b/api/dist/modules/email-templates/email-templates-admin.routes.js.map index 2593676a..56488f11 100644 --- a/api/dist/modules/email-templates/email-templates-admin.routes.js.map +++ b/api/dist/modules/email-templates/email-templates-admin.routes.js.map @@ -1 +1 @@ -{"version":3,"file":"email-templates-admin.routes.js","sourceRoot":"","sources":["../../../src/modules/email-templates/email-templates-admin.routes.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"email-templates-admin.routes.js","sourceRoot":"","sources":["../../../src/modules/email-templates/email-templates-admin.routes.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/api/dist/modules/email-templates/email-templates.schemas.d.ts b/api/dist/modules/email-templates/email-templates.schemas.d.ts index 7ce95506..1a588350 100644 --- a/api/dist/modules/email-templates/email-templates.schemas.d.ts +++ b/api/dist/modules/email-templates/email-templates.schemas.d.ts @@ -14,8 +14,8 @@ export declare const emailTemplateVariableSchema: z.ZodEffects, { type: "VIDEO" | "TEXT"; key: string; - label: string; sortOrder: number; + label: string; isRequired: boolean; isConditional: boolean; videoId?: number | undefined; @@ -60,20 +60,21 @@ export declare const listEmailTemplatesSchema: z.ZodObject<{ INFLUENCE: "INFLUENCE"; MAP: "MAP"; SYSTEM: "SYSTEM"; + PAYMENT: "PAYMENT"; }>>; isActive: z.ZodOptional; }, "strip", z.ZodTypeAny, { limit: number; page: number; search?: string | undefined; - category?: "INFLUENCE" | "MAP" | "SYSTEM" | undefined; + category?: "INFLUENCE" | "MAP" | "SYSTEM" | "PAYMENT" | undefined; isActive?: boolean | undefined; }, { search?: string | undefined; + category?: "INFLUENCE" | "MAP" | "SYSTEM" | "PAYMENT" | undefined; limit?: number | undefined; - category?: "INFLUENCE" | "MAP" | "SYSTEM" | undefined; - page?: number | undefined; isActive?: boolean | undefined; + page?: number | undefined; }>; export type ListEmailTemplatesDto = z.infer; export declare const createEmailTemplateSchema: z.ZodObject<{ @@ -84,6 +85,7 @@ export declare const createEmailTemplateSchema: z.ZodObject<{ INFLUENCE: "INFLUENCE"; MAP: "MAP"; SYSTEM: "SYSTEM"; + PAYMENT: "PAYMENT"; }>; subjectLine: z.ZodString; htmlContent: z.ZodString; @@ -102,8 +104,8 @@ export declare const createEmailTemplateSchema: z.ZodObject<{ }, "strip", z.ZodTypeAny, { type: "VIDEO" | "TEXT"; key: string; - label: string; sortOrder: number; + label: string; isRequired: boolean; isConditional: boolean; videoId?: number | undefined; @@ -122,8 +124,8 @@ export declare const createEmailTemplateSchema: z.ZodObject<{ }>, { type: "VIDEO" | "TEXT"; key: string; - label: string; sortOrder: number; + label: string; isRequired: boolean; isConditional: boolean; videoId?: number | undefined; @@ -142,9 +144,9 @@ export declare const createEmailTemplateSchema: z.ZodObject<{ }>, "many">>; }, "strip", z.ZodTypeAny, { name: string; - category: "INFLUENCE" | "MAP" | "SYSTEM"; - isActive: boolean; + category: "INFLUENCE" | "MAP" | "SYSTEM" | "PAYMENT"; key: string; + isActive: boolean; subjectLine: string; htmlContent: string; textContent: string; @@ -152,8 +154,8 @@ export declare const createEmailTemplateSchema: z.ZodObject<{ variables?: { type: "VIDEO" | "TEXT"; key: string; - label: string; sortOrder: number; + label: string; isRequired: boolean; isConditional: boolean; videoId?: number | undefined; @@ -162,13 +164,13 @@ export declare const createEmailTemplateSchema: z.ZodObject<{ }[] | undefined; }, { name: string; - category: "INFLUENCE" | "MAP" | "SYSTEM"; + category: "INFLUENCE" | "MAP" | "SYSTEM" | "PAYMENT"; key: string; subjectLine: string; htmlContent: string; textContent: string; - description?: string | undefined; isActive?: boolean | undefined; + description?: string | undefined; variables?: { key: string; label: string; @@ -189,6 +191,7 @@ export declare const updateEmailTemplateSchema: z.ZodObject<{ INFLUENCE: "INFLUENCE"; MAP: "MAP"; SYSTEM: "SYSTEM"; + PAYMENT: "PAYMENT"; }>>; subjectLine: z.ZodOptional; htmlContent: z.ZodOptional; @@ -207,8 +210,8 @@ export declare const updateEmailTemplateSchema: z.ZodObject<{ }, "strip", z.ZodTypeAny, { type: "VIDEO" | "TEXT"; key: string; - label: string; sortOrder: number; + label: string; isRequired: boolean; isConditional: boolean; videoId?: number | undefined; @@ -227,8 +230,8 @@ export declare const updateEmailTemplateSchema: z.ZodObject<{ }>, { type: "VIDEO" | "TEXT"; key: string; - label: string; sortOrder: number; + label: string; isRequired: boolean; isConditional: boolean; videoId?: number | undefined; @@ -247,17 +250,17 @@ export declare const updateEmailTemplateSchema: z.ZodObject<{ }>, "many">>; }, "strip", z.ZodTypeAny, { name?: string | undefined; - category?: "INFLUENCE" | "MAP" | "SYSTEM" | undefined; - description?: string | null | undefined; + category?: "INFLUENCE" | "MAP" | "SYSTEM" | "PAYMENT" | undefined; isActive?: boolean | undefined; + description?: string | null | undefined; subjectLine?: string | undefined; htmlContent?: string | undefined; textContent?: string | undefined; variables?: { type: "VIDEO" | "TEXT"; key: string; - label: string; sortOrder: number; + label: string; isRequired: boolean; isConditional: boolean; videoId?: number | undefined; @@ -266,9 +269,9 @@ export declare const updateEmailTemplateSchema: z.ZodObject<{ }[] | undefined; }, { name?: string | undefined; - category?: "INFLUENCE" | "MAP" | "SYSTEM" | undefined; - description?: string | null | undefined; + category?: "INFLUENCE" | "MAP" | "SYSTEM" | "PAYMENT" | undefined; isActive?: boolean | undefined; + description?: string | null | undefined; subjectLine?: string | undefined; htmlContent?: string | undefined; textContent?: string | undefined; diff --git a/api/dist/modules/email-templates/email-templates.schemas.d.ts.map b/api/dist/modules/email-templates/email-templates.schemas.d.ts.map index 89e7bfea..7ae2dcfa 100644 --- a/api/dist/modules/email-templates/email-templates.schemas.d.ts.map +++ b/api/dist/modules/email-templates/email-templates.schemas.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"email-templates.schemas.d.ts","sourceRoot":"","sources":["../../../src/modules/email-templates/email-templates.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,+BAA+B,8BAA4B,CAAC;AACzE,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAG5F,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBvC,CAAC;AAGF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;EAMnC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAG7E,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUpC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAG/E,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASpC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAG/E,eAAO,MAAM,uBAAuB;;;;;;;;;EAGlC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAG3E,eAAO,MAAM,sBAAsB;;;;;;;;;;;;EAIjC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAGzE,eAAO,MAAM,mBAAmB;;;;;;;;;EAG9B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"email-templates.schemas.d.ts","sourceRoot":"","sources":["../../../src/modules/email-templates/email-templates.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,+BAA+B,8BAA4B,CAAC;AACzE,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAG5F,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBvC,CAAC;AAGF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;EAMnC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAG7E,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUpC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAG/E,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASpC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAG/E,eAAO,MAAM,uBAAuB;;;;;;;;;EAGlC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAG3E,eAAO,MAAM,sBAAsB;;;;;;;;;;;;EAIjC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAGzE,eAAO,MAAM,mBAAmB;;;;;;;;;EAG9B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/email-templates/email-templates.service.d.ts b/api/dist/modules/email-templates/email-templates.service.d.ts index 075d7727..ae2efe15 100644 --- a/api/dist/modules/email-templates/email-templates.service.d.ts +++ b/api/dist/modules/email-templates/email-templates.service.d.ts @@ -28,15 +28,20 @@ export declare class EmailTemplatesService { versions: number; testLogs: number; }; + createdBy: { + id: string; + email: string; + name: string | null; + }; variables: { type: import(".prisma/client").$Enums.EmailTemplateVariableType; id: string; videoId: number | null; - description: string | null; key: string; - templateId: string; - label: string; + description: string | null; sortOrder: number; + label: string; + templateId: string; isRequired: boolean; isConditional: boolean; sampleValue: string | null; @@ -46,26 +51,21 @@ export declare class EmailTemplatesService { email: string; name: string | null; } | null; - createdBy: { - id: string; - email: string; - name: string | null; - }; } & { id: string; name: string; createdAt: Date; updatedAt: Date; category: import(".prisma/client").$Enums.EmailTemplateCategory; - description: string | null; - isActive: boolean; key: string; - createdByUserId: string; - updatedByUserId: string | null; + isActive: boolean; + description: string | null; subjectLine: string; htmlContent: string; textContent: string; isSystem: boolean; + createdByUserId: string; + updatedByUserId: string | null; }>; /** * Get template by key @@ -75,11 +75,11 @@ export declare class EmailTemplatesService { type: import(".prisma/client").$Enums.EmailTemplateVariableType; id: string; videoId: number | null; - description: string | null; key: string; - templateId: string; - label: string; + description: string | null; sortOrder: number; + label: string; + templateId: string; isRequired: boolean; isConditional: boolean; sampleValue: string | null; @@ -90,15 +90,15 @@ export declare class EmailTemplatesService { createdAt: Date; updatedAt: Date; category: import(".prisma/client").$Enums.EmailTemplateCategory; - description: string | null; - isActive: boolean; key: string; - createdByUserId: string; - updatedByUserId: string | null; + isActive: boolean; + description: string | null; subjectLine: string; htmlContent: string; textContent: string; isSystem: boolean; + createdByUserId: string; + updatedByUserId: string | null; }) | null>; /** * Create a new email template @@ -108,11 +108,11 @@ export declare class EmailTemplatesService { type: import(".prisma/client").$Enums.EmailTemplateVariableType; id: string; videoId: number | null; - description: string | null; key: string; - templateId: string; - label: string; + description: string | null; sortOrder: number; + label: string; + templateId: string; isRequired: boolean; isConditional: boolean; sampleValue: string | null; @@ -123,15 +123,15 @@ export declare class EmailTemplatesService { createdAt: Date; updatedAt: Date; category: import(".prisma/client").$Enums.EmailTemplateCategory; - description: string | null; - isActive: boolean; key: string; - createdByUserId: string; - updatedByUserId: string | null; + isActive: boolean; + description: string | null; subjectLine: string; htmlContent: string; textContent: string; isSystem: boolean; + createdByUserId: string; + updatedByUserId: string | null; }>; /** * Update an email template @@ -141,11 +141,11 @@ export declare class EmailTemplatesService { type: import(".prisma/client").$Enums.EmailTemplateVariableType; id: string; videoId: number | null; - description: string | null; key: string; - templateId: string; - label: string; + description: string | null; sortOrder: number; + label: string; + templateId: string; isRequired: boolean; isConditional: boolean; sampleValue: string | null; @@ -156,15 +156,15 @@ export declare class EmailTemplatesService { createdAt: Date; updatedAt: Date; category: import(".prisma/client").$Enums.EmailTemplateCategory; - description: string | null; - isActive: boolean; key: string; - createdByUserId: string; - updatedByUserId: string | null; + isActive: boolean; + description: string | null; subjectLine: string; htmlContent: string; textContent: string; isSystem: boolean; + createdByUserId: string; + updatedByUserId: string | null; }>; /** * Delete an email template @@ -182,10 +182,10 @@ export declare class EmailTemplatesService { } & { id: string; createdAt: Date; - createdByUserId: string; subjectLine: string; htmlContent: string; textContent: string; + createdByUserId: string; versionNumber: number; changeNotes: string | null; templateId: string; @@ -202,10 +202,10 @@ export declare class EmailTemplatesService { } & { id: string; createdAt: Date; - createdByUserId: string; subjectLine: string; htmlContent: string; textContent: string; + createdByUserId: string; versionNumber: number; changeNotes: string | null; templateId: string; @@ -219,15 +219,15 @@ export declare class EmailTemplatesService { createdAt: Date; updatedAt: Date; category: import(".prisma/client").$Enums.EmailTemplateCategory; - description: string | null; - isActive: boolean; key: string; - createdByUserId: string; - updatedByUserId: string | null; + isActive: boolean; + description: string | null; subjectLine: string; htmlContent: string; textContent: string; isSystem: boolean; + createdByUserId: string; + updatedByUserId: string | null; }>; /** * Validate template syntax @@ -252,12 +252,12 @@ export declare class EmailTemplatesService { } & { id: string; success: boolean; + messageId: string | null; recipientEmail: string; sentAt: Date; templateId: string; testData: Prisma.JsonValue; errorMessage: string | null; - messageId: string | null; sentByUserId: string; })[]>; } diff --git a/api/dist/modules/influence/campaign-emails/campaign-emails.routes.d.ts.map b/api/dist/modules/influence/campaign-emails/campaign-emails.routes.d.ts.map index 17a6ac75..bea4f649 100644 --- a/api/dist/modules/influence/campaign-emails/campaign-emails.routes.d.ts.map +++ b/api/dist/modules/influence/campaign-emails/campaign-emails.routes.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"campaign-emails.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/influence/campaign-emails/campaign-emails.routes.ts"],"names":[],"mappings":"AAgBA,QAAA,MAAM,YAAY,4CAAW,CAAC;AAqC9B,QAAA,MAAM,WAAW,4CAAW,CAAC;AAiC7B,OAAO,EAAE,YAAY,IAAI,0BAA0B,EAAE,WAAW,IAAI,yBAAyB,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"campaign-emails.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/influence/campaign-emails/campaign-emails.routes.ts"],"names":[],"mappings":"AAcA,QAAA,MAAM,YAAY,4CAAW,CAAC;AAqC9B,QAAA,MAAM,WAAW,4CAAW,CAAC;AAiC7B,OAAO,EAAE,YAAY,IAAI,0BAA0B,EAAE,WAAW,IAAI,yBAAyB,EAAE,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/influence/campaign-emails/campaign-emails.routes.js b/api/dist/modules/influence/campaign-emails/campaign-emails.routes.js index 56e4518e..48b0bb4d 100644 --- a/api/dist/modules/influence/campaign-emails/campaign-emails.routes.js +++ b/api/dist/modules/influence/campaign-emails/campaign-emails.routes.js @@ -2,14 +2,13 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.campaignEmailsAdminRouter = exports.campaignEmailsPublicRouter = void 0; const express_1 = require("express"); -const client_1 = require("@prisma/client"); const campaign_emails_service_1 = require("./campaign-emails.service"); const campaign_emails_schemas_1 = require("./campaign-emails.schemas"); const validate_1 = require("../../../middleware/validate"); const auth_middleware_1 = require("../../../middleware/auth.middleware"); const rbac_middleware_1 = require("../../../middleware/rbac.middleware"); const rate_limit_1 = require("../../../middleware/rate-limit"); -const ADMIN_ROLES = [client_1.UserRole.SUPER_ADMIN, client_1.UserRole.INFLUENCE_ADMIN, client_1.UserRole.MAP_ADMIN]; +const roles_1 = require("../../../utils/roles"); // --- Public Routes (no auth) --- const publicRouter = (0, express_1.Router)(); exports.campaignEmailsPublicRouter = publicRouter; @@ -41,7 +40,7 @@ publicRouter.post('/:slug/track-mailto', rate_limit_1.emailRateLimit, (0, valida const adminRouter = (0, express_1.Router)(); exports.campaignEmailsAdminRouter = adminRouter; adminRouter.use(auth_middleware_1.authenticate); -adminRouter.use((0, rbac_middleware_1.requireRole)(...ADMIN_ROLES)); +adminRouter.use((0, rbac_middleware_1.requireRole)(...roles_1.INFLUENCE_ROLES)); // GET /api/campaigns/:id/emails adminRouter.get('/:id/emails', (0, validate_1.validate)(campaign_emails_schemas_1.listCampaignEmailsSchema, 'query'), async (req, res, next) => { try { diff --git a/api/dist/modules/influence/campaign-emails/campaign-emails.routes.js.map b/api/dist/modules/influence/campaign-emails/campaign-emails.routes.js.map index 829bc72c..bb6a00e3 100644 --- a/api/dist/modules/influence/campaign-emails/campaign-emails.routes.js.map +++ b/api/dist/modules/influence/campaign-emails/campaign-emails.routes.js.map @@ -1 +1 @@ -{"version":3,"file":"campaign-emails.routes.js","sourceRoot":"","sources":["../../../../src/modules/influence/campaign-emails/campaign-emails.routes.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"campaign-emails.routes.js","sourceRoot":"","sources":["../../../../src/modules/influence/campaign-emails/campaign-emails.routes.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/api/dist/modules/influence/campaign-emails/campaign-emails.service.d.ts b/api/dist/modules/influence/campaign-emails/campaign-emails.service.d.ts index cbee503b..4eb36910 100644 --- a/api/dist/modules/influence/campaign-emails/campaign-emails.service.d.ts +++ b/api/dist/modules/influence/campaign-emails/campaign-emails.service.d.ts @@ -14,6 +14,7 @@ export declare const campaignEmailsService: { emails: { status: import(".prisma/client").$Enums.CampaignEmailStatus; id: string; + subject: string; userEmail: string | null; userName: string | null; userPostalCode: string | null; @@ -21,7 +22,6 @@ export declare const campaignEmailsService: { recipientName: string | null; recipientLevel: import(".prisma/client").$Enums.GovernmentLevel | null; emailMethod: import(".prisma/client").$Enums.EmailMethod; - subject: string; sentAt: Date; }[]; pagination: { diff --git a/api/dist/modules/influence/campaign-emails/campaign-emails.service.d.ts.map b/api/dist/modules/influence/campaign-emails/campaign-emails.service.d.ts.map index 611403c9..5707e29e 100644 --- a/api/dist/modules/influence/campaign-emails/campaign-emails.service.d.ts.map +++ b/api/dist/modules/influence/campaign-emails/campaign-emails.service.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"campaign-emails.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/influence/campaign-emails/campaign-emails.service.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEnH,eAAO,MAAM,qBAAqB;oBACV,MAAM,QAAQ,sBAAsB,aAAa,MAAM;;;;;sBAwFrD,MAAM,QAAQ,gBAAgB,aAAa,MAAM;;;;;+BAgDxC,MAAM,WAAW,uBAAuB;;;;;;;;;;;;;;;;;;;;;yBA0C9C,MAAM;CAqClC,CAAC"} \ No newline at end of file +{"version":3,"file":"campaign-emails.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/influence/campaign-emails/campaign-emails.service.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEnH,eAAO,MAAM,qBAAqB;oBACV,MAAM,QAAQ,sBAAsB,aAAa,MAAM;;;;;sBA+GrD,MAAM,QAAQ,gBAAgB,aAAa,MAAM;;;;;+BAwDxC,MAAM,WAAW,uBAAuB;;;;;;;;;;;;;;;;;;;;;yBA0C9C,MAAM;CAqClC,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/influence/campaign-emails/campaign-emails.service.js b/api/dist/modules/influence/campaign-emails/campaign-emails.service.js index f5cdbb21..57f4c2ce 100644 --- a/api/dist/modules/influence/campaign-emails/campaign-emails.service.js +++ b/api/dist/modules/influence/campaign-emails/campaign-emails.service.js @@ -1,4 +1,37 @@ "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || (function () { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; + }; +})(); Object.defineProperty(exports, "__esModule", { value: true }); exports.campaignEmailsService = void 0; const client_1 = require("@prisma/client"); @@ -6,6 +39,9 @@ const database_1 = require("../../../config/database"); const error_handler_1 = require("../../../middleware/error-handler"); const email_queue_service_1 = require("../../../services/email-queue.service"); const metrics_1 = require("../../../utils/metrics"); +const crm_activity_1 = require("../../../utils/crm-activity"); +const group_service_1 = require("../../social/group.service"); +const achievements_service_1 = require("../../social/achievements.service"); exports.campaignEmailsService = { async sendEmail(slug, data, senderIp) { const campaign = await database_1.prisma.campaign.findUnique({ @@ -77,6 +113,26 @@ exports.campaignEmailsService = { }); } (0, metrics_1.recordCampaignEmail)(campaign.id); + // CRM activity (fire-and-forget) + (0, crm_activity_1.recordCrmActivity)({ + email: data.userEmail, + activityType: 'EMAIL_SENT', + title: `Sent campaign email: ${campaign.title}`, + metadata: { campaignId: campaign.id, campaignSlug: campaign.slug, recipientEmail: data.recipientEmail, emailMethod: data.emailMethod }, + }).catch(() => { }); + // Social group sync (fire-and-forget) + group_service_1.groupService.syncCampaignTeam(campaign.id).catch(() => { }); + // Achievement check for registered users (fire-and-forget) + database_1.prisma.user.findUnique({ where: { email: data.userEmail }, select: { id: true } }) + .then((user) => { + if (user) + achievements_service_1.achievementsService.checkAndUnlock(user.id, ['campaigns']).catch(() => { }); + }) + .catch(() => { }); + // Fire-and-forget: check campaign milestones + Promise.resolve().then(() => __importStar(require('../../social/impact-stories.service'))).then(({ impactStoriesService }) => { + impactStoriesService.checkMilestones(campaign.id).catch(() => { }); + }).catch(() => { }); return { id: campaignEmail.id, status: campaignEmail.status, @@ -120,6 +176,12 @@ exports.campaignEmailsService = { senderIp, }, }); + // Social group sync (fire-and-forget) + group_service_1.groupService.syncCampaignTeam(campaign.id).catch(() => { }); + // Fire-and-forget: check campaign milestones + Promise.resolve().then(() => __importStar(require('../../social/impact-stories.service'))).then(({ impactStoriesService }) => { + impactStoriesService.checkMilestones(campaign.id).catch(() => { }); + }).catch(() => { }); return { id: campaignEmail.id, status: campaignEmail.status, diff --git a/api/dist/modules/influence/campaign-emails/campaign-emails.service.js.map b/api/dist/modules/influence/campaign-emails/campaign-emails.service.js.map index 98d45c2c..f8c3984f 100644 --- a/api/dist/modules/influence/campaign-emails/campaign-emails.service.js.map +++ b/api/dist/modules/influence/campaign-emails/campaign-emails.service.js.map @@ -1 +1 @@ -{"version":3,"file":"campaign-emails.service.js","sourceRoot":"","sources":["../../../../src/modules/influence/campaign-emails/campaign-emails.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"campaign-emails.service.js","sourceRoot":"","sources":["../../../../src/modules/influence/campaign-emails/campaign-emails.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/api/dist/modules/influence/campaigns/campaigns-public.routes.d.ts.map b/api/dist/modules/influence/campaigns/campaigns-public.routes.d.ts.map index b084d55f..4a7acbf6 100644 --- a/api/dist/modules/influence/campaigns/campaigns-public.routes.d.ts.map +++ b/api/dist/modules/influence/campaigns/campaigns-public.routes.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"campaigns-public.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/influence/campaigns/campaigns-public.routes.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,MAAM,4CAAW,CAAC;AA6BxB,OAAO,EAAE,MAAM,IAAI,oBAAoB,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"campaigns-public.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/influence/campaigns/campaigns-public.routes.ts"],"names":[],"mappings":"AAKA,QAAA,MAAM,MAAM,4CAAW,CAAC;AA2HxB,OAAO,EAAE,MAAM,IAAI,oBAAoB,EAAE,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/influence/campaigns/campaigns-public.routes.js b/api/dist/modules/influence/campaigns/campaigns-public.routes.js index ea2b21d5..4289886e 100644 --- a/api/dist/modules/influence/campaigns/campaigns-public.routes.js +++ b/api/dist/modules/influence/campaigns/campaigns-public.routes.js @@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.campaignPublicRouter = void 0; const express_1 = require("express"); const campaigns_service_1 = require("./campaigns.service"); +const database_1 = require("../../../config/database"); +const redis_1 = require("../../../config/redis"); const router = (0, express_1.Router)(); exports.campaignPublicRouter = router; // GET /api/campaigns/public — list all active campaigns (public) @@ -26,4 +28,93 @@ router.get('/:slug/details', async (req, res, next) => { next(err); } }); +// GET /api/campaigns/:slug/related — related campaigns + upcoming shifts +router.get('/:slug/related', async (req, res, next) => { + try { + const slug = req.params.slug; + const cacheKey = `campaign:related:${slug}`; + // Check cache + try { + const cached = await redis_1.redis.get(cacheKey); + if (cached) { + res.json(JSON.parse(cached)); + return; + } + } + catch { /* cache miss */ } + // Find current campaign + const campaign = await database_1.prisma.campaign.findFirst({ + where: { slug, status: 'ACTIVE' }, + select: { id: true, targetGovernmentLevels: true }, + }); + if (!campaign) { + res.json({ campaigns: [], shifts: [] }); + return; + } + // Related campaigns: same gov levels, exclude current, limit 3 + const relatedCampaigns = await database_1.prisma.campaign.findMany({ + where: { + status: 'ACTIVE', + id: { not: campaign.id }, + ...(campaign.targetGovernmentLevels.length > 0 && { + targetGovernmentLevels: { hasSome: campaign.targetGovernmentLevels }, + }), + }, + select: { + id: true, + slug: true, + title: true, + description: true, + _count: { select: { emails: true } }, + }, + orderBy: { createdAt: 'desc' }, + take: 3, + }); + // Related shifts: upcoming, limit 3 + const today = new Date(); + today.setHours(0, 0, 0, 0); + const relatedShifts = await database_1.prisma.shift.findMany({ + where: { + date: { gte: today }, + status: 'OPEN', + }, + select: { + id: true, + title: true, + date: true, + startTime: true, + location: true, + maxVolunteers: true, + _count: { select: { signups: true } }, + }, + orderBy: { date: 'asc' }, + take: 3, + }); + const result = { + campaigns: relatedCampaigns.map(c => ({ + id: c.id, + slug: c.slug, + title: c.title, + description: c.description?.slice(0, 150) ?? null, + emailCount: c._count.emails, + })), + shifts: relatedShifts.map(s => ({ + id: s.id, + title: s.title, + startTime: `${s.date.toISOString().split('T')[0]}T${s.startTime}:00`, + location: s.location, + currentVolunteers: s._count.signups, + maxVolunteers: s.maxVolunteers, + })), + }; + try { + await redis_1.redis.setex(cacheKey, 300, JSON.stringify(result)); + } + catch { /* non-critical */ } + res.json(result); + } + catch (err) { + next(err); + } +}); //# sourceMappingURL=campaigns-public.routes.js.map \ No newline at end of file diff --git a/api/dist/modules/influence/campaigns/campaigns-public.routes.js.map b/api/dist/modules/influence/campaigns/campaigns-public.routes.js.map index 0ba6a977..e6ca77bc 100644 --- a/api/dist/modules/influence/campaigns/campaigns-public.routes.js.map +++ b/api/dist/modules/influence/campaigns/campaigns-public.routes.js.map @@ -1 +1 @@ -{"version":3,"file":"campaigns-public.routes.js","sourceRoot":"","sources":["../../../../src/modules/influence/campaigns/campaigns-public.routes.ts"],"names":[],"mappings":";;;AAAA,qCAAkE;AAClE,2DAAuD;AAEvD,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;AA6BL,sCAAoB;AA3BvC,iEAAiE;AACjE,MAAM,CAAC,GAAG,CACR,SAAS,EACT,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACzD,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,oCAAgB,CAAC,mBAAmB,EAAE,CAAC;QAC/D,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,wEAAwE;AACxE,MAAM,CAAC,GAAG,CACR,gBAAgB,EAChB,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAc,CAAC;QACvC,MAAM,QAAQ,GAAG,MAAM,oCAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC/D,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC"} \ No newline at end of file +{"version":3,"file":"campaigns-public.routes.js","sourceRoot":"","sources":["../../../../src/modules/influence/campaigns/campaigns-public.routes.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/api/dist/modules/influence/campaigns/campaigns.routes.d.ts.map b/api/dist/modules/influence/campaigns/campaigns.routes.d.ts.map index f19c3a1b..6fa8a75e 100644 --- a/api/dist/modules/influence/campaigns/campaigns.routes.d.ts.map +++ b/api/dist/modules/influence/campaigns/campaigns.routes.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"campaigns.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/influence/campaigns/campaigns.routes.ts"],"names":[],"mappings":"AAUA,QAAA,MAAM,MAAM,4CAAW,CAAC;AA6ExB,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"campaigns.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/influence/campaigns/campaigns.routes.ts"],"names":[],"mappings":"AAQA,QAAA,MAAM,MAAM,4CAAW,CAAC;AA6ExB,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/influence/campaigns/campaigns.routes.js b/api/dist/modules/influence/campaigns/campaigns.routes.js index 62802822..af31fd99 100644 --- a/api/dist/modules/influence/campaigns/campaigns.routes.js +++ b/api/dist/modules/influence/campaigns/campaigns.routes.js @@ -2,18 +2,17 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.campaignsRouter = void 0; const express_1 = require("express"); -const client_1 = require("@prisma/client"); const campaigns_service_1 = require("./campaigns.service"); const campaigns_schemas_1 = require("./campaigns.schemas"); const validate_1 = require("../../../middleware/validate"); const auth_middleware_1 = require("../../../middleware/auth.middleware"); const rbac_middleware_1 = require("../../../middleware/rbac.middleware"); -const ADMIN_ROLES = [client_1.UserRole.SUPER_ADMIN, client_1.UserRole.INFLUENCE_ADMIN, client_1.UserRole.MAP_ADMIN]; +const roles_1 = require("../../../utils/roles"); const router = (0, express_1.Router)(); exports.campaignsRouter = router; // All campaign admin routes require authentication + admin role router.use(auth_middleware_1.authenticate); -router.use((0, rbac_middleware_1.requireRole)(...ADMIN_ROLES)); +router.use((0, rbac_middleware_1.requireRole)(...roles_1.INFLUENCE_ROLES)); // GET /api/campaigns — list campaigns with pagination/filters router.get('/', (0, validate_1.validate)(campaigns_schemas_1.listCampaignsSchema, 'query'), async (req, res, next) => { try { diff --git a/api/dist/modules/influence/campaigns/campaigns.routes.js.map b/api/dist/modules/influence/campaigns/campaigns.routes.js.map index bd9ca211..4e04841d 100644 --- a/api/dist/modules/influence/campaigns/campaigns.routes.js.map +++ b/api/dist/modules/influence/campaigns/campaigns.routes.js.map @@ -1 +1 @@ -{"version":3,"file":"campaigns.routes.js","sourceRoot":"","sources":["../../../../src/modules/influence/campaigns/campaigns.routes.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"campaigns.routes.js","sourceRoot":"","sources":["../../../../src/modules/influence/campaigns/campaigns.routes.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/api/dist/modules/influence/campaigns/campaigns.schemas.d.ts b/api/dist/modules/influence/campaigns/campaigns.schemas.d.ts index 8b2ce925..3bb7df4d 100644 --- a/api/dist/modules/influence/campaigns/campaigns.schemas.d.ts +++ b/api/dist/modules/influence/campaigns/campaigns.schemas.d.ts @@ -27,8 +27,9 @@ export declare const createCampaignSchema: z.ZodObject<{ showResponseWall: z.ZodDefault>; highlightCampaign: z.ZodDefault>; coverPhoto: z.ZodOptional; + coverVideoId: z.ZodOptional>; }, "strip", z.ZodTypeAny, { - status: "ACTIVE" | "DRAFT" | "PAUSED" | "ARCHIVED"; + status: "ACTIVE" | "ARCHIVED" | "DRAFT" | "PAUSED"; title: string; emailSubject: string; emailBody: string; @@ -43,16 +44,18 @@ export declare const createCampaignSchema: z.ZodObject<{ highlightCampaign: boolean; targetGovernmentLevels: ("FEDERAL" | "PROVINCIAL" | "MUNICIPAL" | "SCHOOL_BOARD")[]; description?: string | undefined; - callToAction?: string | undefined; coverPhoto?: string | undefined; + coverVideoId?: number | null | undefined; + callToAction?: string | undefined; }, { title: string; emailSubject: string; emailBody: string; - status?: "ACTIVE" | "DRAFT" | "PAUSED" | "ARCHIVED" | undefined; + status?: "ACTIVE" | "ARCHIVED" | "DRAFT" | "PAUSED" | undefined; description?: string | undefined; - callToAction?: string | undefined; coverPhoto?: string | undefined; + coverVideoId?: number | null | undefined; + callToAction?: string | undefined; allowSmtpEmail?: boolean | undefined; allowMailtoLink?: boolean | undefined; collectUserInfo?: boolean | undefined; @@ -92,14 +95,16 @@ export declare const updateCampaignSchema: z.ZodObject<{ showResponseWall: z.ZodOptional; highlightCampaign: z.ZodOptional; coverPhoto: z.ZodOptional>; + coverVideoId: z.ZodOptional>; }, "strip", z.ZodTypeAny, { - status?: "ACTIVE" | "DRAFT" | "PAUSED" | "ARCHIVED" | undefined; + status?: "ACTIVE" | "ARCHIVED" | "DRAFT" | "PAUSED" | undefined; title?: string | undefined; description?: string | null | undefined; + coverPhoto?: string | null | undefined; + coverVideoId?: number | null | undefined; emailSubject?: string | undefined; emailBody?: string | undefined; callToAction?: string | null | undefined; - coverPhoto?: string | null | undefined; allowSmtpEmail?: boolean | undefined; allowMailtoLink?: boolean | undefined; collectUserInfo?: boolean | undefined; @@ -111,13 +116,14 @@ export declare const updateCampaignSchema: z.ZodObject<{ highlightCampaign?: boolean | undefined; targetGovernmentLevels?: ("FEDERAL" | "PROVINCIAL" | "MUNICIPAL" | "SCHOOL_BOARD")[] | undefined; }, { - status?: "ACTIVE" | "DRAFT" | "PAUSED" | "ARCHIVED" | undefined; + status?: "ACTIVE" | "ARCHIVED" | "DRAFT" | "PAUSED" | undefined; title?: string | undefined; description?: string | null | undefined; + coverPhoto?: string | null | undefined; + coverVideoId?: number | null | undefined; emailSubject?: string | undefined; emailBody?: string | undefined; callToAction?: string | null | undefined; - coverPhoto?: string | null | undefined; allowSmtpEmail?: boolean | undefined; allowMailtoLink?: boolean | undefined; collectUserInfo?: boolean | undefined; @@ -142,10 +148,10 @@ export declare const listCampaignsSchema: z.ZodObject<{ }, "strip", z.ZodTypeAny, { limit: number; page: number; - status?: "ACTIVE" | "DRAFT" | "PAUSED" | "ARCHIVED" | undefined; + status?: "ACTIVE" | "ARCHIVED" | "DRAFT" | "PAUSED" | undefined; search?: string | undefined; }, { - status?: "ACTIVE" | "DRAFT" | "PAUSED" | "ARCHIVED" | undefined; + status?: "ACTIVE" | "ARCHIVED" | "DRAFT" | "PAUSED" | undefined; search?: string | undefined; limit?: number | undefined; page?: number | undefined; @@ -157,7 +163,99 @@ export declare const campaignIdSchema: z.ZodObject<{ }, { id: string; }>; +export declare const createUserCampaignSchema: z.ZodObject<{ + title: z.ZodString; + description: z.ZodOptional; + emailSubject: z.ZodString; + emailBody: z.ZodString; + callToAction: z.ZodOptional; + targetGovernmentLevels: z.ZodArray, "many">; +}, "strip", z.ZodTypeAny, { + title: string; + emailSubject: string; + emailBody: string; + targetGovernmentLevels: ("FEDERAL" | "PROVINCIAL" | "MUNICIPAL" | "SCHOOL_BOARD")[]; + description?: string | undefined; + callToAction?: string | undefined; +}, { + title: string; + emailSubject: string; + emailBody: string; + targetGovernmentLevels: ("FEDERAL" | "PROVINCIAL" | "MUNICIPAL" | "SCHOOL_BOARD")[]; + description?: string | undefined; + callToAction?: string | undefined; +}>; +export declare const updateUserCampaignSchema: z.ZodObject<{ + title: z.ZodOptional; + description: z.ZodOptional>; + emailSubject: z.ZodOptional; + emailBody: z.ZodOptional; + callToAction: z.ZodOptional>; + targetGovernmentLevels: z.ZodOptional, "many">>; +}, "strip", z.ZodTypeAny, { + title?: string | undefined; + description?: string | undefined; + emailSubject?: string | undefined; + emailBody?: string | undefined; + callToAction?: string | undefined; + targetGovernmentLevels?: ("FEDERAL" | "PROVINCIAL" | "MUNICIPAL" | "SCHOOL_BOARD")[] | undefined; +}, { + title?: string | undefined; + description?: string | undefined; + emailSubject?: string | undefined; + emailBody?: string | undefined; + callToAction?: string | undefined; + targetGovernmentLevels?: ("FEDERAL" | "PROVINCIAL" | "MUNICIPAL" | "SCHOOL_BOARD")[] | undefined; +}>; +export declare const moderateCampaignSchema: z.ZodObject<{ + action: z.ZodEnum<["approve", "reject", "request_changes"]>; + reason: z.ZodOptional; + notes: z.ZodOptional; +}, "strip", z.ZodTypeAny, { + action: "approve" | "reject" | "request_changes"; + reason?: string | undefined; + notes?: string | undefined; +}, { + action: "approve" | "reject" | "request_changes"; + reason?: string | undefined; + notes?: string | undefined; +}>; +export declare const listModerationQueueSchema: z.ZodObject<{ + page: z.ZodDefault; + limit: z.ZodDefault; + search: z.ZodOptional; + moderationStatus: z.ZodOptional>; +}, "strip", z.ZodTypeAny, { + limit: number; + page: number; + search?: string | undefined; + moderationStatus?: "APPROVED" | "PENDING_REVIEW" | "REJECTED" | "CHANGES_REQUESTED" | undefined; +}, { + search?: string | undefined; + limit?: number | undefined; + page?: number | undefined; + moderationStatus?: "APPROVED" | "PENDING_REVIEW" | "REJECTED" | "CHANGES_REQUESTED" | undefined; +}>; export type CreateCampaignInput = z.infer; export type UpdateCampaignInput = z.infer; export type ListCampaignsInput = z.infer; +export type CreateUserCampaignInput = z.infer; +export type UpdateUserCampaignInput = z.infer; +export type ModerateCampaignInput = z.infer; +export type ListModerationQueueInput = z.infer; //# sourceMappingURL=campaigns.schemas.d.ts.map \ No newline at end of file diff --git a/api/dist/modules/influence/campaigns/campaigns.schemas.d.ts.map b/api/dist/modules/influence/campaigns/campaigns.schemas.d.ts.map index a1bc6fa9..036fcd0b 100644 --- a/api/dist/modules/influence/campaigns/campaigns.schemas.d.ts.map +++ b/api/dist/modules/influence/campaigns/campaigns.schemas.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"campaigns.schemas.d.ts","sourceRoot":"","sources":["../../../../src/modules/influence/campaigns/campaigns.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkB/B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkB/B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;EAK9B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;EAE3B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACvE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACvE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"campaigns.schemas.d.ts","sourceRoot":"","sources":["../../../../src/modules/influence/campaigns/campaigns.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmB/B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmB/B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;EAK9B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;EAE3B,CAAC;AAGH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;EAOnC,CAAC;AAGH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;EAAqC,CAAC;AAG3E,eAAO,MAAM,sBAAsB;;;;;;;;;;;;EAIjC,CAAC;AAGH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;EAKpC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACvE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACvE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACrE,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC/E,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC/E,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAC3E,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/influence/campaigns/campaigns.schemas.js b/api/dist/modules/influence/campaigns/campaigns.schemas.js index 87227bf9..0726f1fb 100644 --- a/api/dist/modules/influence/campaigns/campaigns.schemas.js +++ b/api/dist/modules/influence/campaigns/campaigns.schemas.js @@ -1,14 +1,14 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.campaignIdSchema = exports.listCampaignsSchema = exports.updateCampaignSchema = exports.createCampaignSchema = void 0; +exports.listModerationQueueSchema = exports.moderateCampaignSchema = exports.updateUserCampaignSchema = exports.createUserCampaignSchema = exports.campaignIdSchema = exports.listCampaignsSchema = exports.updateCampaignSchema = exports.createCampaignSchema = void 0; const zod_1 = require("zod"); const client_1 = require("@prisma/client"); exports.createCampaignSchema = zod_1.z.object({ - title: zod_1.z.string().min(1, 'Title is required'), - description: zod_1.z.string().optional(), - emailSubject: zod_1.z.string().min(1, 'Email subject is required'), - emailBody: zod_1.z.string().min(1, 'Email body is required'), - callToAction: zod_1.z.string().optional(), + title: zod_1.z.string().min(1, 'Title is required').max(200), + description: zod_1.z.string().max(2000).optional(), + emailSubject: zod_1.z.string().min(1, 'Email subject is required').max(200), + emailBody: zod_1.z.string().min(1, 'Email body is required').max(10000), + callToAction: zod_1.z.string().max(500).optional(), status: zod_1.z.nativeEnum(client_1.CampaignStatus).optional().default(client_1.CampaignStatus.DRAFT), targetGovernmentLevels: zod_1.z.array(zod_1.z.nativeEnum(client_1.GovernmentLevel)).optional().default([]), allowSmtpEmail: zod_1.z.boolean().optional().default(true), @@ -20,14 +20,15 @@ exports.createCampaignSchema = zod_1.z.object({ allowCustomRecipients: zod_1.z.boolean().optional().default(false), showResponseWall: zod_1.z.boolean().optional().default(false), highlightCampaign: zod_1.z.boolean().optional().default(false), - coverPhoto: zod_1.z.string().optional(), + coverPhoto: zod_1.z.string().url().max(500).optional(), + coverVideoId: zod_1.z.number().int().positive().nullable().optional(), }); exports.updateCampaignSchema = zod_1.z.object({ - title: zod_1.z.string().min(1).optional(), - description: zod_1.z.string().nullable().optional(), - emailSubject: zod_1.z.string().min(1).optional(), - emailBody: zod_1.z.string().min(1).optional(), - callToAction: zod_1.z.string().nullable().optional(), + title: zod_1.z.string().min(1).max(200).optional(), + description: zod_1.z.string().max(2000).nullable().optional(), + emailSubject: zod_1.z.string().min(1).max(200).optional(), + emailBody: zod_1.z.string().min(1).max(10000).optional(), + callToAction: zod_1.z.string().max(500).nullable().optional(), status: zod_1.z.nativeEnum(client_1.CampaignStatus).optional(), targetGovernmentLevels: zod_1.z.array(zod_1.z.nativeEnum(client_1.GovernmentLevel)).optional(), allowSmtpEmail: zod_1.z.boolean().optional(), @@ -39,7 +40,8 @@ exports.updateCampaignSchema = zod_1.z.object({ allowCustomRecipients: zod_1.z.boolean().optional(), showResponseWall: zod_1.z.boolean().optional(), highlightCampaign: zod_1.z.boolean().optional(), - coverPhoto: zod_1.z.string().nullable().optional(), + coverPhoto: zod_1.z.string().url().max(500).nullable().optional(), + coverVideoId: zod_1.z.number().int().positive().nullable().optional(), }); exports.listCampaignsSchema = zod_1.z.object({ page: zod_1.z.coerce.number().int().positive().default(1), @@ -50,4 +52,28 @@ exports.listCampaignsSchema = zod_1.z.object({ exports.campaignIdSchema = zod_1.z.object({ id: zod_1.z.string().min(1), }); +// User-submitted campaign (restricted fields) +exports.createUserCampaignSchema = zod_1.z.object({ + title: zod_1.z.string().min(3, 'Title must be at least 3 characters').max(200), + description: zod_1.z.string().max(2000).optional(), + emailSubject: zod_1.z.string().min(3, 'Email subject is required').max(200), + emailBody: zod_1.z.string().min(10, 'Email body must be at least 10 characters').max(5000), + callToAction: zod_1.z.string().max(500).optional(), + targetGovernmentLevels: zod_1.z.array(zod_1.z.nativeEnum(client_1.GovernmentLevel)).min(1, 'Select at least one government level'), +}); +// Update own user campaign (same restricted fields) +exports.updateUserCampaignSchema = exports.createUserCampaignSchema.partial(); +// Admin moderation action +exports.moderateCampaignSchema = zod_1.z.object({ + action: zod_1.z.enum(['approve', 'reject', 'request_changes']), + reason: zod_1.z.string().max(2000).optional(), + notes: zod_1.z.string().max(2000).optional(), +}); +// Moderation queue filters +exports.listModerationQueueSchema = zod_1.z.object({ + page: zod_1.z.coerce.number().int().positive().default(1), + limit: zod_1.z.coerce.number().int().positive().max(100).default(20), + search: zod_1.z.string().optional(), + moderationStatus: zod_1.z.nativeEnum(client_1.CampaignModerationStatus).optional(), +}); //# sourceMappingURL=campaigns.schemas.js.map \ No newline at end of file diff --git a/api/dist/modules/influence/campaigns/campaigns.schemas.js.map b/api/dist/modules/influence/campaigns/campaigns.schemas.js.map index 9f9990e4..ac5e380d 100644 --- a/api/dist/modules/influence/campaigns/campaigns.schemas.js.map +++ b/api/dist/modules/influence/campaigns/campaigns.schemas.js.map @@ -1 +1 @@ -{"version":3,"file":"campaigns.schemas.js","sourceRoot":"","sources":["../../../../src/modules/influence/campaigns/campaigns.schemas.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"campaigns.schemas.js","sourceRoot":"","sources":["../../../../src/modules/influence/campaigns/campaigns.schemas.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/api/dist/modules/influence/campaigns/campaigns.service.d.ts b/api/dist/modules/influence/campaigns/campaigns.service.d.ts index 132348d5..c0483a6c 100644 --- a/api/dist/modules/influence/campaigns/campaigns.service.d.ts +++ b/api/dist/modules/influence/campaigns/campaigns.service.d.ts @@ -1,5 +1,5 @@ import { UserRole } from '@prisma/client'; -import type { CreateCampaignInput, UpdateCampaignInput, ListCampaignsInput } from './campaigns.schemas'; +import type { CreateCampaignInput, UpdateCampaignInput, ListCampaignsInput, CreateUserCampaignInput, ModerateCampaignInput, ListModerationQueueInput } from './campaigns.schemas'; interface AuthUser { id: string; email: string; @@ -19,10 +19,13 @@ export declare const campaignsService: { title: string; description: string | null; slug: string; + coverPhoto: string | null; + coverVideoId: number | null; + moderationNotes: string | null; + createdByUserId: string | null; emailSubject: string; emailBody: string; callToAction: string | null; - coverPhoto: string | null; allowSmtpEmail: boolean; allowMailtoLink: boolean; collectUserInfo: boolean; @@ -35,7 +38,11 @@ export declare const campaignsService: { targetGovernmentLevels: import(".prisma/client").$Enums.GovernmentLevel[]; createdByUserEmail: string | null; createdByUserName: string | null; - createdByUserId: string | null; + isUserGenerated: boolean; + moderationStatus: import(".prisma/client").$Enums.CampaignModerationStatus | null; + reviewedByUserId: string | null; + reviewedAt: Date | null; + rejectionReason: string | null; }[]; pagination: { page: number; @@ -56,10 +63,13 @@ export declare const campaignsService: { title: string; description: string | null; slug: string; + coverPhoto: string | null; + coverVideoId: number | null; + moderationNotes: string | null; + createdByUserId: string | null; emailSubject: string; emailBody: string; callToAction: string | null; - coverPhoto: string | null; allowSmtpEmail: boolean; allowMailtoLink: boolean; collectUserInfo: boolean; @@ -72,7 +82,11 @@ export declare const campaignsService: { targetGovernmentLevels: import(".prisma/client").$Enums.GovernmentLevel[]; createdByUserEmail: string | null; createdByUserName: string | null; - createdByUserId: string | null; + isUserGenerated: boolean; + moderationStatus: import(".prisma/client").$Enums.CampaignModerationStatus | null; + reviewedByUserId: string | null; + reviewedAt: Date | null; + rejectionReason: string | null; }>; findBySlug(slug: string): Promise<{ status: import(".prisma/client").$Enums.CampaignStatus; @@ -86,10 +100,13 @@ export declare const campaignsService: { title: string; description: string | null; slug: string; + coverPhoto: string | null; + coverVideoId: number | null; + moderationNotes: string | null; + createdByUserId: string | null; emailSubject: string; emailBody: string; callToAction: string | null; - coverPhoto: string | null; allowSmtpEmail: boolean; allowMailtoLink: boolean; collectUserInfo: boolean; @@ -102,7 +119,11 @@ export declare const campaignsService: { targetGovernmentLevels: import(".prisma/client").$Enums.GovernmentLevel[]; createdByUserEmail: string | null; createdByUserName: string | null; - createdByUserId: string | null; + isUserGenerated: boolean; + moderationStatus: import(".prisma/client").$Enums.CampaignModerationStatus | null; + reviewedByUserId: string | null; + reviewedAt: Date | null; + rejectionReason: string | null; }>; create(data: CreateCampaignInput, user: AuthUser): Promise<{ status: import(".prisma/client").$Enums.CampaignStatus; @@ -116,10 +137,13 @@ export declare const campaignsService: { title: string; description: string | null; slug: string; + coverPhoto: string | null; + coverVideoId: number | null; + moderationNotes: string | null; + createdByUserId: string | null; emailSubject: string; emailBody: string; callToAction: string | null; - coverPhoto: string | null; allowSmtpEmail: boolean; allowMailtoLink: boolean; collectUserInfo: boolean; @@ -132,7 +156,11 @@ export declare const campaignsService: { targetGovernmentLevels: import(".prisma/client").$Enums.GovernmentLevel[]; createdByUserEmail: string | null; createdByUserName: string | null; - createdByUserId: string | null; + isUserGenerated: boolean; + moderationStatus: import(".prisma/client").$Enums.CampaignModerationStatus | null; + reviewedByUserId: string | null; + reviewedAt: Date | null; + rejectionReason: string | null; }>; update(id: string, data: UpdateCampaignInput): Promise<{ status: import(".prisma/client").$Enums.CampaignStatus; @@ -146,10 +174,13 @@ export declare const campaignsService: { title: string; description: string | null; slug: string; + coverPhoto: string | null; + coverVideoId: number | null; + moderationNotes: string | null; + createdByUserId: string | null; emailSubject: string; emailBody: string; callToAction: string | null; - coverPhoto: string | null; allowSmtpEmail: boolean; allowMailtoLink: boolean; collectUserInfo: boolean; @@ -162,7 +193,11 @@ export declare const campaignsService: { targetGovernmentLevels: import(".prisma/client").$Enums.GovernmentLevel[]; createdByUserEmail: string | null; createdByUserName: string | null; - createdByUserId: string | null; + isUserGenerated: boolean; + moderationStatus: import(".prisma/client").$Enums.CampaignModerationStatus | null; + reviewedByUserId: string | null; + reviewedAt: Date | null; + rejectionReason: string | null; }>; findActiveCampaigns(): Promise<{ status: import(".prisma/client").$Enums.CampaignStatus; @@ -176,10 +211,11 @@ export declare const campaignsService: { title: string; description: string | null; slug: string; + coverPhoto: string | null; + coverVideoId: number | null; emailSubject: string; emailBody: string; callToAction: string | null; - coverPhoto: string | null; allowSmtpEmail: boolean; allowMailtoLink: boolean; collectUserInfo: boolean; @@ -190,9 +226,9 @@ export declare const campaignsService: { showResponseWall: boolean; highlightCampaign: boolean; targetGovernmentLevels: import(".prisma/client").$Enums.GovernmentLevel[]; - createdByUserEmail: string | null; createdByUserName: string | null; - createdByUserId: string | null; + isUserGenerated: boolean; + moderationStatus: import(".prisma/client").$Enums.CampaignModerationStatus | null; }[]>; findBySlugPublic(slug: string): Promise<{ status: import(".prisma/client").$Enums.CampaignStatus; @@ -206,10 +242,45 @@ export declare const campaignsService: { title: string; description: string | null; slug: string; + coverPhoto: string | null; + coverVideoId: number | null; emailSubject: string; emailBody: string; callToAction: string | null; + allowSmtpEmail: boolean; + allowMailtoLink: boolean; + collectUserInfo: boolean; + showEmailCount: boolean; + showCallCount: boolean; + allowEmailEditing: boolean; + allowCustomRecipients: boolean; + showResponseWall: boolean; + highlightCampaign: boolean; + targetGovernmentLevels: import(".prisma/client").$Enums.GovernmentLevel[]; + createdByUserName: string | null; + isUserGenerated: boolean; + moderationStatus: import(".prisma/client").$Enums.CampaignModerationStatus | null; + }>; + delete(id: string): Promise; + createUserCampaign(data: CreateUserCampaignInput, user: AuthUser): Promise<{ + status: import(".prisma/client").$Enums.CampaignStatus; + id: string; + createdAt: Date; + updatedAt: Date; + _count: { + responses: number; + emails: number; + }; + title: string; + description: string | null; + slug: string; coverPhoto: string | null; + coverVideoId: number | null; + moderationNotes: string | null; + createdByUserId: string | null; + emailSubject: string; + emailBody: string; + callToAction: string | null; allowSmtpEmail: boolean; allowMailtoLink: boolean; collectUserInfo: boolean; @@ -222,9 +293,175 @@ export declare const campaignsService: { targetGovernmentLevels: import(".prisma/client").$Enums.GovernmentLevel[]; createdByUserEmail: string | null; createdByUserName: string | null; - createdByUserId: string | null; + isUserGenerated: boolean; + moderationStatus: import(".prisma/client").$Enums.CampaignModerationStatus | null; + reviewedByUserId: string | null; + reviewedAt: Date | null; + rejectionReason: string | null; + }>; + findUserCampaigns(userId: string): Promise<{ + status: import(".prisma/client").$Enums.CampaignStatus; + id: string; + createdAt: Date; + updatedAt: Date; + _count: { + responses: number; + emails: number; + }; + title: string; + description: string | null; + slug: string; + coverPhoto: string | null; + coverVideoId: number | null; + moderationNotes: string | null; + createdByUserId: string | null; + emailSubject: string; + emailBody: string; + callToAction: string | null; + allowSmtpEmail: boolean; + allowMailtoLink: boolean; + collectUserInfo: boolean; + showEmailCount: boolean; + showCallCount: boolean; + allowEmailEditing: boolean; + allowCustomRecipients: boolean; + showResponseWall: boolean; + highlightCampaign: boolean; + targetGovernmentLevels: import(".prisma/client").$Enums.GovernmentLevel[]; + createdByUserEmail: string | null; + createdByUserName: string | null; + isUserGenerated: boolean; + moderationStatus: import(".prisma/client").$Enums.CampaignModerationStatus | null; + reviewedByUserId: string | null; + reviewedAt: Date | null; + rejectionReason: string | null; + }[]>; + updateUserCampaign(id: string, data: Partial, user: AuthUser): Promise<{ + status: import(".prisma/client").$Enums.CampaignStatus; + id: string; + createdAt: Date; + updatedAt: Date; + _count: { + responses: number; + emails: number; + }; + title: string; + description: string | null; + slug: string; + coverPhoto: string | null; + coverVideoId: number | null; + moderationNotes: string | null; + createdByUserId: string | null; + emailSubject: string; + emailBody: string; + callToAction: string | null; + allowSmtpEmail: boolean; + allowMailtoLink: boolean; + collectUserInfo: boolean; + showEmailCount: boolean; + showCallCount: boolean; + allowEmailEditing: boolean; + allowCustomRecipients: boolean; + showResponseWall: boolean; + highlightCampaign: boolean; + targetGovernmentLevels: import(".prisma/client").$Enums.GovernmentLevel[]; + createdByUserEmail: string | null; + createdByUserName: string | null; + isUserGenerated: boolean; + moderationStatus: import(".prisma/client").$Enums.CampaignModerationStatus | null; + reviewedByUserId: string | null; + reviewedAt: Date | null; + rejectionReason: string | null; + }>; + findModerationQueue(filters: ListModerationQueueInput): Promise<{ + campaigns: { + status: import(".prisma/client").$Enums.CampaignStatus; + id: string; + createdAt: Date; + updatedAt: Date; + _count: { + responses: number; + emails: number; + }; + title: string; + description: string | null; + slug: string; + coverPhoto: string | null; + coverVideoId: number | null; + moderationNotes: string | null; + createdByUserId: string | null; + emailSubject: string; + emailBody: string; + callToAction: string | null; + allowSmtpEmail: boolean; + allowMailtoLink: boolean; + collectUserInfo: boolean; + showEmailCount: boolean; + showCallCount: boolean; + allowEmailEditing: boolean; + allowCustomRecipients: boolean; + showResponseWall: boolean; + highlightCampaign: boolean; + targetGovernmentLevels: import(".prisma/client").$Enums.GovernmentLevel[]; + createdByUserEmail: string | null; + createdByUserName: string | null; + isUserGenerated: boolean; + moderationStatus: import(".prisma/client").$Enums.CampaignModerationStatus | null; + reviewedByUserId: string | null; + reviewedAt: Date | null; + rejectionReason: string | null; + }[]; + pagination: { + page: number; + limit: number; + total: number; + totalPages: number; + }; + }>; + getModerationStats(): Promise<{ + total: number; + pending: number; + approved: number; + rejected: number; + changesRequested: number; + }>; + moderateCampaign(id: string, input: ModerateCampaignInput, reviewer: AuthUser): Promise<{ + status: import(".prisma/client").$Enums.CampaignStatus; + id: string; + createdAt: Date; + updatedAt: Date; + _count: { + responses: number; + emails: number; + }; + title: string; + description: string | null; + slug: string; + coverPhoto: string | null; + coverVideoId: number | null; + moderationNotes: string | null; + createdByUserId: string | null; + emailSubject: string; + emailBody: string; + callToAction: string | null; + allowSmtpEmail: boolean; + allowMailtoLink: boolean; + collectUserInfo: boolean; + showEmailCount: boolean; + showCallCount: boolean; + allowEmailEditing: boolean; + allowCustomRecipients: boolean; + showResponseWall: boolean; + highlightCampaign: boolean; + targetGovernmentLevels: import(".prisma/client").$Enums.GovernmentLevel[]; + createdByUserEmail: string | null; + createdByUserName: string | null; + isUserGenerated: boolean; + moderationStatus: import(".prisma/client").$Enums.CampaignModerationStatus | null; + reviewedByUserId: string | null; + reviewedAt: Date | null; + rejectionReason: string | null; }>; - delete(id: string): Promise; }; export {}; //# sourceMappingURL=campaigns.service.d.ts.map \ No newline at end of file diff --git a/api/dist/modules/influence/campaigns/campaigns.service.d.ts.map b/api/dist/modules/influence/campaigns/campaigns.service.d.ts.map index c3de8bd4..4af12606 100644 --- a/api/dist/modules/influence/campaigns/campaigns.service.d.ts.map +++ b/api/dist/modules/influence/campaigns/campaigns.service.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"campaigns.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/influence/campaigns/campaigns.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAGlD,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AA8DxG,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,eAAO,MAAM,gBAAgB;qBACJ,kBAAkB,SAAS,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA2CvC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAaF,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAaV,mBAAmB,QAAQ,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAgCrC,MAAM,QAAQ,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BA0CrB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAiBlB,MAAM;CAQxB,CAAC"} \ No newline at end of file +{"version":3,"file":"campaigns.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/influence/campaigns/campaigns.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,QAAQ,EAA4B,MAAM,gBAAgB,CAAC;AAI5E,OAAO,KAAK,EACV,mBAAmB,EAAE,mBAAmB,EAAE,kBAAkB,EAC5D,uBAAuB,EAA2B,qBAAqB,EAAE,wBAAwB,EAClG,MAAM,qBAAqB,CAAC;AAiH7B,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,eAAO,MAAM,gBAAgB;qBACJ,kBAAkB,SAAS,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0CvC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAaF,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAaV,mBAAmB,QAAQ,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAgCrC,MAAM,QAAQ,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BA0CrB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAiBlB,MAAM;6BAWQ,uBAAuB,QAAQ,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAwCtC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAQT,MAAM,QAAQ,OAAO,CAAC,uBAAuB,CAAC,QAAQ,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCA2CxD,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA0ChC,MAAM,SAAS,qBAAqB,YAAY,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqCpF,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/influence/campaigns/campaigns.service.js b/api/dist/modules/influence/campaigns/campaigns.service.js index 926acf62..f9d9c707 100644 --- a/api/dist/modules/influence/campaigns/campaigns.service.js +++ b/api/dist/modules/influence/campaigns/campaigns.service.js @@ -4,6 +4,15 @@ exports.campaignsService = void 0; const client_1 = require("@prisma/client"); const database_1 = require("../../../config/database"); const error_handler_1 = require("../../../middleware/error-handler"); +const roles_1 = require("../../../utils/roles"); +function escapeHtml(unsafe) { + return unsafe + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); +} const campaignSelect = { id: true, slug: true, @@ -13,6 +22,7 @@ const campaignSelect = { emailBody: true, callToAction: true, coverPhoto: true, + coverVideoId: true, status: true, allowSmtpEmail: true, allowMailtoLink: true, @@ -27,6 +37,46 @@ const campaignSelect = { createdByUserId: true, createdByUserEmail: true, createdByUserName: true, + isUserGenerated: true, + moderationStatus: true, + reviewedByUserId: true, + reviewedAt: true, + rejectionReason: true, + moderationNotes: true, + createdAt: true, + updatedAt: true, + _count: { + select: { + emails: true, + responses: true, + }, + }, +}; +/** Public-facing select — strips admin-only fields (emails, internal IDs, moderation notes) */ +const publicCampaignSelect = { + id: true, + slug: true, + title: true, + description: true, + emailSubject: true, + emailBody: true, + callToAction: true, + coverPhoto: true, + coverVideoId: true, + status: true, + allowSmtpEmail: true, + allowMailtoLink: true, + collectUserInfo: true, + showEmailCount: true, + showCallCount: true, + allowEmailEditing: true, + allowCustomRecipients: true, + showResponseWall: true, + highlightCampaign: true, + targetGovernmentLevels: true, + createdByUserName: true, + isUserGenerated: true, + moderationStatus: true, createdAt: true, updatedAt: true, _count: { @@ -72,8 +122,7 @@ exports.campaignsService = { if (status) where.status = status; // Non-admin users only see their own campaigns - const adminRoles = [client_1.UserRole.SUPER_ADMIN, client_1.UserRole.INFLUENCE_ADMIN, client_1.UserRole.MAP_ADMIN]; - if (user && !adminRoles.includes(user.role)) { + if (user && !(0, roles_1.hasAnyRole)(user, roles_1.ADMIN_ROLES)) { where.createdByUserId = user.id; } const [campaigns, total] = await Promise.all([ @@ -171,7 +220,7 @@ exports.campaignsService = { async findActiveCampaigns() { return database_1.prisma.campaign.findMany({ where: { status: 'ACTIVE' }, - select: campaignSelect, + select: publicCampaignSelect, orderBy: [ { highlightCampaign: 'desc' }, { createdAt: 'desc' }, @@ -181,7 +230,7 @@ exports.campaignsService = { async findBySlugPublic(slug) { const campaign = await database_1.prisma.campaign.findUnique({ where: { slug }, - select: campaignSelect, + select: publicCampaignSelect, }); if (!campaign) { throw new error_handler_1.AppError(404, 'Campaign not found', 'CAMPAIGN_NOT_FOUND'); @@ -198,5 +247,162 @@ exports.campaignsService = { } await database_1.prisma.campaign.delete({ where: { id } }); }, + // --- User-Generated Campaign Methods --- + async createUserCampaign(data, user) { + const baseSlug = generateSlug(data.title); + const slug = await resolveSlugCollision(baseSlug); + const dbUser = await database_1.prisma.user.findUnique({ + where: { id: user.id }, + select: { name: true }, + }); + const campaign = await database_1.prisma.campaign.create({ + data: { + slug, + title: escapeHtml(data.title), + description: data.description ? escapeHtml(data.description) : null, + emailSubject: escapeHtml(data.emailSubject), + emailBody: escapeHtml(data.emailBody), + callToAction: data.callToAction ? escapeHtml(data.callToAction) : null, + targetGovernmentLevels: data.targetGovernmentLevels, + status: 'DRAFT', + isUserGenerated: true, + moderationStatus: client_1.CampaignModerationStatus.PENDING_REVIEW, + allowSmtpEmail: false, + allowMailtoLink: true, + collectUserInfo: true, + showEmailCount: true, + showCallCount: false, + allowEmailEditing: false, + allowCustomRecipients: false, + showResponseWall: false, + highlightCampaign: false, + createdByUserId: user.id, + createdByUserEmail: user.email, + createdByUserName: dbUser?.name ?? null, + }, + select: campaignSelect, + }); + return campaign; + }, + async findUserCampaigns(userId) { + return database_1.prisma.campaign.findMany({ + where: { createdByUserId: userId, isUserGenerated: true }, + select: campaignSelect, + orderBy: { createdAt: 'desc' }, + }); + }, + async updateUserCampaign(id, data, user) { + const existing = await database_1.prisma.campaign.findUnique({ where: { id } }); + if (!existing) { + throw new error_handler_1.AppError(404, 'Campaign not found', 'CAMPAIGN_NOT_FOUND'); + } + if (existing.createdByUserId !== user.id) { + throw new error_handler_1.AppError(403, 'You can only edit your own campaigns', 'FORBIDDEN'); + } + if (!existing.isUserGenerated) { + throw new error_handler_1.AppError(403, 'Cannot edit admin-created campaigns', 'FORBIDDEN'); + } + if (existing.moderationStatus !== client_1.CampaignModerationStatus.CHANGES_REQUESTED && + existing.moderationStatus !== client_1.CampaignModerationStatus.PENDING_REVIEW) { + throw new error_handler_1.AppError(400, 'Campaign cannot be edited in its current state', 'INVALID_STATE'); + } + const updateData = {}; + if (data.title) { + updateData.title = escapeHtml(data.title); + const baseSlug = generateSlug(data.title); + updateData.slug = await resolveSlugCollision(baseSlug, id); + } + if (data.description !== undefined) + updateData.description = data.description ? escapeHtml(data.description) : null; + if (data.emailSubject) + updateData.emailSubject = escapeHtml(data.emailSubject); + if (data.emailBody) + updateData.emailBody = escapeHtml(data.emailBody); + if (data.callToAction !== undefined) + updateData.callToAction = data.callToAction ? escapeHtml(data.callToAction) : null; + if (data.targetGovernmentLevels) + updateData.targetGovernmentLevels = data.targetGovernmentLevels; + // Reset to pending review on edit + updateData.moderationStatus = client_1.CampaignModerationStatus.PENDING_REVIEW; + updateData.rejectionReason = null; + return database_1.prisma.campaign.update({ + where: { id }, + data: updateData, + select: campaignSelect, + }); + }, + // --- Moderation Methods --- + async findModerationQueue(filters) { + const { page, limit, search, moderationStatus } = filters; + const skip = (page - 1) * limit; + const where = { isUserGenerated: true }; + if (moderationStatus) + where.moderationStatus = moderationStatus; + if (search) { + where.OR = [ + { title: { contains: search, mode: 'insensitive' } }, + { createdByUserName: { contains: search, mode: 'insensitive' } }, + { createdByUserEmail: { contains: search, mode: 'insensitive' } }, + ]; + } + const [campaigns, total] = await Promise.all([ + database_1.prisma.campaign.findMany({ + where, + select: campaignSelect, + skip, + take: limit, + orderBy: { createdAt: 'desc' }, + }), + database_1.prisma.campaign.count({ where }), + ]); + return { + campaigns, + pagination: { page, limit, total, totalPages: Math.ceil(total / limit) }, + }; + }, + async getModerationStats() { + const [total, pending, approved, rejected, changesRequested] = await Promise.all([ + database_1.prisma.campaign.count({ where: { isUserGenerated: true } }), + database_1.prisma.campaign.count({ where: { moderationStatus: client_1.CampaignModerationStatus.PENDING_REVIEW } }), + database_1.prisma.campaign.count({ where: { moderationStatus: client_1.CampaignModerationStatus.APPROVED } }), + database_1.prisma.campaign.count({ where: { moderationStatus: client_1.CampaignModerationStatus.REJECTED } }), + database_1.prisma.campaign.count({ where: { moderationStatus: client_1.CampaignModerationStatus.CHANGES_REQUESTED } }), + ]); + return { total, pending, approved, rejected, changesRequested }; + }, + async moderateCampaign(id, input, reviewer) { + const existing = await database_1.prisma.campaign.findUnique({ where: { id } }); + if (!existing) { + throw new error_handler_1.AppError(404, 'Campaign not found', 'CAMPAIGN_NOT_FOUND'); + } + if (!existing.isUserGenerated) { + throw new error_handler_1.AppError(400, 'Only user-generated campaigns can be moderated', 'INVALID_STATE'); + } + const updateData = { + reviewedByUserId: reviewer.id, + reviewedAt: new Date(), + moderationNotes: input.notes ?? null, + }; + switch (input.action) { + case 'approve': + updateData.moderationStatus = client_1.CampaignModerationStatus.APPROVED; + updateData.status = 'ACTIVE'; + updateData.rejectionReason = null; + break; + case 'reject': + updateData.moderationStatus = client_1.CampaignModerationStatus.REJECTED; + updateData.rejectionReason = input.reason ?? null; + break; + case 'request_changes': + updateData.moderationStatus = client_1.CampaignModerationStatus.CHANGES_REQUESTED; + updateData.rejectionReason = input.reason ?? null; + break; + } + return database_1.prisma.campaign.update({ + where: { id }, + data: updateData, + select: campaignSelect, + }); + }, }; //# sourceMappingURL=campaigns.service.js.map \ No newline at end of file diff --git a/api/dist/modules/influence/campaigns/campaigns.service.js.map b/api/dist/modules/influence/campaigns/campaigns.service.js.map index d2ac06bf..c6099cba 100644 --- a/api/dist/modules/influence/campaigns/campaigns.service.js.map +++ b/api/dist/modules/influence/campaigns/campaigns.service.js.map @@ -1 +1 @@ -{"version":3,"file":"campaigns.service.js","sourceRoot":"","sources":["../../../../src/modules/influence/campaigns/campaigns.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"campaigns.service.js","sourceRoot":"","sources":["../../../../src/modules/influence/campaigns/campaigns.service.ts"],"names":[],"mappings":";;;AAAA,2CAA4E;AAC5E,uDAAkD;AAClD,qEAA6D;AAC7D,gDAA+D;AAM/D,SAAS,UAAU,CAAC,MAAc;IAChC,OAAO,MAAM;SACV,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,cAAc,GAAG;IACrB,EAAE,EAAE,IAAI;IACR,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;IACX,WAAW,EAAE,IAAI;IACjB,YAAY,EAAE,IAAI;IAClB,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,IAAI;IAClB,UAAU,EAAE,IAAI;IAChB,YAAY,EAAE,IAAI;IAClB,MAAM,EAAE,IAAI;IACZ,cAAc,EAAE,IAAI;IACpB,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;IACrB,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,IAAI;IACnB,iBAAiB,EAAE,IAAI;IACvB,qBAAqB,EAAE,IAAI;IAC3B,gBAAgB,EAAE,IAAI;IACtB,iBAAiB,EAAE,IAAI;IACvB,sBAAsB,EAAE,IAAI;IAC5B,eAAe,EAAE,IAAI;IACrB,kBAAkB,EAAE,IAAI;IACxB,iBAAiB,EAAE,IAAI;IACvB,eAAe,EAAE,IAAI;IACrB,gBAAgB,EAAE,IAAI;IACtB,gBAAgB,EAAE,IAAI;IACtB,UAAU,EAAE,IAAI;IAChB,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;IACrB,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,MAAM,EAAE;QACN,MAAM,EAAE;YACN,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,IAAI;SAChB;KACF;CAC8B,CAAC;AAElC,+FAA+F;AAC/F,MAAM,oBAAoB,GAAG;IAC3B,EAAE,EAAE,IAAI;IACR,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;IACX,WAAW,EAAE,IAAI;IACjB,YAAY,EAAE,IAAI;IAClB,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,IAAI;IAClB,UAAU,EAAE,IAAI;IAChB,YAAY,EAAE,IAAI;IAClB,MAAM,EAAE,IAAI;IACZ,cAAc,EAAE,IAAI;IACpB,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;IACrB,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,IAAI;IACnB,iBAAiB,EAAE,IAAI;IACvB,qBAAqB,EAAE,IAAI;IAC3B,gBAAgB,EAAE,IAAI;IACtB,iBAAiB,EAAE,IAAI;IACvB,sBAAsB,EAAE,IAAI;IAC5B,iBAAiB,EAAE,IAAI;IACvB,eAAe,EAAE,IAAI;IACrB,gBAAgB,EAAE,IAAI;IACtB,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,MAAM,EAAE;QACN,MAAM,EAAE;YACN,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,IAAI;SAChB;KACF;CAC8B,CAAC;AAElC,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,KAAK;SACT,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,IAAY,EAAE,SAAkB;IAClE,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,QAAQ,GAAG,MAAM,iBAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;YAChD,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YAC1B,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE;SACrB,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC;YAC1D,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,SAAS,GAAG,GAAG,IAAI,IAAI,MAAM,EAAE,CAAC;QAChC,MAAM,EAAE,CAAC;IACX,CAAC;AACH,CAAC;AAQY,QAAA,gBAAgB,GAAG;IAC9B,KAAK,CAAC,OAAO,CAAC,OAA2B,EAAE,IAAe;QACxD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAChD,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;QAEhC,MAAM,KAAK,GAA8B,EAAE,CAAC;QAE5C,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,CAAC,EAAE,GAAG;gBACT,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE;gBACpD,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE;aAC3D,CAAC;QACJ,CAAC;QAED,IAAI,MAAM;YAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAElC,+CAA+C;QAC/C,IAAI,IAAI,IAAI,CAAC,IAAA,kBAAU,EAAC,IAAI,EAAE,mBAAW,CAAC,EAAE,CAAC;YAC3C,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC;QAClC,CAAC;QAED,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC3C,iBAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACvB,KAAK;gBACL,MAAM,EAAE,cAAc;gBACtB,IAAI;gBACJ,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;aAC/B,CAAC;YACF,iBAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;SACjC,CAAC,CAAC;QAEH,OAAO;YACL,SAAS;YACT,UAAU,EAAE;gBACV,IAAI;gBACJ,KAAK;gBACL,KAAK;gBACL,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;aACrC;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,QAAQ,GAAG,MAAM,iBAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;YAChD,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,MAAM,EAAE,cAAc;SACvB,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,oBAAoB,EAAE,oBAAoB,CAAC,CAAC;QACtE,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAY;QAC3B,MAAM,QAAQ,GAAG,MAAM,iBAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;YAChD,KAAK,EAAE,EAAE,IAAI,EAAE;YACf,MAAM,EAAE,cAAc;SACvB,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,oBAAoB,EAAE,oBAAoB,CAAC,CAAC;QACtE,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAyB,EAAE,IAAc;QACpD,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAElD,4BAA4B;QAC5B,MAAM,MAAM,GAAG,MAAM,iBAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YAC1C,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;YACtB,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;SACvB,CAAC,CAAC;QAEH,sEAAsE;QACtE,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,MAAM,iBAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAC/B,KAAK,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE;gBAClC,IAAI,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE;aACnC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,iBAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC5C,IAAI,EAAE;gBACJ,GAAG,IAAI;gBACP,IAAI;gBACJ,eAAe,EAAE,IAAI,CAAC,EAAE;gBACxB,kBAAkB,EAAE,IAAI,CAAC,KAAK;gBAC9B,iBAAiB,EAAE,MAAM,EAAE,IAAI,IAAI,IAAI;aACxC;YACD,MAAM,EAAE,cAAc;SACvB,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,IAAyB;QAChD,MAAM,QAAQ,GAAG,MAAM,iBAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,oBAAoB,EAAE,oBAAoB,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,UAAU,GAA+B,EAAE,GAAG,IAAI,EAAE,CAAC;QAE3D,mCAAmC;QACnC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,EAAE,CAAC;YAChD,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1C,UAAU,CAAC,IAAI,GAAG,MAAM,oBAAoB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,sEAAsE;QACtE,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,MAAM,iBAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAC/B,KAAK,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;gBACnD,IAAI,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE;aACnC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,iBAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC5C,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,cAAc;SACvB,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,OAAO,iBAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC9B,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;YAC3B,MAAM,EAAE,oBAAoB;YAC5B,OAAO,EAAE;gBACP,EAAE,iBAAiB,EAAE,MAAM,EAAE;gBAC7B,EAAE,SAAS,EAAE,MAAM,EAAE;aACtB;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,IAAY;QACjC,MAAM,QAAQ,GAAG,MAAM,iBAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;YAChD,KAAK,EAAE,EAAE,IAAI,EAAE;YACf,MAAM,EAAE,oBAAoB;SAC7B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,oBAAoB,EAAE,oBAAoB,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,oBAAoB,EAAE,oBAAoB,CAAC,CAAC;QACtE,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,MAAM,QAAQ,GAAG,MAAM,iBAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,oBAAoB,EAAE,oBAAoB,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,iBAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,0CAA0C;IAE1C,KAAK,CAAC,kBAAkB,CAAC,IAA6B,EAAE,IAAc;QACpE,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAElD,MAAM,MAAM,GAAG,MAAM,iBAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YAC1C,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;YACtB,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;SACvB,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,iBAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC5C,IAAI,EAAE;gBACJ,IAAI;gBACJ,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC7B,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;gBACnE,YAAY,EAAE,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;gBAC3C,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;gBACrC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;gBACtE,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;gBACnD,MAAM,EAAE,OAAO;gBACf,eAAe,EAAE,IAAI;gBACrB,gBAAgB,EAAE,iCAAwB,CAAC,cAAc;gBACzD,cAAc,EAAE,KAAK;gBACrB,eAAe,EAAE,IAAI;gBACrB,eAAe,EAAE,IAAI;gBACrB,cAAc,EAAE,IAAI;gBACpB,aAAa,EAAE,KAAK;gBACpB,iBAAiB,EAAE,KAAK;gBACxB,qBAAqB,EAAE,KAAK;gBAC5B,gBAAgB,EAAE,KAAK;gBACvB,iBAAiB,EAAE,KAAK;gBACxB,eAAe,EAAE,IAAI,CAAC,EAAE;gBACxB,kBAAkB,EAAE,IAAI,CAAC,KAAK;gBAC9B,iBAAiB,EAAE,MAAM,EAAE,IAAI,IAAI,IAAI;aACxC;YACD,MAAM,EAAE,cAAc;SACvB,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,MAAc;QACpC,OAAO,iBAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC9B,KAAK,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE;YACzD,MAAM,EAAE,cAAc;YACtB,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,EAAU,EAAE,IAAsC,EAAE,IAAc;QACzF,MAAM,QAAQ,GAAG,MAAM,iBAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,oBAAoB,EAAE,oBAAoB,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,QAAQ,CAAC,eAAe,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,sCAAsC,EAAE,WAAW,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;YAC9B,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,qCAAqC,EAAE,WAAW,CAAC,CAAC;QAC9E,CAAC;QACD,IACE,QAAQ,CAAC,gBAAgB,KAAK,iCAAwB,CAAC,iBAAiB;YACxE,QAAQ,CAAC,gBAAgB,KAAK,iCAAwB,CAAC,cAAc,EACrE,CAAC;YACD,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,gDAAgD,EAAE,eAAe,CAAC,CAAC;QAC7F,CAAC;QAED,MAAM,UAAU,GAAwC,EAAE,CAAC;QAC3D,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1C,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1C,UAAU,CAAC,IAAI,GAAG,MAAM,oBAAoB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;YAAE,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACpH,IAAI,IAAI,CAAC,YAAY;YAAE,UAAU,CAAC,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC/E,IAAI,IAAI,CAAC,SAAS;YAAE,UAAU,CAAC,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtE,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;YAAE,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACxH,IAAI,IAAI,CAAC,sBAAsB;YAAE,UAAU,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC;QAEjG,kCAAkC;QAClC,UAAU,CAAC,gBAAgB,GAAG,iCAAwB,CAAC,cAAc,CAAC;QACtE,UAAU,CAAC,eAAe,GAAG,IAAI,CAAC;QAElC,OAAO,iBAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC5B,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,cAAc;SACvB,CAAC,CAAC;IACL,CAAC;IAED,6BAA6B;IAE7B,KAAK,CAAC,mBAAmB,CAAC,OAAiC;QACzD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC;QAC1D,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;QAEhC,MAAM,KAAK,GAA8B,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;QACnE,IAAI,gBAAgB;YAAE,KAAK,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QAChE,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,CAAC,EAAE,GAAG;gBACT,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE;gBACpD,EAAE,iBAAiB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE;gBAChE,EAAE,kBAAkB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE;aAClE,CAAC;QACJ,CAAC;QAED,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC3C,iBAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACvB,KAAK;gBACL,MAAM,EAAE,cAAc;gBACtB,IAAI;gBACJ,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;aAC/B,CAAC;YACF,iBAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;SACjC,CAAC,CAAC;QAEH,OAAO;YACL,SAAS;YACT,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,EAAE;SACzE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC/E,iBAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;YAC3D,iBAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,gBAAgB,EAAE,iCAAwB,CAAC,cAAc,EAAE,EAAE,CAAC;YAC/F,iBAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,gBAAgB,EAAE,iCAAwB,CAAC,QAAQ,EAAE,EAAE,CAAC;YACzF,iBAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,gBAAgB,EAAE,iCAAwB,CAAC,QAAQ,EAAE,EAAE,CAAC;YACzF,iBAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,gBAAgB,EAAE,iCAAwB,CAAC,iBAAiB,EAAE,EAAE,CAAC;SACnG,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,EAAU,EAAE,KAA4B,EAAE,QAAkB;QACjF,MAAM,QAAQ,GAAG,MAAM,iBAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,oBAAoB,EAAE,oBAAoB,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;YAC9B,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,gDAAgD,EAAE,eAAe,CAAC,CAAC;QAC7F,CAAC;QAED,MAAM,UAAU,GAAwC;YACtD,gBAAgB,EAAE,QAAQ,CAAC,EAAE;YAC7B,UAAU,EAAE,IAAI,IAAI,EAAE;YACtB,eAAe,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;SACrC,CAAC;QAEF,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;YACrB,KAAK,SAAS;gBACZ,UAAU,CAAC,gBAAgB,GAAG,iCAAwB,CAAC,QAAQ,CAAC;gBAChE,UAAU,CAAC,MAAM,GAAG,QAAQ,CAAC;gBAC7B,UAAU,CAAC,eAAe,GAAG,IAAI,CAAC;gBAClC,MAAM;YACR,KAAK,QAAQ;gBACX,UAAU,CAAC,gBAAgB,GAAG,iCAAwB,CAAC,QAAQ,CAAC;gBAChE,UAAU,CAAC,eAAe,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC;gBAClD,MAAM;YACR,KAAK,iBAAiB;gBACpB,UAAU,CAAC,gBAAgB,GAAG,iCAAwB,CAAC,iBAAiB,CAAC;gBACzE,UAAU,CAAC,eAAe,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC;gBAClD,MAAM;QACV,CAAC;QAED,OAAO,iBAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC5B,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,cAAc;SACvB,CAAC,CAAC;IACL,CAAC;CACF,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/influence/email-queue/email-queue.routes.d.ts.map b/api/dist/modules/influence/email-queue/email-queue.routes.d.ts.map index 8e55d953..2c8e3fc3 100644 --- a/api/dist/modules/influence/email-queue/email-queue.routes.d.ts.map +++ b/api/dist/modules/influence/email-queue/email-queue.routes.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"email-queue.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/influence/email-queue/email-queue.routes.ts"],"names":[],"mappings":"AAQA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAwDxB,OAAO,EAAE,MAAM,IAAI,gBAAgB,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"email-queue.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/influence/email-queue/email-queue.routes.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAwDxB,OAAO,EAAE,MAAM,IAAI,gBAAgB,EAAE,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/influence/email-queue/email-queue.routes.js b/api/dist/modules/influence/email-queue/email-queue.routes.js index 5acd2751..6716be1f 100644 --- a/api/dist/modules/influence/email-queue/email-queue.routes.js +++ b/api/dist/modules/influence/email-queue/email-queue.routes.js @@ -2,15 +2,14 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.emailQueueRouter = void 0; const express_1 = require("express"); -const client_1 = require("@prisma/client"); const auth_middleware_1 = require("../../../middleware/auth.middleware"); const rbac_middleware_1 = require("../../../middleware/rbac.middleware"); const email_queue_service_1 = require("../../../services/email-queue.service"); -const ADMIN_ROLES = [client_1.UserRole.SUPER_ADMIN, client_1.UserRole.INFLUENCE_ADMIN, client_1.UserRole.MAP_ADMIN]; +const roles_1 = require("../../../utils/roles"); const router = (0, express_1.Router)(); exports.emailQueueRouter = router; router.use(auth_middleware_1.authenticate); -router.use((0, rbac_middleware_1.requireRole)(...ADMIN_ROLES)); +router.use((0, rbac_middleware_1.requireRole)(...roles_1.INFLUENCE_ROLES)); // GET /api/email-queue/stats router.get('/stats', async (_req, res, next) => { try { diff --git a/api/dist/modules/influence/email-queue/email-queue.routes.js.map b/api/dist/modules/influence/email-queue/email-queue.routes.js.map index ff8be6fd..f1465529 100644 --- a/api/dist/modules/influence/email-queue/email-queue.routes.js.map +++ b/api/dist/modules/influence/email-queue/email-queue.routes.js.map @@ -1 +1 @@ -{"version":3,"file":"email-queue.routes.js","sourceRoot":"","sources":["../../../../src/modules/influence/email-queue/email-queue.routes.ts"],"names":[],"mappings":";;;AAAA,qCAAkE;AAClE,2CAA0C;AAC1C,yEAAmE;AACnE,yEAAkE;AAClE,+EAA0E;AAE1E,MAAM,WAAW,GAAe,CAAC,iBAAQ,CAAC,WAAW,EAAE,iBAAQ,CAAC,eAAe,EAAE,iBAAQ,CAAC,SAAS,CAAC,CAAC;AAErG,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;AAwDL,kCAAgB;AAvDnC,MAAM,CAAC,GAAG,CAAC,8BAAY,CAAC,CAAC;AACzB,MAAM,CAAC,GAAG,CAAC,IAAA,6BAAW,EAAC,GAAG,WAAW,CAAC,CAAC,CAAC;AAExC,6BAA6B;AAC7B,MAAM,CAAC,GAAG,CACR,QAAQ,EACR,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACzD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,uCAAiB,CAAC,QAAQ,EAAE,CAAC;QACjD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,8BAA8B;AAC9B,MAAM,CAAC,IAAI,CACT,QAAQ,EACR,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACzD,IAAI,CAAC;QACH,MAAM,uCAAiB,CAAC,KAAK,EAAE,CAAC;QAChC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,+BAA+B;AAC/B,MAAM,CAAC,IAAI,CACT,SAAS,EACT,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACzD,IAAI,CAAC;QACH,MAAM,uCAAiB,CAAC,MAAM,EAAE,CAAC;QACjC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,8BAA8B;AAC9B,MAAM,CAAC,IAAI,CACT,QAAQ,EACR,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACzD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,uCAAiB,CAAC,KAAK,EAAE,CAAC;QAChD,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,OAAO,iBAAiB,EAAE,OAAO,EAAE,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC"} \ No newline at end of file +{"version":3,"file":"email-queue.routes.js","sourceRoot":"","sources":["../../../../src/modules/influence/email-queue/email-queue.routes.ts"],"names":[],"mappings":";;;AAAA,qCAAkE;AAClE,yEAAmE;AACnE,yEAAkE;AAClE,+EAA0E;AAC1E,gDAAuD;AAEvD,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;AAwDL,kCAAgB;AAvDnC,MAAM,CAAC,GAAG,CAAC,8BAAY,CAAC,CAAC;AACzB,MAAM,CAAC,GAAG,CAAC,IAAA,6BAAW,EAAC,GAAG,uBAAe,CAAC,CAAC,CAAC;AAE5C,6BAA6B;AAC7B,MAAM,CAAC,GAAG,CACR,QAAQ,EACR,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACzD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,uCAAiB,CAAC,QAAQ,EAAE,CAAC;QACjD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,8BAA8B;AAC9B,MAAM,CAAC,IAAI,CACT,QAAQ,EACR,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACzD,IAAI,CAAC;QACH,MAAM,uCAAiB,CAAC,KAAK,EAAE,CAAC;QAChC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,+BAA+B;AAC/B,MAAM,CAAC,IAAI,CACT,SAAS,EACT,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACzD,IAAI,CAAC;QACH,MAAM,uCAAiB,CAAC,MAAM,EAAE,CAAC;QACjC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,8BAA8B;AAC9B,MAAM,CAAC,IAAI,CACT,QAAQ,EACR,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACzD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,uCAAiB,CAAC,KAAK,EAAE,CAAC;QAChD,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,OAAO,iBAAiB,EAAE,OAAO,EAAE,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/influence/postal-codes/postal-codes.schemas.d.ts b/api/dist/modules/influence/postal-codes/postal-codes.schemas.d.ts index f44735b5..7966cb28 100644 --- a/api/dist/modules/influence/postal-codes/postal-codes.schemas.d.ts +++ b/api/dist/modules/influence/postal-codes/postal-codes.schemas.d.ts @@ -13,9 +13,9 @@ export declare const postalCodeParamSchema: z.ZodObject<{ export declare const postalCodeQuerySchema: z.ZodObject<{ refresh: z.ZodDefault>>; }, "strip", z.ZodTypeAny, { - refresh: "true" | "false"; + refresh: "false" | "true"; }, { - refresh?: "true" | "false" | undefined; + refresh?: "false" | "true" | undefined; }>; export type PostalCodeParam = z.infer; export type PostalCodeQuery = z.infer; diff --git a/api/dist/modules/influence/postal-codes/postal-codes.service.d.ts b/api/dist/modules/influence/postal-codes/postal-codes.service.d.ts index 44a1b2b2..b9408660 100644 --- a/api/dist/modules/influence/postal-codes/postal-codes.service.d.ts +++ b/api/dist/modules/influence/postal-codes/postal-codes.service.d.ts @@ -12,18 +12,18 @@ export declare const postalCodesService: { city: string | null; postalCode: string; province: string | null; + lastUpdated: Date; centroidLat: Prisma.Decimal | null; centroidLng: Prisma.Decimal | null; - lastUpdated: Date; }>; findByPostalCode(code: string): Promise<{ id: string; city: string | null; postalCode: string; province: string | null; + lastUpdated: Date; centroidLat: Prisma.Decimal | null; centroidLng: Prisma.Decimal | null; - lastUpdated: Date; } | null>; findAll(filters: { page: number; @@ -35,9 +35,9 @@ export declare const postalCodesService: { city: string | null; postalCode: string; province: string | null; + lastUpdated: Date; centroidLat: Prisma.Decimal | null; centroidLng: Prisma.Decimal | null; - lastUpdated: Date; }[]; pagination: { page: number; @@ -51,9 +51,9 @@ export declare const postalCodesService: { city: string | null; postalCode: string; province: string | null; + lastUpdated: Date; centroidLat: Prisma.Decimal | null; centroidLng: Prisma.Decimal | null; - lastUpdated: Date; }>; }; export {}; diff --git a/api/dist/modules/influence/representatives/representatives.routes.d.ts.map b/api/dist/modules/influence/representatives/representatives.routes.d.ts.map index fe638479..164403e5 100644 --- a/api/dist/modules/influence/representatives/representatives.routes.d.ts.map +++ b/api/dist/modules/influence/representatives/representatives.routes.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"representatives.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/influence/representatives/representatives.routes.ts"],"names":[],"mappings":"AAWA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAiHxB,OAAO,EAAE,MAAM,IAAI,qBAAqB,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"representatives.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/influence/representatives/representatives.routes.ts"],"names":[],"mappings":"AASA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAiHxB,OAAO,EAAE,MAAM,IAAI,qBAAqB,EAAE,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/influence/representatives/representatives.routes.js b/api/dist/modules/influence/representatives/representatives.routes.js index 441730d8..3a6f26a7 100644 --- a/api/dist/modules/influence/representatives/representatives.routes.js +++ b/api/dist/modules/influence/representatives/representatives.routes.js @@ -2,14 +2,13 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.representativesRouter = void 0; const express_1 = require("express"); -const client_1 = require("@prisma/client"); const representatives_service_1 = require("./representatives.service"); const representatives_schemas_1 = require("./representatives.schemas"); const postal_codes_schemas_1 = require("../postal-codes/postal-codes.schemas"); const validate_1 = require("../../../middleware/validate"); const auth_middleware_1 = require("../../../middleware/auth.middleware"); const rbac_middleware_1 = require("../../../middleware/rbac.middleware"); -const ADMIN_ROLES = [client_1.UserRole.SUPER_ADMIN, client_1.UserRole.INFLUENCE_ADMIN, client_1.UserRole.MAP_ADMIN]; +const roles_1 = require("../../../utils/roles"); const router = (0, express_1.Router)(); exports.representativesRouter = router; // ============================================= @@ -41,7 +40,7 @@ router.get('/test-connection', async (_req, res, next) => { // ADMIN ROUTES (auth + role required) // ============================================= router.use(auth_middleware_1.authenticate); -router.use((0, rbac_middleware_1.requireRole)(...ADMIN_ROLES)); +router.use((0, rbac_middleware_1.requireRole)(...roles_1.INFLUENCE_ROLES)); // GET /api/representatives/cache-stats — cache statistics router.get('/cache-stats', async (_req, res, next) => { try { diff --git a/api/dist/modules/influence/representatives/representatives.routes.js.map b/api/dist/modules/influence/representatives/representatives.routes.js.map index 77e2c75e..07a0d8c8 100644 --- a/api/dist/modules/influence/representatives/representatives.routes.js.map +++ b/api/dist/modules/influence/representatives/representatives.routes.js.map @@ -1 +1 @@ -{"version":3,"file":"representatives.routes.js","sourceRoot":"","sources":["../../../../src/modules/influence/representatives/representatives.routes.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"representatives.routes.js","sourceRoot":"","sources":["../../../../src/modules/influence/representatives/representatives.routes.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/api/dist/modules/influence/representatives/representatives.service.d.ts b/api/dist/modules/influence/representatives/representatives.service.d.ts index f46839c6..34b47854 100644 --- a/api/dist/modules/influence/representatives/representatives.service.d.ts +++ b/api/dist/modules/influence/representatives/representatives.service.d.ts @@ -14,13 +14,13 @@ export declare const representativesService: { name: string | null; url: string | null; postalCode: string; + cachedAt: Date; districtName: string | null; electedOffice: string | null; partyName: string | null; representativeSetName: string | null; photoUrl: string | null; offices: Prisma.JsonValue | null; - cachedAt: Date; }[]; } | { source: "api"; @@ -51,13 +51,13 @@ export declare const representativesService: { name: string | null; url: string | null; postalCode: string; + cachedAt: Date; districtName: string | null; electedOffice: string | null; partyName: string | null; representativeSetName: string | null; photoUrl: string | null; offices: Prisma.JsonValue | null; - cachedAt: Date; }[]; pagination: { page: number; @@ -72,13 +72,13 @@ export declare const representativesService: { name: string | null; url: string | null; postalCode: string; + cachedAt: Date; districtName: string | null; electedOffice: string | null; partyName: string | null; representativeSetName: string | null; photoUrl: string | null; offices: Prisma.JsonValue | null; - cachedAt: Date; }>; clearByPostalCode(code: string): Promise<{ deleted: number; diff --git a/api/dist/modules/influence/responses/responses.routes.d.ts.map b/api/dist/modules/influence/responses/responses.routes.d.ts.map index 1127e210..c06bb025 100644 --- a/api/dist/modules/influence/responses/responses.routes.d.ts.map +++ b/api/dist/modules/influence/responses/responses.routes.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"responses.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/influence/responses/responses.routes.ts"],"names":[],"mappings":"AAkBA,QAAA,MAAM,oBAAoB,4CAAW,CAAC;AAiDtC,QAAA,MAAM,qBAAqB,4CAAW,CAAC;AA6EvC,QAAA,MAAM,oBAAoB,4CAAW,CAAC;AA6DtC,OAAO,EAAE,oBAAoB,IAAI,4BAA4B,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"responses.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/influence/responses/responses.routes.ts"],"names":[],"mappings":"AAgBA,QAAA,MAAM,oBAAoB,4CAAW,CAAC;AAiDtC,QAAA,MAAM,qBAAqB,4CAAW,CAAC;AA6EvC,QAAA,MAAM,oBAAoB,4CAAW,CAAC;AA6DtC,OAAO,EAAE,oBAAoB,IAAI,4BAA4B,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/influence/responses/responses.routes.js b/api/dist/modules/influence/responses/responses.routes.js index cdabe1bd..25fb5cd7 100644 --- a/api/dist/modules/influence/responses/responses.routes.js +++ b/api/dist/modules/influence/responses/responses.routes.js @@ -2,7 +2,6 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.responsesAdminRouter = exports.responsesPublicRouter = exports.responseCampaignPublicRouter = void 0; const express_1 = require("express"); -const client_1 = require("@prisma/client"); const responses_service_1 = require("./responses.service"); const responses_schemas_1 = require("./responses.schemas"); const validate_1 = require("../../../middleware/validate"); @@ -10,7 +9,7 @@ const auth_middleware_1 = require("../../../middleware/auth.middleware"); const auth_middleware_2 = require("../../../middleware/auth.middleware"); const rbac_middleware_1 = require("../../../middleware/rbac.middleware"); const rate_limit_1 = require("../../../middleware/rate-limit"); -const ADMIN_ROLES = [client_1.UserRole.SUPER_ADMIN, client_1.UserRole.INFLUENCE_ADMIN, client_1.UserRole.MAP_ADMIN]; +const roles_1 = require("../../../utils/roles"); // --- Campaign-scoped public routes (mount at /api/campaigns) --- const campaignPublicRouter = (0, express_1.Router)(); exports.responseCampaignPublicRouter = campaignPublicRouter; @@ -111,7 +110,7 @@ responsesPublicRouter.get('/:id/report/:token', async (req, res, next) => { const responsesAdminRouter = (0, express_1.Router)(); exports.responsesAdminRouter = responsesAdminRouter; responsesAdminRouter.use(auth_middleware_1.authenticate); -responsesAdminRouter.use((0, rbac_middleware_1.requireRole)(...ADMIN_ROLES)); +responsesAdminRouter.use((0, rbac_middleware_1.requireRole)(...roles_1.INFLUENCE_ROLES)); // GET /api/responses responsesAdminRouter.get('/', (0, validate_1.validate)(responses_schemas_1.listAdminResponsesSchema, 'query'), async (req, res, next) => { try { diff --git a/api/dist/modules/influence/responses/responses.routes.js.map b/api/dist/modules/influence/responses/responses.routes.js.map index 160a2484..19c8730e 100644 --- a/api/dist/modules/influence/responses/responses.routes.js.map +++ b/api/dist/modules/influence/responses/responses.routes.js.map @@ -1 +1 @@ -{"version":3,"file":"responses.routes.js","sourceRoot":"","sources":["../../../../src/modules/influence/responses/responses.routes.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"responses.routes.js","sourceRoot":"","sources":["../../../../src/modules/influence/responses/responses.routes.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/api/dist/modules/influence/responses/responses.schemas.d.ts b/api/dist/modules/influence/responses/responses.schemas.d.ts index 1e87d1eb..b0c27a40 100644 --- a/api/dist/modules/influence/responses/responses.schemas.d.ts +++ b/api/dist/modules/influence/responses/responses.schemas.d.ts @@ -82,11 +82,11 @@ export declare const listAdminResponsesSchema: z.ZodObject<{ }, "strip", z.ZodTypeAny, { limit: number; page: number; - status?: "PENDING" | "APPROVED" | "REJECTED" | undefined; + status?: "APPROVED" | "PENDING" | "REJECTED" | undefined; search?: string | undefined; campaignId?: string | undefined; }, { - status?: "PENDING" | "APPROVED" | "REJECTED" | undefined; + status?: "APPROVED" | "PENDING" | "REJECTED" | undefined; search?: string | undefined; limit?: number | undefined; page?: number | undefined; @@ -99,9 +99,9 @@ export declare const updateResponseStatusSchema: z.ZodObject<{ REJECTED: "REJECTED"; }>; }, "strip", z.ZodTypeAny, { - status: "PENDING" | "APPROVED" | "REJECTED"; + status: "APPROVED" | "PENDING" | "REJECTED"; }, { - status: "PENDING" | "APPROVED" | "REJECTED"; + status: "APPROVED" | "PENDING" | "REJECTED"; }>; export type SubmitResponseInput = z.infer; export type ListPublicResponsesInput = z.infer; diff --git a/api/dist/modules/influence/responses/responses.schemas.js b/api/dist/modules/influence/responses/responses.schemas.js index 1bc7901e..7533f64a 100644 --- a/api/dist/modules/influence/responses/responses.schemas.js +++ b/api/dist/modules/influence/responses/responses.schemas.js @@ -4,14 +4,14 @@ exports.updateResponseStatusSchema = exports.listAdminResponsesSchema = exports. const zod_1 = require("zod"); const client_1 = require("@prisma/client"); exports.submitResponseSchema = zod_1.z.object({ - representativeName: zod_1.z.string().min(1, 'Representative name is required'), + representativeName: zod_1.z.string().min(1, 'Representative name is required').max(200), representativeLevel: zod_1.z.nativeEnum(client_1.GovernmentLevel), responseType: zod_1.z.nativeEnum(client_1.ResponseType), - responseText: zod_1.z.string().min(1, 'Response text is required'), - representativeTitle: zod_1.z.string().optional(), + responseText: zod_1.z.string().min(1, 'Response text is required').max(5000), + representativeTitle: zod_1.z.string().max(200).optional(), representativeEmail: zod_1.z.string().email().optional(), - userComment: zod_1.z.string().optional(), - submittedByName: zod_1.z.string().optional(), + userComment: zod_1.z.string().max(1000).optional(), + submittedByName: zod_1.z.string().max(200).optional(), submittedByEmail: zod_1.z.string().email().optional(), isAnonymous: zod_1.z.boolean().optional().default(false), sendVerification: zod_1.z.boolean().optional().default(false), diff --git a/api/dist/modules/influence/responses/responses.schemas.js.map b/api/dist/modules/influence/responses/responses.schemas.js.map index b9fdc107..c41658fe 100644 --- a/api/dist/modules/influence/responses/responses.schemas.js.map +++ b/api/dist/modules/influence/responses/responses.schemas.js.map @@ -1 +1 @@ -{"version":3,"file":"responses.schemas.js","sourceRoot":"","sources":["../../../../src/modules/influence/responses/responses.schemas.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,2CAA+E;AAElE,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,kBAAkB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,iCAAiC,CAAC;IACxE,mBAAmB,EAAE,OAAC,CAAC,UAAU,CAAC,wBAAe,CAAC;IAClD,YAAY,EAAE,OAAC,CAAC,UAAU,CAAC,qBAAY,CAAC;IACxC,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,2BAA2B,CAAC;IAC5D,mBAAmB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1C,mBAAmB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;IAClD,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;IAC/C,WAAW,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAClD,gBAAgB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACxD,CAAC,CAAC;AAEU,QAAA,yBAAyB,GAAG,OAAC,CAAC,MAAM,CAAC;IAChD,IAAI,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9D,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC5E,KAAK,EAAE,OAAC,CAAC,UAAU,CAAC,wBAAe,CAAC,CAAC,QAAQ,EAAE;CAChD,CAAC,CAAC;AAEU,QAAA,wBAAwB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC/C,IAAI,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9D,MAAM,EAAE,OAAC,CAAC,UAAU,CAAC,uBAAc,CAAC,CAAC,QAAQ,EAAE;IAC/C,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAEU,QAAA,0BAA0B,GAAG,OAAC,CAAC,MAAM,CAAC;IACjD,MAAM,EAAE,OAAC,CAAC,UAAU,CAAC,uBAAc,CAAC;CACrC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"responses.schemas.js","sourceRoot":"","sources":["../../../../src/modules/influence/responses/responses.schemas.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,2CAA+E;AAElE,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,kBAAkB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,iCAAiC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACjF,mBAAmB,EAAE,OAAC,CAAC,UAAU,CAAC,wBAAe,CAAC;IAClD,YAAY,EAAE,OAAC,CAAC,UAAU,CAAC,qBAAY,CAAC;IACxC,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,2BAA2B,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;IACtE,mBAAmB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACnD,mBAAmB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;IAClD,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;IAC5C,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC/C,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;IAC/C,WAAW,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAClD,gBAAgB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACxD,CAAC,CAAC;AAEU,QAAA,yBAAyB,GAAG,OAAC,CAAC,MAAM,CAAC;IAChD,IAAI,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9D,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC5E,KAAK,EAAE,OAAC,CAAC,UAAU,CAAC,wBAAe,CAAC,CAAC,QAAQ,EAAE;CAChD,CAAC,CAAC;AAEU,QAAA,wBAAwB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC/C,IAAI,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9D,MAAM,EAAE,OAAC,CAAC,UAAU,CAAC,uBAAc,CAAC,CAAC,QAAQ,EAAE;IAC/C,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAEU,QAAA,0BAA0B,GAAG,OAAC,CAAC,MAAM,CAAC;IACjD,MAAM,EAAE,OAAC,CAAC,UAAU,CAAC,uBAAc,CAAC;CACrC,CAAC,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/influence/responses/responses.service.d.ts b/api/dist/modules/influence/responses/responses.service.d.ts index c7664887..c8c94014 100644 --- a/api/dist/modules/influence/responses/responses.service.d.ts +++ b/api/dist/modules/influence/responses/responses.service.d.ts @@ -100,8 +100,9 @@ export declare const responsesService: { createdAt: Date; updatedAt: Date; upvoteCount: number; - campaignSlug: string; + submittedByUserId: string | null; campaignId: string; + campaignSlug: string; representativeName: string; representativeTitle: string | null; representativeLevel: import(".prisma/client").$Enums.GovernmentLevel; @@ -119,7 +120,6 @@ export declare const responsesService: { verifiedAt: Date | null; verifiedBy: string | null; submittedIp: string | null; - submittedByUserId: string | null; }>; deleteResponse(id: string): Promise; resendVerification(id: string): Promise<{ diff --git a/api/dist/modules/influence/responses/responses.service.d.ts.map b/api/dist/modules/influence/responses/responses.service.d.ts.map index c23a7dcc..840a4fd5 100644 --- a/api/dist/modules/influence/responses/responses.service.d.ts.map +++ b/api/dist/modules/influence/responses/responses.service.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"responses.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/influence/responses/responses.service.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EAC1B,MAAM,qBAAqB,CAAC;AAI7B,eAAO,MAAM,gBAAgB;yBAGA,MAAM,QAAQ,mBAAmB,aAAa,MAAM;;;;;uBAmEtD,MAAM,WAAW,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;mBA0D7C,MAAM;;;;;;uBA2BF,MAAM,WAAW,MAAM,WAAW,MAAM;;;;;;;6BAgClC,MAAM,WAAW,MAAM,WAAW,MAAM;;;uBAwB9C,MAAM,SAAS,MAAM;;;;;;;;;uBAqCrB,MAAM,SAAS,MAAM;;;;;;;;;qBA6BvB,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAwDvB,MAAM,QAAQ,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAUrC,MAAM;2BAOF,MAAM;;;CA6CpC,CAAC"} \ No newline at end of file +{"version":3,"file":"responses.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/influence/responses/responses.service.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EAC1B,MAAM,qBAAqB,CAAC;AAI7B,eAAO,MAAM,gBAAgB;yBAGA,MAAM,QAAQ,mBAAmB,aAAa,MAAM;;;;;uBA8FtD,MAAM,WAAW,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;mBA0D7C,MAAM;;;;;;uBA2BF,MAAM,WAAW,MAAM,WAAW,MAAM;;;;;;;6BAgClC,MAAM,WAAW,MAAM,WAAW,MAAM;;;uBAwB9C,MAAM,SAAS,MAAM;;;;;;;;;uBAqCrB,MAAM,SAAS,MAAM;;;;;;;;;qBA6BvB,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAwDvB,MAAM,QAAQ,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAUrC,MAAM;2BAOF,MAAM;;;CA6CpC,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/influence/responses/responses.service.js b/api/dist/modules/influence/responses/responses.service.js index 6cd8693e..beed69c6 100644 --- a/api/dist/modules/influence/responses/responses.service.js +++ b/api/dist/modules/influence/responses/responses.service.js @@ -6,8 +6,12 @@ const client_1 = require("@prisma/client"); const database_1 = require("../../../config/database"); const error_handler_1 = require("../../../middleware/error-handler"); const email_service_1 = require("../../../services/email.service"); +const notification_queue_service_1 = require("../../../services/notification-queue.service"); +const notification_helper_1 = require("../../../services/notification.helper"); const env_1 = require("../../../config/env"); +const logger_1 = require("../../../utils/logger"); const metrics_1 = require("../../../utils/metrics"); +const rocketchat_webhook_service_1 = require("../../../services/rocketchat-webhook.service"); const VERIFICATION_EXPIRY_DAYS = 30; exports.responsesService = { // --- Public --- @@ -64,6 +68,32 @@ exports.responsesService = { }); } (0, metrics_1.recordResponseSubmission)(); + // Notification: admin response submitted alert + try { + if (await (0, notification_helper_1.isNotificationEnabled)('notifyAdminResponseSubmitted')) { + const adminEmails = await (0, notification_helper_1.getAdminEmailsByRole)([client_1.UserRole.SUPER_ADMIN, client_1.UserRole.INFLUENCE_ADMIN]); + if (adminEmails.length > 0) { + const adminUrl = `${env_1.env.ADMIN_URL || 'http://localhost:3000'}/app/influence/responses`; + await notification_queue_service_1.notificationQueueService.enqueue({ + type: 'admin-response-submitted', + adminEmails, + campaignTitle: campaign.title, + representativeName: data.representativeName, + responseType: data.responseType, + submitterName: data.isAnonymous ? 'Anonymous' : (data.submittedByName || 'Anonymous'), + adminUrl, + }); + } + } + } + catch (err) { + logger_1.logger.error('Failed to enqueue response submitted notification:', err); + } + // Notify Rocket.Chat + rocketchat_webhook_service_1.rocketchatWebhookService.onCampaignResponseSubmitted({ + campaignTitle: campaign.title, + representativeName: data.representativeName, + }).catch(() => { }); return { id: response.id, status: response.status, diff --git a/api/dist/modules/influence/responses/responses.service.js.map b/api/dist/modules/influence/responses/responses.service.js.map index 20943ccf..17e82049 100644 --- a/api/dist/modules/influence/responses/responses.service.js.map +++ b/api/dist/modules/influence/responses/responses.service.js.map @@ -1 +1 @@ -{"version":3,"file":"responses.service.js","sourceRoot":"","sources":["../../../../src/modules/influence/responses/responses.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"responses.service.js","sourceRoot":"","sources":["../../../../src/modules/influence/responses/responses.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/api/dist/modules/listmonk/listmonk.routes.d.ts.map b/api/dist/modules/listmonk/listmonk.routes.d.ts.map index 4bfdc787..3742584a 100644 --- a/api/dist/modules/listmonk/listmonk.routes.d.ts.map +++ b/api/dist/modules/listmonk/listmonk.routes.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"listmonk.routes.d.ts","sourceRoot":"","sources":["../../../src/modules/listmonk/listmonk.routes.ts"],"names":[],"mappings":"AAQA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAgJxB,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"listmonk.routes.d.ts","sourceRoot":"","sources":["../../../src/modules/listmonk/listmonk.routes.ts"],"names":[],"mappings":"AASA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAwJxB,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/listmonk/listmonk.routes.js b/api/dist/modules/listmonk/listmonk.routes.js index 261a0f63..8efa267d 100644 --- a/api/dist/modules/listmonk/listmonk.routes.js +++ b/api/dist/modules/listmonk/listmonk.routes.js @@ -2,16 +2,17 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.listmonkRouter = void 0; const express_1 = require("express"); -const client_1 = require("@prisma/client"); const auth_middleware_1 = require("../../middleware/auth.middleware"); const rbac_middleware_1 = require("../../middleware/rbac.middleware"); const listmonk_client_1 = require("../../services/listmonk.client"); const listmonk_sync_service_1 = require("../../services/listmonk-sync.service"); +const listmonk_event_sync_service_1 = require("../../services/listmonk-event-sync.service"); const env_1 = require("../../config/env"); +const roles_1 = require("../../utils/roles"); const router = (0, express_1.Router)(); exports.listmonkRouter = router; router.use(auth_middleware_1.authenticate); -router.use((0, rbac_middleware_1.requireRole)(client_1.UserRole.SUPER_ADMIN)); +router.use((0, rbac_middleware_1.requireRole)(...roles_1.BROADCAST_ROLES)); // GET /api/listmonk — sync status router.get('/', async (_req, res, next) => { try { @@ -119,6 +120,10 @@ router.post('/reinitialize', async (_req, res, next) => { next(err); } }); +// GET /api/listmonk/event-sync-stats — event-driven sync stats +router.get('/event-sync-stats', (_req, res) => { + res.json(listmonk_event_sync_service_1.listmonkEventSyncService.getStats()); +}); // GET /api/listmonk/proxy-url — get proxy port + token for iframe embedding router.get('/proxy-url', (req, res, _next) => { const token = req.headers.authorization?.slice(7) || ''; diff --git a/api/dist/modules/listmonk/listmonk.routes.js.map b/api/dist/modules/listmonk/listmonk.routes.js.map index e273838c..d9e467a9 100644 --- a/api/dist/modules/listmonk/listmonk.routes.js.map +++ b/api/dist/modules/listmonk/listmonk.routes.js.map @@ -1 +1 @@ -{"version":3,"file":"listmonk.routes.js","sourceRoot":"","sources":["../../../src/modules/listmonk/listmonk.routes.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"listmonk.routes.js","sourceRoot":"","sources":["../../../src/modules/listmonk/listmonk.routes.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/api/dist/modules/map/canvass/canvass.routes.d.ts.map b/api/dist/modules/map/canvass/canvass.routes.d.ts.map index 226e6692..325c3866 100644 --- a/api/dist/modules/map/canvass/canvass.routes.d.ts.map +++ b/api/dist/modules/map/canvass/canvass.routes.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"canvass.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/canvass/canvass.routes.ts"],"names":[],"mappings":"AAyBA,QAAA,MAAM,eAAe,4CAAW,CAAC;AAgQjC,QAAA,MAAM,WAAW,4CAAW,CAAC;AAsF7B,OAAO,EAAE,eAAe,IAAI,sBAAsB,EAAE,WAAW,IAAI,kBAAkB,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"canvass.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/canvass/canvass.routes.ts"],"names":[],"mappings":"AAyBA,QAAA,MAAM,eAAe,4CAAW,CAAC;AAgQjC,QAAA,MAAM,WAAW,4CAAW,CAAC;AAoG7B,OAAO,EAAE,eAAe,IAAI,sBAAsB,EAAE,WAAW,IAAI,kBAAkB,EAAE,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/map/canvass/canvass.routes.js b/api/dist/modules/map/canvass/canvass.routes.js index 6485944d..80bd8982 100644 --- a/api/dist/modules/map/canvass/canvass.routes.js +++ b/api/dist/modules/map/canvass/canvass.routes.js @@ -12,7 +12,7 @@ const validate_1 = require("../../../middleware/validate"); const auth_middleware_1 = require("../../../middleware/auth.middleware"); const rbac_middleware_1 = require("../../../middleware/rbac.middleware"); const rate_limit_1 = require("../../../middleware/rate-limit"); -const MAP_ADMIN_ROLES = [client_1.UserRole.SUPER_ADMIN, client_1.UserRole.MAP_ADMIN]; +const roles_1 = require("../../../utils/roles"); // ─── Volunteer Router ──────────────────────────────────────────────── const volunteerRouter = (0, express_1.Router)(); exports.canvassVolunteerRouter = volunteerRouter; @@ -138,17 +138,17 @@ volunteerRouter.put('/locations/:id', (0, validate_1.validate)(canvass_schemas_1 // POST /api/map/canvass/locations — create a new location (role-gated fields) volunteerRouter.post('/locations', (0, validate_1.validate)(canvass_schemas_1.volunteerCreateLocationSchema), async (req, res, next) => { try { - const role = req.user.role; const data = { ...req.body }; // Strip fields based on role - const isAdmin = role === client_1.UserRole.SUPER_ADMIN || role === client_1.UserRole.MAP_ADMIN; + const userRoles = req.user.roles || [req.user.role]; + const isAdmin = userRoles.some((r) => r === client_1.UserRole.SUPER_ADMIN || r === client_1.UserRole.MAP_ADMIN); if (!isAdmin) { delete data.firstName; delete data.lastName; delete data.email; delete data.phone; } - if (role === client_1.UserRole.TEMP) { + if (userRoles.length === 1 && userRoles[0] === client_1.UserRole.TEMP) { delete data.supportLevel; delete data.sign; delete data.signSize; @@ -210,7 +210,7 @@ volunteerRouter.post('/visits/bulk', rate_limit_1.canvassBulkVisitRateLimit, // const adminRouter = (0, express_1.Router)(); exports.canvassAdminRouter = adminRouter; adminRouter.use(auth_middleware_1.authenticate); -adminRouter.use((0, rbac_middleware_1.requireRole)(...MAP_ADMIN_ROLES)); +adminRouter.use((0, rbac_middleware_1.requireRole)(...roles_1.MAP_ROLES)); // GET /api/map/canvass/stats adminRouter.get('/stats', async (_req, res, next) => { try { @@ -273,4 +273,14 @@ adminRouter.get('/visits', (0, validate_1.validate)(canvass_schemas_1.adminVisit next(err); } }); +// GET /api/map/canvass/trends +adminRouter.get('/trends', (0, validate_1.validate)(canvass_schemas_1.outcomeTrendsQuerySchema, 'query'), async (req, res, next) => { + try { + const result = await canvass_service_1.canvassService.getOutcomeTrends(req.query); + res.json(result); + } + catch (err) { + next(err); + } +}); //# sourceMappingURL=canvass.routes.js.map \ No newline at end of file diff --git a/api/dist/modules/map/canvass/canvass.routes.js.map b/api/dist/modules/map/canvass/canvass.routes.js.map index 3a20d0f5..b6ddfa8e 100644 --- a/api/dist/modules/map/canvass/canvass.routes.js.map +++ b/api/dist/modules/map/canvass/canvass.routes.js.map @@ -1 +1 @@ -{"version":3,"file":"canvass.routes.js","sourceRoot":"","sources":["../../../../src/modules/map/canvass/canvass.routes.ts"],"names":[],"mappings":";;;AAAA,qCAAkE;AAClE,2CAA0C;AAC1C,uDAAmD;AACnD,uDAU2B;AAC3B,sEAA4F;AAC5F,sEAAkE;AAClE,sEAAkE;AAClE,2DAAwD;AACxD,yEAAmE;AACnE,yEAAkE;AAClE,+DAA2H;AAE3H,MAAM,eAAe,GAAe,CAAC,iBAAQ,CAAC,WAAW,EAAE,iBAAQ,CAAC,SAAS,CAAC,CAAC;AAE/E,wEAAwE;AACxE,MAAM,eAAe,GAAG,IAAA,gBAAM,GAAE,CAAC;AAsVL,iDAAsB;AArVlD,eAAe,CAAC,GAAG,CAAC,8BAAY,CAAC,CAAC;AAElC,sCAAsC;AACtC,eAAe,CAAC,GAAG,CACjB,iBAAiB,EACjB,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,gCAAc,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,CAAC,CAAC;QACxE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,gCAAgC;AAChC,eAAe,CAAC,GAAG,CACjB,WAAW,EACX,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,gCAAc,CAAC,UAAU,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,CAAC,CAAC;QAC5D,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,iCAAiC;AACjC,eAAe,CAAC,GAAG,CACjB,YAAY,EACZ,IAAA,mBAAQ,EAAC,oCAAkB,EAAE,OAAO,CAAC,EACrC,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,gCAAc,CAAC,WAAW,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,GAAG,CAAC,KAAY,CAAC,CAAC;QAChF,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,kCAAkC;AAClC,eAAe,CAAC,GAAG,CACjB,aAAa,EACb,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,gCAAc,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,CAAC,CAAC;QACpE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,iCAAiC;AACjC,eAAe,CAAC,IAAI,CAClB,WAAW,EACX,IAAA,mBAAQ,EAAC,oCAAkB,CAAC,EAC5B,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,gCAAc,CAAC,YAAY,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1E,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,yCAAyC;AACzC,eAAe,CAAC,IAAI,CAClB,mBAAmB,EACnB,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAY,CAAC;QACnC,MAAM,OAAO,GAAG,MAAM,gCAAc,CAAC,UAAU,CAAC,EAAE,EAAE,GAAG,CAAC,IAAK,CAAC,EAAE,CAAC,CAAC;QAClE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,6CAA6C;AAC7C,eAAe,CAAC,GAAG,CACjB,wBAAwB,EACxB,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAe,CAAC;QACzC,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YAChC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,MAAgB,CAAC;YAC9C,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,MAAgB,CAAC;YAC9C,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,MAAgB,CAAC;YAC9C,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,MAAgB,CAAC;SAC/C,CAAC,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAChF,MAAM,SAAS,GAAG,MAAM,gCAAc,CAAC,yBAAyB,CAAC,KAAK,EAAE,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACrG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,yCAAyC;AACzC,eAAe,CAAC,GAAG,CACjB,oBAAoB,EACpB,IAAA,mBAAQ,EAAC,oCAAkB,EAAE,OAAO,CAAC,EACrC,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAe,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,gCAAc,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,GAAG,CAAC,KAAY,CAAC,CAAC;QAC1F,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,wEAAwE;AACxE,eAAe,CAAC,GAAG,CACjB,YAAY,EACZ,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YAChC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,MAAgB,CAAC;YAC9C,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,MAAgB,CAAC;YAC9C,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,MAAgB,CAAC;YAC9C,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,MAAgB,CAAC;SAC/C,CAAC,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAChF,MAAM,SAAS,GAAG,MAAM,gCAAc,CAAC,yBAAyB,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC9F,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,8GAA8G;AAC9G,eAAe,CAAC,GAAG,CACjB,gBAAgB,EAChB,IAAA,mBAAQ,EAAC,+CAA6B,CAAC,EACvC,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAY,CAAC;QACnC,MAAM,OAAO,GAAG,MAAM,gCAAc,CAAC,wBAAwB,CAC3D,EAAE,EACF,GAAG,CAAC,IAAK,CAAC,EAAE,EACZ,GAAG,CAAC,IAAK,CAAC,IAAI,EACd,GAAG,CAAC,IAAI,CACT,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,8EAA8E;AAC9E,eAAe,CAAC,IAAI,CAClB,YAAY,EACZ,IAAA,mBAAQ,EAAC,+CAA6B,CAAC,EACvC,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,GAAG,CAAC,IAAK,CAAC,IAAI,CAAC;QAC5B,MAAM,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAE7B,6BAA6B;QAC7B,MAAM,OAAO,GAAG,IAAI,KAAK,iBAAQ,CAAC,WAAW,IAAI,IAAI,KAAK,iBAAQ,CAAC,SAAS,CAAC;QAC7E,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,SAAS,CAAC;YACtB,OAAO,IAAI,CAAC,QAAQ,CAAC;YACrB,OAAO,IAAI,CAAC,KAAK,CAAC;YAClB,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QACD,IAAI,IAAI,KAAK,iBAAQ,CAAC,IAAI,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,YAAY,CAAC;YACzB,OAAO,IAAI,CAAC,IAAI,CAAC;YACjB,OAAO,IAAI,CAAC,QAAQ,CAAC;YACrB,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,oCAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAK,CAAC,EAAE,CAAC,CAAC;QACnE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,kEAAkE;AAClE,eAAe,CAAC,IAAI,CAClB,kBAAkB,EAClB,IAAA,mBAAQ,EAAC,wCAAoB,CAAC,EAC9B,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,oCAAgB,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5F,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,0EAA0E;AAC1E,eAAe,CAAC,IAAI,CAClB,iBAAiB,EACjB,oCAAuB,EACvB,IAAA,mBAAQ,EAAC,wCAAoB,CAAC,EAC9B,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,oCAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC;YAC1F,OAAO;QACT,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,+BAA+B;AAC/B,eAAe,CAAC,IAAI,CAClB,SAAS,EACT,kCAAqB,EACrB,IAAA,mBAAQ,EAAC,mCAAiB,CAAC,EAC3B,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,gCAAc,CAAC,WAAW,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACvE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,sFAAsF;AACtF,eAAe,CAAC,IAAI,CAClB,cAAc,EACd,sCAAyB,EAAE,0CAA0C;AACrE,IAAA,mBAAQ,EAAC,uCAAqB,CAAC,EAC/B,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,gCAAc,CAAC,eAAe,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5E,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,wEAAwE;AACxE,MAAM,WAAW,GAAG,IAAA,gBAAM,GAAE,CAAC;AAsFsC,yCAAkB;AArFrF,WAAW,CAAC,GAAG,CAAC,8BAAY,CAAC,CAAC;AAC9B,WAAW,CAAC,GAAG,CAAC,IAAA,6BAAW,EAAC,GAAG,eAAe,CAAC,CAAC,CAAC;AAEjD,6BAA6B;AAC7B,WAAW,CAAC,GAAG,CACb,QAAQ,EACR,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACzD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,gCAAc,CAAC,aAAa,EAAE,CAAC;QACnD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,yCAAyC;AACzC,WAAW,CAAC,GAAG,CACb,oBAAoB,EACpB,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAe,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,gCAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACtD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,gCAAgC;AAChC,WAAW,CAAC,GAAG,CACb,WAAW,EACX,IAAA,mBAAQ,EAAC,qCAAmB,EAAE,OAAO,CAAC,EACtC,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,gCAAc,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAY,CAAC,CAAC;QACvE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,kCAAkC;AAClC,WAAW,CAAC,GAAG,CACb,aAAa,EACb,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACzD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,gCAAc,CAAC,aAAa,EAAE,CAAC;QACxD,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,0CAA0C;AAC1C,WAAW,CAAC,GAAG,CACb,qBAAqB,EACrB,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAgB,CAAC;QAC3C,MAAM,KAAK,GAAG,MAAM,gCAAc,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC7D,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,8BAA8B;AAC9B,WAAW,CAAC,GAAG,CACb,SAAS,EACT,IAAA,mBAAQ,EAAC,mCAAiB,EAAE,OAAO,CAAC,EACpC,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,gCAAc,CAAC,cAAc,CAAC,GAAG,CAAC,KAAY,CAAC,CAAC;QACrE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC"} \ No newline at end of file +{"version":3,"file":"canvass.routes.js","sourceRoot":"","sources":["../../../../src/modules/map/canvass/canvass.routes.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/api/dist/modules/map/canvass/canvass.schemas.d.ts b/api/dist/modules/map/canvass/canvass.schemas.d.ts index bd0eb772..a7f39d56 100644 --- a/api/dist/modules/map/canvass/canvass.schemas.d.ts +++ b/api/dist/modules/map/canvass/canvass.schemas.d.ts @@ -30,20 +30,20 @@ export declare const recordVisitSchema: z.ZodObject<{ updateLocation: boolean; durationSeconds?: number | undefined; sessionId?: string | undefined; + notes?: string | undefined; shiftId?: string | undefined; supportLevel?: "LEVEL_1" | "LEVEL_2" | "LEVEL_3" | "LEVEL_4" | undefined; signSize?: string | undefined; - notes?: string | undefined; }, { outcome: "NOT_HOME" | "REFUSED" | "MOVED" | "ALREADY_VOTED" | "SPOKE_WITH" | "LEFT_LITERATURE" | "COME_BACK_LATER"; addressId: string; durationSeconds?: number | undefined; sessionId?: string | undefined; + notes?: string | undefined; shiftId?: string | undefined; supportLevel?: "LEVEL_1" | "LEVEL_2" | "LEVEL_3" | "LEVEL_4" | undefined; - signSize?: string | undefined; - notes?: string | undefined; signRequested?: boolean | undefined; + signSize?: string | undefined; updateLocation?: boolean | undefined; }>; export declare const bulkRecordVisitSchema: z.ZodObject<{ @@ -56,14 +56,14 @@ export declare const bulkRecordVisitSchema: z.ZodObject<{ outcome: "NOT_HOME" | "REFUSED" | "MOVED"; locationId: string; sessionId?: string | undefined; - shiftId?: string | undefined; notes?: string | undefined; + shiftId?: string | undefined; }, { outcome: "NOT_HOME" | "REFUSED" | "MOVED"; locationId: string; sessionId?: string | undefined; - shiftId?: string | undefined; notes?: string | undefined; + shiftId?: string | undefined; }>; export declare const startSessionSchema: z.ZodObject<{ cutId: z.ZodString; @@ -156,17 +156,17 @@ export declare const adminVisitsSchema: z.ZodObject<{ sortOrder: "asc" | "desc"; userId?: string | undefined; outcome?: "NOT_HOME" | "REFUSED" | "MOVED" | "ALREADY_VOTED" | "SPOKE_WITH" | "LEFT_LITERATURE" | "COME_BACK_LATER" | undefined; - shiftId?: string | undefined; cutId?: string | undefined; + shiftId?: string | undefined; }, { limit?: number | undefined; userId?: string | undefined; page?: number | undefined; - outcome?: "NOT_HOME" | "REFUSED" | "MOVED" | "ALREADY_VOTED" | "SPOKE_WITH" | "LEFT_LITERATURE" | "COME_BACK_LATER" | undefined; - shiftId?: string | undefined; - cutId?: string | undefined; sortBy?: "outcome" | "visitedAt" | undefined; sortOrder?: "asc" | "desc" | undefined; + outcome?: "NOT_HOME" | "REFUSED" | "MOVED" | "ALREADY_VOTED" | "SPOKE_WITH" | "LEFT_LITERATURE" | "COME_BACK_LATER" | undefined; + cutId?: string | undefined; + shiftId?: string | undefined; }>; export declare const volunteerUpdateLocationSchema: z.ZodObject<{ supportLevel: z.ZodOptional; export declare const volunteerCreateLocationSchema: z.ZodObject<{ address: z.ZodString; @@ -232,25 +232,25 @@ export declare const volunteerCreateLocationSchema: z.ZodObject<{ sign: boolean; email?: string | undefined; phone?: string | undefined; - unitNumber?: string | undefined; + notes?: string | undefined; firstName?: string | undefined; lastName?: string | undefined; supportLevel?: "LEVEL_1" | "LEVEL_2" | "LEVEL_3" | "LEVEL_4" | undefined; + unitNumber?: string | undefined; signSize?: string | undefined; - notes?: string | undefined; }, { latitude: number; longitude: number; address: string; email?: string | undefined; phone?: string | undefined; - unitNumber?: string | undefined; + notes?: string | undefined; firstName?: string | undefined; lastName?: string | undefined; supportLevel?: "LEVEL_1" | "LEVEL_2" | "LEVEL_3" | "LEVEL_4" | undefined; + unitNumber?: string | undefined; sign?: boolean | undefined; signSize?: string | undefined; - notes?: string | undefined; }>; export type RecordVisitInput = z.infer; export type BulkRecordVisitInput = z.infer; @@ -259,6 +259,20 @@ export type WalkingRouteInput = z.infer; export type ListMyVisitsInput = z.infer; export type AdminActivityInput = z.infer; export type AdminVisitsInput = z.infer; +export declare const outcomeTrendsQuerySchema: z.ZodObject<{ + granularity: z.ZodDefault>; + dateFrom: z.ZodOptional; + dateTo: z.ZodOptional; +}, "strip", z.ZodTypeAny, { + granularity: "week" | "day"; + dateFrom?: string | undefined; + dateTo?: string | undefined; +}, { + dateFrom?: string | undefined; + dateTo?: string | undefined; + granularity?: "week" | "day" | undefined; +}>; export type VolunteerUpdateLocationInput = z.infer; export type VolunteerCreateLocationInput = z.infer; +export type OutcomeTrendsQueryInput = z.infer; //# sourceMappingURL=canvass.schemas.d.ts.map \ No newline at end of file diff --git a/api/dist/modules/map/canvass/canvass.schemas.d.ts.map b/api/dist/modules/map/canvass/canvass.schemas.d.ts.map index fc55c7fe..925afd1c 100644 --- a/api/dist/modules/map/canvass/canvass.schemas.d.ts.map +++ b/api/dist/modules/map/canvass/canvass.schemas.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"canvass.schemas.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/canvass/canvass.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW5B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;EAMhC,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;EAK7B,CAAC;AAEH,eAAO,MAAM,gBAAgB,gDAE3B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAI7B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;EAG7B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;EAM9B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAS5B,CAAC;AAEH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYxC,CAAC;AAEH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAexC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACjE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACzE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACnE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACnE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACnE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACrE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACjE,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AACzF,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"canvass.schemas.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/canvass/canvass.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW5B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;EAMhC,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;EAK7B,CAAC;AAEH,eAAO,MAAM,gBAAgB,gDAE3B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAI7B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;EAG7B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;EAM9B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAS5B,CAAC;AAEH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYxC,CAAC;AAEH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAexC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACjE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACzE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACnE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACnE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACnE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACrE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACjE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;EAInC,CAAC;AAEH,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AACzF,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AACzF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/map/canvass/canvass.schemas.js b/api/dist/modules/map/canvass/canvass.schemas.js index de568c89..422c4878 100644 --- a/api/dist/modules/map/canvass/canvass.schemas.js +++ b/api/dist/modules/map/canvass/canvass.schemas.js @@ -1,6 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.volunteerCreateLocationSchema = exports.volunteerUpdateLocationSchema = exports.adminVisitsSchema = exports.adminActivitySchema = exports.listMyVisitsSchema = exports.walkingRouteSchema = exports.endSessionSchema = exports.startSessionSchema = exports.bulkRecordVisitSchema = exports.recordVisitSchema = void 0; +exports.outcomeTrendsQuerySchema = exports.volunteerCreateLocationSchema = exports.volunteerUpdateLocationSchema = exports.adminVisitsSchema = exports.adminActivitySchema = exports.listMyVisitsSchema = exports.walkingRouteSchema = exports.endSessionSchema = exports.startSessionSchema = exports.bulkRecordVisitSchema = exports.recordVisitSchema = void 0; const zod_1 = require("zod"); const client_1 = require("@prisma/client"); exports.recordVisitSchema = zod_1.z.object({ @@ -86,4 +86,9 @@ exports.volunteerCreateLocationSchema = zod_1.z.object({ email: zod_1.z.string().email().optional().or(zod_1.z.literal('')), phone: zod_1.z.string().optional(), }); +exports.outcomeTrendsQuerySchema = zod_1.z.object({ + granularity: zod_1.z.enum(['day', 'week']).default('day'), + dateFrom: zod_1.z.string().optional(), + dateTo: zod_1.z.string().optional(), +}); //# sourceMappingURL=canvass.schemas.js.map \ No newline at end of file diff --git a/api/dist/modules/map/canvass/canvass.schemas.js.map b/api/dist/modules/map/canvass/canvass.schemas.js.map index 91b7b04b..b369a14a 100644 --- a/api/dist/modules/map/canvass/canvass.schemas.js.map +++ b/api/dist/modules/map/canvass/canvass.schemas.js.map @@ -1 +1 @@ -{"version":3,"file":"canvass.schemas.js","sourceRoot":"","sources":["../../../../src/modules/map/canvass/canvass.schemas.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"canvass.schemas.js","sourceRoot":"","sources":["../../../../src/modules/map/canvass/canvass.schemas.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/api/dist/modules/map/canvass/canvass.service.d.ts b/api/dist/modules/map/canvass/canvass.service.d.ts index 8703b719..d66da479 100644 --- a/api/dist/modules/map/canvass/canvass.service.d.ts +++ b/api/dist/modules/map/canvass/canvass.service.d.ts @@ -1,5 +1,5 @@ import { Prisma, UserRole } from '@prisma/client'; -import type { RecordVisitInput, BulkRecordVisitInput, StartSessionInput, WalkingRouteInput, ListMyVisitsInput, AdminActivityInput, AdminVisitsInput, VolunteerUpdateLocationInput } from './canvass.schemas'; +import type { RecordVisitInput, BulkRecordVisitInput, StartSessionInput, WalkingRouteInput, ListMyVisitsInput, AdminActivityInput, AdminVisitsInput, VolunteerUpdateLocationInput, OutcomeTrendsQueryInput } from './canvass.schemas'; export declare const canvassService: { getMyAssignments(userId: string): Promise<{ shiftId: string; @@ -32,12 +32,12 @@ export declare const canvassService: { durationSeconds: number | null; userId: string; sessionId: string | null; + notes: string | null; outcome: import(".prisma/client").$Enums.VisitOutcome; shiftId: string | null; supportLevel: import(".prisma/client").$Enums.SupportLevel | null; - signSize: string | null; - notes: string | null; signRequested: boolean; + signSize: string | null; visitedAt: Date; addressId: string; })[]; @@ -61,12 +61,12 @@ export declare const canvassService: { status: import(".prisma/client").$Enums.CanvassSessionStatus; id: string; userId: string; + cutId: string; shiftId: string | null; startedAt: Date; endedAt: Date | null; startLatitude: Prisma.Decimal | null; startLongitude: Prisma.Decimal | null; - cutId: string; }) | null>; startSession(userId: string, data: StartSessionInput): Promise<{ shift: { @@ -81,23 +81,23 @@ export declare const canvassService: { status: import(".prisma/client").$Enums.CanvassSessionStatus; id: string; userId: string; + cutId: string; shiftId: string | null; startedAt: Date; endedAt: Date | null; startLatitude: Prisma.Decimal | null; startLongitude: Prisma.Decimal | null; - cutId: string; }>; endSession(sessionId: string, userId: string): Promise<{ status: import(".prisma/client").$Enums.CanvassSessionStatus; id: string; userId: string; + cutId: string; shiftId: string | null; startedAt: Date; endedAt: Date | null; startLatitude: Prisma.Decimal | null; startLongitude: Prisma.Decimal | null; - cutId: string; }>; getCutLocationsForCanvass(cutId: string, userId: string, bounds?: { minLat: number; @@ -121,13 +121,13 @@ export declare const canvassService: { id: string; email: string | null; phone: string | null; - unitNumber: string | null; + notes: string | null; firstName: string | null; lastName: string | null; supportLevel: import(".prisma/client").$Enums.SupportLevel | null; + unitNumber: string | null; sign: boolean; signSize: string | null; - notes: string | null; }[]>; getAllLocationsForCanvass(userId: string, bounds?: { minLat: number; @@ -151,13 +151,13 @@ export declare const canvassService: { id: string; email: string | null; phone: string | null; - unitNumber: string | null; + notes: string | null; firstName: string | null; lastName: string | null; supportLevel: import(".prisma/client").$Enums.SupportLevel | null; + unitNumber: string | null; sign: boolean; signSize: string | null; - notes: string | null; }[]>; updateAddressAsVolunteer(addressId: string, userId: string, role: UserRole, data: VolunteerUpdateLocationInput): Promise<{ id: string; @@ -165,16 +165,16 @@ export declare const canvassService: { phone: string | null; createdAt: Date; updatedAt: Date; + notes: string | null; createdByUserId: string | null; updatedByUserId: string | null; - unitNumber: string | null; - addrGuid: string | null; firstName: string | null; lastName: string | null; supportLevel: import(".prisma/client").$Enums.SupportLevel | null; + unitNumber: string | null; + addrGuid: string | null; sign: boolean; signSize: string | null; - notes: string | null; locationId: string; }>; getWalkingRoute(cutId: string, userId: string, filters: WalkingRouteInput): Promise; @@ -191,12 +191,12 @@ export declare const canvassService: { durationSeconds: number | null; userId: string; sessionId: string | null; + notes: string | null; outcome: import(".prisma/client").$Enums.VisitOutcome; shiftId: string | null; supportLevel: import(".prisma/client").$Enums.SupportLevel | null; - signSize: string | null; - notes: string | null; signRequested: boolean; + signSize: string | null; visitedAt: Date; addressId: string; }>; @@ -207,12 +207,12 @@ export declare const canvassService: { durationSeconds: number | null; userId: string; sessionId: string | null; + notes: string | null; outcome: import(".prisma/client").$Enums.VisitOutcome; shiftId: string | null; supportLevel: import(".prisma/client").$Enums.SupportLevel | null; - signSize: string | null; - notes: string | null; signRequested: boolean; + signSize: string | null; visitedAt: Date; addressId: string; }[]; @@ -252,12 +252,12 @@ export declare const canvassService: { durationSeconds: number | null; userId: string; sessionId: string | null; + notes: string | null; outcome: import(".prisma/client").$Enums.VisitOutcome; shiftId: string | null; supportLevel: import(".prisma/client").$Enums.SupportLevel | null; - signSize: string | null; - notes: string | null; signRequested: boolean; + signSize: string | null; visitedAt: Date; addressId: string; })[]; @@ -301,12 +301,12 @@ export declare const canvassService: { durationSeconds: number | null; userId: string; sessionId: string | null; + notes: string | null; outcome: import(".prisma/client").$Enums.VisitOutcome; shiftId: string | null; supportLevel: import(".prisma/client").$Enums.SupportLevel | null; - signSize: string | null; - notes: string | null; signRequested: boolean; + signSize: string | null; visitedAt: Date; addressId: string; })[]; @@ -317,6 +317,15 @@ export declare const canvassService: { totalPages: number; }; }>; + getOutcomeTrends(filters: OutcomeTrendsQueryInput): Promise<{ + granularity: "week" | "day"; + dateFrom: string; + dateTo: string; + series: { + date: string; + }[]; + totals: Record; + }>; recalculateCutCompletion(cutId: string): Promise; closeAbandonedSessions(): Promise; }; diff --git a/api/dist/modules/map/canvass/canvass.service.d.ts.map b/api/dist/modules/map/canvass/canvass.service.d.ts.map index 5860f4f2..ed2abe3f 100644 --- a/api/dist/modules/map/canvass/canvass.service.d.ts.map +++ b/api/dist/modules/map/canvass/canvass.service.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"canvass.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/canvass/canvass.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAoD,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AASpG,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,4BAA4B,EAC7B,MAAM,mBAAmB,CAAC;AAwE3B,eAAO,MAAM,cAAc;6BAGM,MAAM;;;;;;;;;;;uBAgCZ,MAAM;;;;;;wBAuBL,MAAM,WAAW,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BA6B7B,MAAM;;;;;;;;;;;;;;;;;;;;yBAUV,MAAM,QAAQ,iBAAiB;;;;;;;;;;;;;;;;;;;;0BAgC9B,MAAM,UAAU,MAAM;;;;;;;;;;;qCAwBzC,MAAM,UACL,MAAM,WACL;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,UACnE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;sCAoGN,MAAM,WACL;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,UACnE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;wCAuFH,MAAM,UACT,MAAM,QACR,QAAQ,QACR,4BAA4B;;;;;;;;;;;;;;;;;;2BA+BP,MAAM,UAAU,MAAM,WAAW,iBAAiB;wBA2BrD,MAAM,QAAQ,gBAAgB;;;;;;;;;;;;;;;;;;;;;;4BA0D1B,MAAM,QAAQ,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;uBAqHvC,MAAM;;;;;;;;;8BAuDC,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BA0FlB,MAAM;;;;;;4BAIR,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCA4DR,MAAM;;CA8D7C,CAAC"} \ No newline at end of file +{"version":3,"file":"canvass.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/canvass/canvass.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAoD,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAgBpG,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,4BAA4B,EAC5B,uBAAuB,EACxB,MAAM,mBAAmB,CAAC;AAwE3B,eAAO,MAAM,cAAc;6BAGM,MAAM;;;;;;;;;;;uBAgCZ,MAAM;;;;;;wBAuBL,MAAM,WAAW,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BA6B7B,MAAM;;;;;;;;;;;;;;;;;;;;yBAUV,MAAM,QAAQ,iBAAiB;;;;;;;;;;;;;;;;;;;;0BAgC9B,MAAM,UAAU,MAAM;;;;;;;;;;;qCA4GzC,MAAM,UACL,MAAM,WACL;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,UACnE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;sCAoGN,MAAM,WACL;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,UACnE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;wCAuFH,MAAM,UACT,MAAM,QACR,QAAQ,QACR,4BAA4B;;;;;;;;;;;;;;;;;;2BA+BP,MAAM,UAAU,MAAM,WAAW,iBAAiB;wBA2BrD,MAAM,QAAQ,gBAAgB;;;;;;;;;;;;;;;;;;;;;;4BAuH1B,MAAM,QAAQ,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;uBAqHvC,MAAM;;;;;;;;;8BAuDC,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BA0FlB,MAAM;;;;;;4BAIR,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BA0Dd,uBAAuB;;;;;;;;;oCAoDjB,MAAM;;CA8D7C,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/map/canvass/canvass.service.js b/api/dist/modules/map/canvass/canvass.service.js index 0969a9f7..bc4695f7 100644 --- a/api/dist/modules/map/canvass/canvass.service.js +++ b/api/dist/modules/map/canvass/canvass.service.js @@ -8,8 +8,15 @@ const error_handler_1 = require("../../../middleware/error-handler"); const logger_1 = require("../../../utils/logger"); const metrics_1 = require("../../../utils/metrics"); const spatial_1 = require("../../../utils/spatial"); +const crm_activity_1 = require("../../../utils/crm-activity"); const canvass_route_service_1 = require("./canvass-route.service"); const metrics_2 = require("../../../utils/metrics"); +const notification_queue_service_1 = require("../../../services/notification-queue.service"); +const notification_helper_1 = require("../../../services/notification.helper"); +const env_1 = require("../../../config/env"); +const rocketchat_webhook_service_1 = require("../../../services/rocketchat-webhook.service"); +const listmonk_event_sync_service_1 = require("../../../services/listmonk-event-sync.service"); +const achievements_service_1 = require("../../social/achievements.service"); const ADDRESS_SELECT = { id: true, unitNumber: true, @@ -201,6 +208,87 @@ exports.canvassService = { }); // Recalculate cut completion percentage await this.recalculateCutCompletion(session.cutId); + // Notify Rocket.Chat + try { + const [rcUser, rcCut, rcVisitCount] = await Promise.all([ + database_1.prisma.user.findUnique({ where: { id: userId }, select: { name: true, email: true } }), + database_1.prisma.cut.findUnique({ where: { id: session.cutId }, select: { name: true } }), + database_1.prisma.canvassVisit.count({ where: { sessionId } }), + ]); + rocketchat_webhook_service_1.rocketchatWebhookService.onCanvassSessionCompleted({ + userName: rcUser?.name || rcUser?.email || 'Unknown', + visitCount: rcVisitCount, + cutName: rcCut?.name || undefined, + }).catch(() => { }); + } + catch { /* non-critical */ } + // Notification: volunteer session summary + try { + if (await (0, notification_helper_1.isNotificationEnabled)('notifyVolunteerSessionSummary')) { + const [user, cut, visitCount, outcomeGroups, trackingSession] = await Promise.all([ + database_1.prisma.user.findUnique({ where: { id: userId }, select: { email: true, name: true } }), + database_1.prisma.cut.findUnique({ where: { id: session.cutId }, select: { name: true } }), + database_1.prisma.canvassVisit.count({ where: { sessionId } }), + database_1.prisma.canvassVisit.groupBy({ by: ['outcome'], where: { sessionId }, _count: true }), + database_1.prisma.trackingSession.findFirst({ + where: { userId, canvassSessionId: sessionId }, + select: { totalDistanceM: true }, + }), + ]); + if (user && visitCount > 0) { + const durationMs = updated.endedAt + ? updated.endedAt.getTime() - session.startedAt.getTime() + : 0; + const durationMinutes = Math.round(durationMs / 60000); + const distanceKm = trackingSession?.totalDistanceM + ? Number(trackingSession.totalDistanceM) / 1000 + : 0; + const outcomeBreakdown = {}; + for (const row of outcomeGroups) { + outcomeBreakdown[row.outcome] = row._count; + } + await notification_queue_service_1.notificationQueueService.enqueue({ + type: 'volunteer-session-summary', + volunteerEmail: user.email, + volunteerName: user.name || user.email, + cutName: cut?.name || 'Unknown area', + sessionDate: session.startedAt.toLocaleDateString('en-CA', { + weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', + }), + visitCount, + durationMinutes, + distanceKm, + outcomeBreakdown, + }); + } + } + } + catch (err) { + logger_1.logger.error('Failed to enqueue session summary notification:', err); + } + // Listmonk event sync — add canvasser to subscribers + try { + const [syncUser, syncCut, syncVisitCount, syncOutcomes] = await Promise.all([ + database_1.prisma.user.findUnique({ where: { id: userId }, select: { email: true, name: true } }), + database_1.prisma.cut.findUnique({ where: { id: session.cutId }, select: { name: true } }), + database_1.prisma.canvassVisit.count({ where: { sessionId } }), + database_1.prisma.canvassVisit.groupBy({ by: ['outcome'], where: { sessionId }, _count: true }), + ]); + if (syncUser) { + const outcomes = {}; + for (const row of syncOutcomes) { + outcomes[row.outcome] = row._count; + } + listmonk_event_sync_service_1.listmonkEventSyncService.onCanvassSessionCompleted({ + email: syncUser.email, + name: syncUser.name || syncUser.email, + cutName: syncCut?.name || 'Unknown', + visitCount: syncVisitCount, + outcomes, + }).catch(() => { }); + } + } + catch { /* non-critical */ } return updated; }, async getCutLocationsForCanvass(cutId, userId, bounds, limit) { @@ -448,12 +536,68 @@ exports.canvassService = { const prefix = `[${timestamp}] ${data.notes}`; updateData.notes = address.notes ? `${prefix}\n${address.notes}` : prefix; } - await database_1.prisma.address.update({ + const updatedAddress = await database_1.prisma.address.update({ where: { id: data.addressId }, data: updateData, + include: { location: { select: { address: true } } }, }); + // Sync support level change to Listmonk (fire-and-forget) + if (updatedAddress.email) { + const name = [updatedAddress.firstName, updatedAddress.lastName].filter(Boolean).join(' '); + listmonk_event_sync_service_1.listmonkEventSyncService.onAddressUpdated({ + email: updatedAddress.email, + name, + supportLevel: updatedAddress.supportLevel, + sign: updatedAddress.sign, + address: updatedAddress.location.address, + }).catch(() => { }); + } } (0, metrics_2.recordCanvassVisit)(data.outcome); + // CRM activity via ContactAddress lookup (fire-and-forget) + database_1.prisma.contactAddress.findFirst({ + where: { addressId: data.addressId }, + select: { contactId: true }, + }).then((ca) => { + if (ca) { + (0, crm_activity_1.recordCrmActivity)({ + contactId: ca.contactId, + activityType: 'CANVASS_VISIT', + title: `Canvass visit: ${data.outcome}`, + metadata: { addressId: data.addressId, outcome: data.outcome, visitId: visit.id }, + }).catch(() => { }); + } + }).catch(() => { }); + // Achievement check (fire-and-forget) + achievements_service_1.achievementsService.checkAndUnlock(userId, ['canvass']).catch(() => { }); + // Notification: sign request alert for admins + if (data.signRequested) { + try { + if (await (0, notification_helper_1.isNotificationEnabled)('notifyAdminSignRequested')) { + const adminEmails = await (0, notification_helper_1.getAdminEmailsByRole)([client_1.UserRole.SUPER_ADMIN, client_1.UserRole.MAP_ADMIN]); + if (adminEmails.length > 0) { + const [volunteer, shift] = await Promise.all([ + database_1.prisma.user.findUnique({ where: { id: userId }, select: { name: true } }), + data.shiftId ? database_1.prisma.shift.findUnique({ where: { id: data.shiftId }, select: { title: true } }) : null, + ]); + const addressStr = visit.address?.location?.address || 'Unknown address'; + const adminUrl = `${env_1.env.ADMIN_URL || 'http://localhost:3000'}/app/canvass/dashboard`; + await notification_queue_service_1.notificationQueueService.enqueue({ + type: 'admin-sign-requested', + adminEmails, + volunteerName: volunteer?.name || 'Unknown', + address: addressStr, + shiftTitle: shift?.title || 'No shift', + signSize: data.signSize || '', + adminUrl, + }); + } + } + } + catch (err) { + logger_1.logger.error('Failed to enqueue sign request notification:', err); + } + } return visit; }, async recordBulkVisit(userId, data) { @@ -736,6 +880,47 @@ exports.canvassService = { pagination: { page, limit, total, totalPages: Math.ceil(total / limit) }, }; }, + async getOutcomeTrends(filters) { + const { granularity } = filters; + const dateTo = filters.dateTo ? new Date(filters.dateTo) : new Date(); + const dateFrom = filters.dateFrom + ? new Date(filters.dateFrom) + : new Date(dateTo.getTime() - 30 * 24 * 60 * 60 * 1000); + // Ensure dateTo covers end of day + const dateToEnd = new Date(dateTo); + dateToEnd.setHours(23, 59, 59, 999); + const rows = await database_1.prisma.$queryRaw ` + SELECT DATE_TRUNC(${granularity}, "visitedAt") as period, + outcome::text as outcome, + COUNT(*)::int as count + FROM canvass_visits + WHERE "visitedAt" >= ${dateFrom} AND "visitedAt" <= ${dateToEnd} + GROUP BY period, outcome + ORDER BY period ASC + `; + // Pivot rows into series: [{ date, NOT_HOME: n, SPOKE_WITH: n, ... }] + const pivotMap = new Map(); + const totals = {}; + for (const row of rows) { + const dateStr = row.period.toISOString().split('T')[0]; + if (!pivotMap.has(dateStr)) { + pivotMap.set(dateStr, {}); + } + pivotMap.get(dateStr)[row.outcome] = row.count; + totals[row.outcome] = (totals[row.outcome] || 0) + row.count; + } + const series = Array.from(pivotMap.entries()).map(([date, outcomes]) => ({ + date, + ...outcomes, + })); + return { + granularity, + dateFrom: dateFrom.toISOString().split('T')[0], + dateTo: dateTo.toISOString().split('T')[0], + series, + totals, + }; + }, // ─── Helpers ─────────────────────────────────────────────────────── async recalculateCutCompletion(cutId) { const cut = await database_1.prisma.cut.findUnique({ where: { id: cutId } }); diff --git a/api/dist/modules/map/canvass/canvass.service.js.map b/api/dist/modules/map/canvass/canvass.service.js.map index 74180c59..dda84d77 100644 --- a/api/dist/modules/map/canvass/canvass.service.js.map +++ b/api/dist/modules/map/canvass/canvass.service.js.map @@ -1 +1 @@ -{"version":3,"file":"canvass.service.js","sourceRoot":"","sources":["../../../../src/modules/map/canvass/canvass.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"canvass.service.js","sourceRoot":"","sources":["../../../../src/modules/map/canvass/canvass.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/api/dist/modules/map/cuts/cuts.routes.d.ts.map b/api/dist/modules/map/cuts/cuts.routes.d.ts.map index 89fa6176..dc95c5e2 100644 --- a/api/dist/modules/map/cuts/cuts.routes.d.ts.map +++ b/api/dist/modules/map/cuts/cuts.routes.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"cuts.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/cuts/cuts.routes.ts"],"names":[],"mappings":"AAwBA,QAAA,MAAM,WAAW,4CAAW,CAAC;AAyJ7B,QAAA,MAAM,YAAY,4CAAW,CAAC;AAe9B,OAAO,EAAE,WAAW,IAAI,eAAe,EAAE,YAAY,IAAI,gBAAgB,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"cuts.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/cuts/cuts.routes.ts"],"names":[],"mappings":"AAsBA,QAAA,MAAM,WAAW,4CAAW,CAAC;AAyJ7B,QAAA,MAAM,YAAY,4CAAW,CAAC;AAe9B,OAAO,EAAE,WAAW,IAAI,eAAe,EAAE,YAAY,IAAI,gBAAgB,EAAE,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/map/cuts/cuts.routes.js b/api/dist/modules/map/cuts/cuts.routes.js index c6855e35..e369d81a 100644 --- a/api/dist/modules/map/cuts/cuts.routes.js +++ b/api/dist/modules/map/cuts/cuts.routes.js @@ -5,13 +5,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); exports.cutsPublicRouter = exports.cutsAdminRouter = void 0; const express_1 = require("express"); -const client_1 = require("@prisma/client"); const multer_1 = __importDefault(require("multer")); const cuts_service_1 = require("./cuts.service"); const cuts_schemas_1 = require("./cuts.schemas"); const validate_1 = require("../../../middleware/validate"); const auth_middleware_1 = require("../../../middleware/auth.middleware"); const rbac_middleware_1 = require("../../../middleware/rbac.middleware"); +const roles_1 = require("../../../utils/roles"); const geojsonUpload = (0, multer_1.default)({ storage: multer_1.default.memoryStorage(), limits: { fileSize: 10 * 1024 * 1024 }, @@ -24,12 +24,11 @@ const geojsonUpload = (0, multer_1.default)({ } }, }); -const MAP_ADMIN_ROLES = [client_1.UserRole.SUPER_ADMIN, client_1.UserRole.MAP_ADMIN]; // --- Admin Router --- const adminRouter = (0, express_1.Router)(); exports.cutsAdminRouter = adminRouter; adminRouter.use(auth_middleware_1.authenticate); -adminRouter.use((0, rbac_middleware_1.requireRole)(...MAP_ADMIN_ROLES)); +adminRouter.use((0, rbac_middleware_1.requireRole)(...roles_1.MAP_ROLES)); // GET /api/map/cuts — list paginated adminRouter.get('/', (0, validate_1.validate)(cuts_schemas_1.listCutsSchema, 'query'), async (req, res, next) => { try { diff --git a/api/dist/modules/map/cuts/cuts.routes.js.map b/api/dist/modules/map/cuts/cuts.routes.js.map index 018031ad..181bdc8a 100644 --- a/api/dist/modules/map/cuts/cuts.routes.js.map +++ b/api/dist/modules/map/cuts/cuts.routes.js.map @@ -1 +1 @@ -{"version":3,"file":"cuts.routes.js","sourceRoot":"","sources":["../../../../src/modules/map/cuts/cuts.routes.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"cuts.routes.js","sourceRoot":"","sources":["../../../../src/modules/map/cuts/cuts.routes.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/api/dist/modules/map/cuts/cuts.schemas.d.ts b/api/dist/modules/map/cuts/cuts.schemas.d.ts index 504037c6..5b7919ca 100644 --- a/api/dist/modules/map/cuts/cuts.schemas.d.ts +++ b/api/dist/modules/map/cuts/cuts.schemas.d.ts @@ -19,9 +19,9 @@ export declare const createCutSchema: z.ZodObject<{ assignedTo: z.ZodOptional; }, "strip", z.ZodTypeAny, { name: string; + isPublic: boolean; color: string; opacity: number; - isPublic: boolean; isOfficial: boolean; geojson: string; showLocations: boolean; @@ -35,9 +35,9 @@ export declare const createCutSchema: z.ZodObject<{ geojson: string; category?: "CUSTOM" | "WARD" | "NEIGHBORHOOD" | "DISTRICT" | undefined; description?: string | undefined; + isPublic?: boolean | undefined; color?: string | undefined; opacity?: number | undefined; - isPublic?: boolean | undefined; isOfficial?: boolean | undefined; bounds?: string | undefined; showLocations?: boolean | undefined; @@ -68,9 +68,9 @@ export declare const updateCutSchema: z.ZodObject<{ name?: string | undefined; category?: "CUSTOM" | "WARD" | "NEIGHBORHOOD" | "DISTRICT" | null | undefined; description?: string | null | undefined; + isPublic?: boolean | undefined; color?: string | undefined; opacity?: number | undefined; - isPublic?: boolean | undefined; isOfficial?: boolean | undefined; geojson?: string | undefined; bounds?: string | null | undefined; @@ -83,9 +83,9 @@ export declare const updateCutSchema: z.ZodObject<{ name?: string | undefined; category?: "CUSTOM" | "WARD" | "NEIGHBORHOOD" | "DISTRICT" | null | undefined; description?: string | null | undefined; + isPublic?: boolean | undefined; color?: string | undefined; opacity?: number | undefined; - isPublic?: boolean | undefined; isOfficial?: boolean | undefined; geojson?: string | undefined; bounds?: string | null | undefined; @@ -112,8 +112,8 @@ export declare const listCutsSchema: z.ZodObject<{ category?: "CUSTOM" | "WARD" | "NEIGHBORHOOD" | "DISTRICT" | undefined; }, { search?: string | undefined; - limit?: number | undefined; category?: "CUSTOM" | "WARD" | "NEIGHBORHOOD" | "DISTRICT" | undefined; + limit?: number | undefined; page?: number | undefined; }>; export type CreateCutInput = z.infer; diff --git a/api/dist/modules/map/cuts/cuts.service.d.ts b/api/dist/modules/map/cuts/cuts.service.d.ts index 63df9e77..4bdf0056 100644 --- a/api/dist/modules/map/cuts/cuts.service.d.ts +++ b/api/dist/modules/map/cuts/cuts.service.d.ts @@ -9,10 +9,10 @@ export declare const cutsService: { updatedAt: Date; category: import(".prisma/client").$Enums.CutCategory | null; description: string | null; + isPublic: boolean; createdByUserId: string | null; color: string; opacity: Prisma.Decimal; - isPublic: boolean; isOfficial: boolean; geojson: string; bounds: string | null; @@ -37,10 +37,10 @@ export declare const cutsService: { updatedAt: Date; category: import(".prisma/client").$Enums.CutCategory | null; description: string | null; + isPublic: boolean; createdByUserId: string | null; color: string; opacity: Prisma.Decimal; - isPublic: boolean; isOfficial: boolean; geojson: string; bounds: string | null; @@ -58,10 +58,10 @@ export declare const cutsService: { updatedAt: Date; category: import(".prisma/client").$Enums.CutCategory | null; description: string | null; + isPublic: boolean; createdByUserId: string | null; color: string; opacity: Prisma.Decimal; - isPublic: boolean; isOfficial: boolean; geojson: string; bounds: string | null; @@ -79,10 +79,10 @@ export declare const cutsService: { updatedAt: Date; category: import(".prisma/client").$Enums.CutCategory | null; description: string | null; + isPublic: boolean; createdByUserId: string | null; color: string; opacity: Prisma.Decimal; - isPublic: boolean; isOfficial: boolean; geojson: string; bounds: string | null; @@ -110,8 +110,9 @@ export declare const cutsService: { updatedAt: Date; latitude: Prisma.Decimal; longitude: Prisma.Decimal; - address: string; createdByUserId: string | null; + updatedByUserId: string | null; + address: string; postalCode: string | null; province: string | null; federalDistrict: string | null; @@ -122,7 +123,6 @@ export declare const cutsService: { buildingNotes: string | null; geocodeConfidence: number | null; geocodeProvider: import(".prisma/client").$Enums.GeocodeProvider | null; - updatedByUserId: string | null; }[]>; exportSingleGeoJson(id: string): Promise<{ type: "Feature"; diff --git a/api/dist/modules/map/geocoding/geocoding.routes.d.ts.map b/api/dist/modules/map/geocoding/geocoding.routes.d.ts.map index 0763dad7..0de833ef 100644 --- a/api/dist/modules/map/geocoding/geocoding.routes.d.ts.map +++ b/api/dist/modules/map/geocoding/geocoding.routes.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"geocoding.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/geocoding/geocoding.routes.ts"],"names":[],"mappings":"AAeA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAmBxB,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"geocoding.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/geocoding/geocoding.routes.ts"],"names":[],"mappings":"AAaA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAmBxB,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/map/geocoding/geocoding.routes.js b/api/dist/modules/map/geocoding/geocoding.routes.js index 3f155067..6cc16d7d 100644 --- a/api/dist/modules/map/geocoding/geocoding.routes.js +++ b/api/dist/modules/map/geocoding/geocoding.routes.js @@ -3,12 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.geocodingRouter = void 0; const express_1 = require("express"); const zod_1 = require("zod"); -const client_1 = require("@prisma/client"); const geocoding_service_1 = require("./geocoding.service"); const validate_1 = require("../../../middleware/validate"); const auth_middleware_1 = require("../../../middleware/auth.middleware"); const rbac_middleware_1 = require("../../../middleware/rbac.middleware"); -const MAP_ADMIN_ROLES = [client_1.UserRole.SUPER_ADMIN, client_1.UserRole.MAP_ADMIN]; +const roles_1 = require("../../../utils/roles"); const searchSchema = zod_1.z.object({ q: zod_1.z.string().min(2, 'Query must be at least 2 characters'), limit: zod_1.z.coerce.number().int().min(1).max(10).default(5), @@ -16,7 +15,7 @@ const searchSchema = zod_1.z.object({ const router = (0, express_1.Router)(); exports.geocodingRouter = router; router.use(auth_middleware_1.authenticate); -router.use((0, rbac_middleware_1.requireRole)(...MAP_ADMIN_ROLES)); +router.use((0, rbac_middleware_1.requireRole)(...roles_1.MAP_ROLES)); // GET /api/map/geocoding/search?q=Ottawa&limit=5 router.get('/search', (0, validate_1.validate)(searchSchema, 'query'), async (req, res, next) => { try { diff --git a/api/dist/modules/map/geocoding/geocoding.routes.js.map b/api/dist/modules/map/geocoding/geocoding.routes.js.map index 9d4c2361..df0c67a3 100644 --- a/api/dist/modules/map/geocoding/geocoding.routes.js.map +++ b/api/dist/modules/map/geocoding/geocoding.routes.js.map @@ -1 +1 @@ -{"version":3,"file":"geocoding.routes.js","sourceRoot":"","sources":["../../../../src/modules/map/geocoding/geocoding.routes.ts"],"names":[],"mappings":";;;AAAA,qCAAkE;AAClE,6BAAwB;AACxB,2CAA0C;AAC1C,2DAAuD;AACvD,2DAAwD;AACxD,yEAAmE;AACnE,yEAAkE;AAElE,MAAM,eAAe,GAAe,CAAC,iBAAQ,CAAC,WAAW,EAAE,iBAAQ,CAAC,SAAS,CAAC,CAAC;AAE/E,MAAM,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5B,CAAC,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,qCAAqC,CAAC;IAC3D,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;CACzD,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;AAmBL,iCAAe;AAlBlC,MAAM,CAAC,GAAG,CAAC,8BAAY,CAAC,CAAC;AACzB,MAAM,CAAC,GAAG,CAAC,IAAA,6BAAW,EAAC,GAAG,eAAe,CAAC,CAAC,CAAC;AAE5C,iDAAiD;AACjD,MAAM,CAAC,GAAG,CACR,SAAS,EACT,IAAA,mBAAQ,EAAC,YAAY,EAAE,OAAO,CAAC,EAC/B,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,KAAgD,CAAC;QAC1E,MAAM,OAAO,GAAG,MAAM,oCAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACxD,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC"} \ No newline at end of file +{"version":3,"file":"geocoding.routes.js","sourceRoot":"","sources":["../../../../src/modules/map/geocoding/geocoding.routes.ts"],"names":[],"mappings":";;;AAAA,qCAAkE;AAClE,6BAAwB;AACxB,2DAAuD;AACvD,2DAAwD;AACxD,yEAAmE;AACnE,yEAAkE;AAClE,gDAAiD;AAEjD,MAAM,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5B,CAAC,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,qCAAqC,CAAC;IAC3D,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;CACzD,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;AAmBL,iCAAe;AAlBlC,MAAM,CAAC,GAAG,CAAC,8BAAY,CAAC,CAAC;AACzB,MAAM,CAAC,GAAG,CAAC,IAAA,6BAAW,EAAC,GAAG,iBAAS,CAAC,CAAC,CAAC;AAEtC,iDAAiD;AACjD,MAAM,CAAC,GAAG,CACR,SAAS,EACT,IAAA,mBAAQ,EAAC,YAAY,EAAE,OAAO,CAAC,EAC/B,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,KAAgD,CAAC;QAC1E,MAAM,OAAO,GAAG,MAAM,oCAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACxD,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/map/locations/bulk-geocode.routes.d.ts.map b/api/dist/modules/map/locations/bulk-geocode.routes.d.ts.map index a820daae..9a5b171c 100644 --- a/api/dist/modules/map/locations/bulk-geocode.routes.d.ts.map +++ b/api/dist/modules/map/locations/bulk-geocode.routes.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"bulk-geocode.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/locations/bulk-geocode.routes.ts"],"names":[],"mappings":"AAUA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAsCxB,OAAO,EAAE,MAAM,IAAI,iBAAiB,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"bulk-geocode.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/locations/bulk-geocode.routes.ts"],"names":[],"mappings":"AAQA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAsCxB,OAAO,EAAE,MAAM,IAAI,iBAAiB,EAAE,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/map/locations/bulk-geocode.routes.js b/api/dist/modules/map/locations/bulk-geocode.routes.js index a9ed2a98..26b8e72e 100644 --- a/api/dist/modules/map/locations/bulk-geocode.routes.js +++ b/api/dist/modules/map/locations/bulk-geocode.routes.js @@ -2,17 +2,16 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.bulkGeocodeRouter = void 0; const express_1 = require("express"); -const client_1 = require("@prisma/client"); const geocode_queue_service_1 = require("../../../services/geocode-queue.service"); const bulk_geocode_schemas_1 = require("./bulk-geocode.schemas"); const validate_1 = require("../../../middleware/validate"); const auth_middleware_1 = require("../../../middleware/auth.middleware"); const rbac_middleware_1 = require("../../../middleware/rbac.middleware"); -const MAP_ADMIN_ROLES = [client_1.UserRole.SUPER_ADMIN, client_1.UserRole.MAP_ADMIN]; +const roles_1 = require("../../../utils/roles"); const router = (0, express_1.Router)(); exports.bulkGeocodeRouter = router; router.use(auth_middleware_1.authenticate); -router.use((0, rbac_middleware_1.requireRole)(...MAP_ADMIN_ROLES)); +router.use((0, rbac_middleware_1.requireRole)(...roles_1.MAP_ROLES)); // POST /api/map/locations/bulk-geocode — start bulk geocoding job router.post('/', (0, validate_1.validate)(bulk_geocode_schemas_1.bulkGeocodeSchema), async (req, res, next) => { try { diff --git a/api/dist/modules/map/locations/bulk-geocode.routes.js.map b/api/dist/modules/map/locations/bulk-geocode.routes.js.map index 23341ccc..806f2591 100644 --- a/api/dist/modules/map/locations/bulk-geocode.routes.js.map +++ b/api/dist/modules/map/locations/bulk-geocode.routes.js.map @@ -1 +1 @@ -{"version":3,"file":"bulk-geocode.routes.js","sourceRoot":"","sources":["../../../../src/modules/map/locations/bulk-geocode.routes.ts"],"names":[],"mappings":";;;AAAA,qCAAkE;AAClE,2CAA0C;AAC1C,mFAA8E;AAC9E,iEAA2D;AAC3D,2DAAwD;AACxD,yEAAmE;AACnE,yEAAkE;AAElE,MAAM,eAAe,GAAe,CAAC,iBAAQ,CAAC,WAAW,EAAE,iBAAQ,CAAC,SAAS,CAAC,CAAC;AAE/E,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;AAsCL,mCAAiB;AArCpC,MAAM,CAAC,GAAG,CAAC,8BAAY,CAAC,CAAC;AACzB,MAAM,CAAC,GAAG,CAAC,IAAA,6BAAW,EAAC,GAAG,eAAe,CAAC,CAAC,CAAC;AAE5C,kEAAkE;AAClE,MAAM,CAAC,IAAI,CACT,GAAG,EACH,IAAA,mBAAQ,EAAC,wCAAiB,CAAC,EAC3B,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,2CAAmB,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACjF,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC,CAAC;IAC7D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,8DAA8D;AAC9D,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IAC9E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,2CAAmB,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,KAAe,CAAC,CAAC;QAClF,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,+DAA+D;AAC/D,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IAC9E,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,2CAAmB,CAAC,QAAQ,EAAE,CAAC;QACnD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"bulk-geocode.routes.js","sourceRoot":"","sources":["../../../../src/modules/map/locations/bulk-geocode.routes.ts"],"names":[],"mappings":";;;AAAA,qCAAkE;AAClE,mFAA8E;AAC9E,iEAA2D;AAC3D,2DAAwD;AACxD,yEAAmE;AACnE,yEAAkE;AAClE,gDAAiD;AAEjD,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;AAsCL,mCAAiB;AArCpC,MAAM,CAAC,GAAG,CAAC,8BAAY,CAAC,CAAC;AACzB,MAAM,CAAC,GAAG,CAAC,IAAA,6BAAW,EAAC,GAAG,iBAAS,CAAC,CAAC,CAAC;AAEtC,kEAAkE;AAClE,MAAM,CAAC,IAAI,CACT,GAAG,EACH,IAAA,mBAAQ,EAAC,wCAAiB,CAAC,EAC3B,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,2CAAmB,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACjF,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC,CAAC;IAC7D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,8DAA8D;AAC9D,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IAC9E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,2CAAmB,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,KAAe,CAAC,CAAC;QAClF,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,+DAA+D;AAC/D,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IAC9E,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,2CAAmB,CAAC,QAAQ,EAAE,CAAC;QACnD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/map/locations/bulk-geocode.schemas.d.ts b/api/dist/modules/map/locations/bulk-geocode.schemas.d.ts index bb4c6db4..7078b78f 100644 --- a/api/dist/modules/map/locations/bulk-geocode.schemas.d.ts +++ b/api/dist/modules/map/locations/bulk-geocode.schemas.d.ts @@ -6,13 +6,13 @@ export declare const bulkGeocodeSchema: z.ZodObject<{ limit: z.ZodOptional; }, "strip", z.ZodTypeAny, { limit?: number | undefined; - buildingType?: "SINGLE_FAMILY" | "MULTI_UNIT" | "MIXED_USE" | "COMMERCIAL" | undefined; cutId?: string | undefined; + buildingType?: "SINGLE_FAMILY" | "MULTI_UNIT" | "MIXED_USE" | "COMMERCIAL" | undefined; confidenceThreshold?: number | undefined; }, { limit?: number | undefined; - buildingType?: "SINGLE_FAMILY" | "MULTI_UNIT" | "MIXED_USE" | "COMMERCIAL" | undefined; cutId?: string | undefined; + buildingType?: "SINGLE_FAMILY" | "MULTI_UNIT" | "MIXED_USE" | "COMMERCIAL" | undefined; confidenceThreshold?: number | undefined; }>; export type BulkGeocodeInput = z.infer; diff --git a/api/dist/modules/map/locations/locations.routes.d.ts.map b/api/dist/modules/map/locations/locations.routes.d.ts.map index 87ed54b6..689fc921 100644 --- a/api/dist/modules/map/locations/locations.routes.d.ts.map +++ b/api/dist/modules/map/locations/locations.routes.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"locations.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/locations/locations.routes.ts"],"names":[],"mappings":"AAiDA,QAAA,MAAM,WAAW,4CAAW,CAAC;AA4R7B,QAAA,MAAM,YAAY,4CAAW,CAAC;AA4B9B,OAAO,EAAE,WAAW,IAAI,oBAAoB,EAAE,YAAY,IAAI,qBAAqB,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"locations.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/locations/locations.routes.ts"],"names":[],"mappings":"AA+CA,QAAA,MAAM,WAAW,4CAAW,CAAC;AA4R7B,QAAA,MAAM,YAAY,4CAAW,CAAC;AA4B9B,OAAO,EAAE,WAAW,IAAI,oBAAoB,EAAE,YAAY,IAAI,qBAAqB,EAAE,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/map/locations/locations.routes.js b/api/dist/modules/map/locations/locations.routes.js index 77e06cbc..11a64bb1 100644 --- a/api/dist/modules/map/locations/locations.routes.js +++ b/api/dist/modules/map/locations/locations.routes.js @@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); exports.locationsPublicRouter = exports.locationsAdminRouter = void 0; const express_1 = require("express"); -const client_1 = require("@prisma/client"); const multer_1 = __importDefault(require("multer")); const locations_service_1 = require("./locations.service"); const locations_schemas_1 = require("./locations.schemas"); @@ -14,7 +13,7 @@ const database_1 = require("../../../config/database"); const validate_1 = require("../../../middleware/validate"); const auth_middleware_1 = require("../../../middleware/auth.middleware"); const rbac_middleware_1 = require("../../../middleware/rbac.middleware"); -const MAP_ADMIN_ROLES = [client_1.UserRole.SUPER_ADMIN, client_1.UserRole.MAP_ADMIN]; +const roles_1 = require("../../../utils/roles"); // Multer config for CSV upload (memory storage, 10MB limit) const upload = (0, multer_1.default)({ storage: multer_1.default.memoryStorage(), @@ -45,7 +44,7 @@ const bulkUpload = (0, multer_1.default)({ const adminRouter = (0, express_1.Router)(); exports.locationsAdminRouter = adminRouter; adminRouter.use(auth_middleware_1.authenticate); -adminRouter.use((0, rbac_middleware_1.requireRole)(...MAP_ADMIN_ROLES)); +adminRouter.use((0, rbac_middleware_1.requireRole)(...roles_1.MAP_ROLES)); // GET /api/map/locations — list with pagination + filters adminRouter.get('/', (0, validate_1.validate)(locations_schemas_1.listLocationsSchema, 'query'), async (req, res, next) => { try { diff --git a/api/dist/modules/map/locations/locations.routes.js.map b/api/dist/modules/map/locations/locations.routes.js.map index f1305503..a8d1ec19 100644 --- a/api/dist/modules/map/locations/locations.routes.js.map +++ b/api/dist/modules/map/locations/locations.routes.js.map @@ -1 +1 @@ -{"version":3,"file":"locations.routes.js","sourceRoot":"","sources":["../../../../src/modules/map/locations/locations.routes.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"locations.routes.js","sourceRoot":"","sources":["../../../../src/modules/map/locations/locations.routes.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/api/dist/modules/map/locations/locations.schemas.d.ts b/api/dist/modules/map/locations/locations.schemas.d.ts index 51d37b4e..330d62b1 100644 --- a/api/dist/modules/map/locations/locations.schemas.d.ts +++ b/api/dist/modules/map/locations/locations.schemas.d.ts @@ -25,27 +25,27 @@ export declare const createLocationSchema: z.ZodObject<{ phone?: string | undefined; latitude?: number | undefined; longitude?: number | undefined; - buildingNotes?: string | undefined; - unitNumber?: string | undefined; + notes?: string | undefined; firstName?: string | undefined; lastName?: string | undefined; supportLevel?: "LEVEL_1" | "LEVEL_2" | "LEVEL_3" | "LEVEL_4" | undefined; + unitNumber?: string | undefined; + buildingNotes?: string | undefined; signSize?: string | undefined; - notes?: string | undefined; }, { address: string; email?: string | undefined; phone?: string | undefined; latitude?: number | undefined; longitude?: number | undefined; - buildingNotes?: string | undefined; - unitNumber?: string | undefined; + notes?: string | undefined; firstName?: string | undefined; lastName?: string | undefined; supportLevel?: "LEVEL_1" | "LEVEL_2" | "LEVEL_3" | "LEVEL_4" | undefined; + unitNumber?: string | undefined; + buildingNotes?: string | undefined; sign?: boolean | undefined; signSize?: string | undefined; - notes?: string | undefined; }>; export declare const updateLocationSchema: z.ZodObject<{ address: z.ZodOptional; @@ -79,35 +79,35 @@ export declare const updateLocationSchema: z.ZodObject<{ phone?: string | null | undefined; latitude?: number | null | undefined; longitude?: number | null | undefined; + notes?: string | null | undefined; + firstName?: string | null | undefined; + lastName?: string | null | undefined; + supportLevel?: "LEVEL_1" | "LEVEL_2" | "LEVEL_3" | "LEVEL_4" | null | undefined; address?: string | undefined; + unitNumber?: string | null | undefined; postalCode?: string | null | undefined; province?: string | null | undefined; buildingType?: "SINGLE_FAMILY" | "MULTI_UNIT" | "MIXED_USE" | "COMMERCIAL" | null | undefined; buildingNotes?: string | null | undefined; - unitNumber?: string | null | undefined; - firstName?: string | null | undefined; - lastName?: string | null | undefined; - supportLevel?: "LEVEL_1" | "LEVEL_2" | "LEVEL_3" | "LEVEL_4" | null | undefined; sign?: boolean | undefined; signSize?: string | null | undefined; - notes?: string | null | undefined; }, { email?: string | null | undefined; phone?: string | null | undefined; latitude?: number | null | undefined; longitude?: number | null | undefined; + notes?: string | null | undefined; + firstName?: string | null | undefined; + lastName?: string | null | undefined; + supportLevel?: "LEVEL_1" | "LEVEL_2" | "LEVEL_3" | "LEVEL_4" | null | undefined; address?: string | undefined; + unitNumber?: string | null | undefined; postalCode?: string | null | undefined; province?: string | null | undefined; buildingType?: "SINGLE_FAMILY" | "MULTI_UNIT" | "MIXED_USE" | "COMMERCIAL" | null | undefined; buildingNotes?: string | null | undefined; - unitNumber?: string | null | undefined; - firstName?: string | null | undefined; - lastName?: string | null | undefined; - supportLevel?: "LEVEL_1" | "LEVEL_2" | "LEVEL_3" | "LEVEL_4" | null | undefined; sign?: boolean | undefined; signSize?: string | null | undefined; - notes?: string | null | undefined; }>; export declare const listLocationsSchema: z.ZodObject<{ page: z.ZodDefault; @@ -126,21 +126,21 @@ export declare const listLocationsSchema: z.ZodObject<{ }, "strip", z.ZodTypeAny, { limit: number; page: number; - sortBy: "createdAt" | "address" | "supportLevel"; + sortBy: "createdAt" | "supportLevel" | "address"; sortOrder: "asc" | "desc"; search?: string | undefined; supportLevel?: "LEVEL_1" | "LEVEL_2" | "LEVEL_3" | "LEVEL_4" | undefined; hasSign?: boolean | undefined; - confidenceLevel?: "high" | "medium" | "low" | "none" | undefined; + confidenceLevel?: "none" | "low" | "medium" | "high" | undefined; }, { search?: string | undefined; limit?: number | undefined; page?: number | undefined; + sortBy?: "createdAt" | "supportLevel" | "address" | undefined; + sortOrder?: "asc" | "desc" | undefined; supportLevel?: "LEVEL_1" | "LEVEL_2" | "LEVEL_3" | "LEVEL_4" | undefined; hasSign?: boolean | undefined; - confidenceLevel?: "high" | "medium" | "low" | "none" | undefined; - sortBy?: "createdAt" | "address" | "supportLevel" | undefined; - sortOrder?: "asc" | "desc" | undefined; + confidenceLevel?: "none" | "low" | "medium" | "high" | undefined; }>; export declare const locationIdSchema: z.ZodObject<{ id: z.ZodString; @@ -185,7 +185,7 @@ export declare const bulkImportSchema: z.ZodObject<{ batchSize: z.ZodDefault; }, "strip", z.ZodTypeAny, { format: "standard" | "nar"; - filterType: "city" | "cut" | "province" | "none" | "mapArea"; + filterType: "none" | "city" | "cut" | "province" | "mapArea"; residentialOnly: boolean; deduplicateRadius: number; skipGeocoding: boolean; @@ -194,9 +194,9 @@ export declare const bulkImportSchema: z.ZodObject<{ filterCity?: string | undefined; filterProvince?: string | undefined; }, { - cutId?: string | undefined; format?: "standard" | "nar" | undefined; - filterType?: "city" | "cut" | "province" | "none" | "mapArea" | undefined; + cutId?: string | undefined; + filterType?: "none" | "city" | "cut" | "province" | "mapArea" | undefined; filterCity?: string | undefined; filterProvince?: string | undefined; residentialOnly?: boolean | undefined; diff --git a/api/dist/modules/map/locations/locations.service.d.ts b/api/dist/modules/map/locations/locations.service.d.ts index 7e2c0c1e..affa5db6 100644 --- a/api/dist/modules/map/locations/locations.service.d.ts +++ b/api/dist/modules/map/locations/locations.service.d.ts @@ -16,10 +16,10 @@ export declare const locationsService: { locations: ({ addresses: { id: string; - unitNumber: string | null; firstName: string | null; lastName: string | null; supportLevel: import(".prisma/client").$Enums.SupportLevel | null; + unitNumber: string | null; sign: boolean; }[]; } & { @@ -28,8 +28,9 @@ export declare const locationsService: { updatedAt: Date; latitude: Prisma.Decimal; longitude: Prisma.Decimal; - address: string; createdByUserId: string | null; + updatedByUserId: string | null; + address: string; postalCode: string | null; province: string | null; federalDistrict: string | null; @@ -40,7 +41,6 @@ export declare const locationsService: { buildingNotes: string | null; geocodeConfidence: number | null; geocodeProvider: import(".prisma/client").$Enums.GeocodeProvider | null; - updatedByUserId: string | null; })[]; pagination: { page: number; @@ -54,13 +54,13 @@ export declare const locationsService: { id: string; email: string | null; phone: string | null; - unitNumber: string | null; + notes: string | null; firstName: string | null; lastName: string | null; supportLevel: import(".prisma/client").$Enums.SupportLevel | null; + unitNumber: string | null; sign: boolean; signSize: string | null; - notes: string | null; }[]; } & { id: string; @@ -68,8 +68,9 @@ export declare const locationsService: { updatedAt: Date; latitude: Prisma.Decimal; longitude: Prisma.Decimal; - address: string; createdByUserId: string | null; + updatedByUserId: string | null; + address: string; postalCode: string | null; province: string | null; federalDistrict: string | null; @@ -80,16 +81,16 @@ export declare const locationsService: { buildingNotes: string | null; geocodeConfidence: number | null; geocodeProvider: import(".prisma/client").$Enums.GeocodeProvider | null; - updatedByUserId: string | null; }>; - create(data: CreateLocationInput, userId: string): Promise<{ + create(data: CreateLocationInput, userId: string | null): Promise<{ id: string; createdAt: Date; updatedAt: Date; latitude: Prisma.Decimal; longitude: Prisma.Decimal; - address: string; createdByUserId: string | null; + updatedByUserId: string | null; + address: string; postalCode: string | null; province: string | null; federalDistrict: string | null; @@ -100,7 +101,6 @@ export declare const locationsService: { buildingNotes: string | null; geocodeConfidence: number | null; geocodeProvider: import(".prisma/client").$Enums.GeocodeProvider | null; - updatedByUserId: string | null; }>; update(id: string, data: UpdateLocationInput, userId: string): Promise<{ id: string; @@ -108,8 +108,9 @@ export declare const locationsService: { updatedAt: Date; latitude: Prisma.Decimal; longitude: Prisma.Decimal; - address: string; createdByUserId: string | null; + updatedByUserId: string | null; + address: string; postalCode: string | null; province: string | null; federalDistrict: string | null; @@ -120,7 +121,6 @@ export declare const locationsService: { buildingNotes: string | null; geocodeConfidence: number | null; geocodeProvider: import(".prisma/client").$Enums.GeocodeProvider | null; - updatedByUserId: string | null; }>; delete(id: string): Promise; bulkDelete(ids: string[]): Promise<{ @@ -139,11 +139,11 @@ export declare const locationsService: { createdAt: Date; userId: string | null; action: import(".prisma/client").$Enums.LocationHistoryAction; + metadata: Prisma.JsonValue | null; locationId: string; field: string | null; oldValue: string | null; newValue: string | null; - metadata: Prisma.JsonValue | null; })[]; pagination: { page: number; @@ -195,13 +195,13 @@ export declare const locationsService: { id: string; email: string | null; phone: string | null; - unitNumber: string | null; + notes: string | null; firstName: string | null; lastName: string | null; supportLevel: import(".prisma/client").$Enums.SupportLevel | null; + unitNumber: string | null; sign: boolean; signSize: string | null; - notes: string | null; }[]; } & { id: string; @@ -209,8 +209,9 @@ export declare const locationsService: { updatedAt: Date; latitude: Prisma.Decimal; longitude: Prisma.Decimal; - address: string; createdByUserId: string | null; + updatedByUserId: string | null; + address: string; postalCode: string | null; province: string | null; federalDistrict: string | null; @@ -221,7 +222,6 @@ export declare const locationsService: { buildingNotes: string | null; geocodeConfidence: number | null; geocodeProvider: import(".prisma/client").$Enums.GeocodeProvider | null; - updatedByUserId: string | null; })[]>; getPublicLocations(bounds?: { minLat: number; @@ -232,14 +232,14 @@ export declare const locationsService: { id: string; latitude: Prisma.Decimal; longitude: Prisma.Decimal; - address: string; addresses: { id: string; - unitNumber: string | null; supportLevel: import(".prisma/client").$Enums.SupportLevel | null; + unitNumber: string | null; sign: boolean; signSize: string | null; }[]; + address: string; }[]>; importFromCsv(buffer: Buffer, userId: string): Promise<{ total: number; diff --git a/api/dist/modules/map/locations/locations.service.d.ts.map b/api/dist/modules/map/locations/locations.service.d.ts.map index 8409f28c..6662ccae 100644 --- a/api/dist/modules/map/locations/locations.service.d.ts.map +++ b/api/dist/modules/map/locations/locations.service.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"locations.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/locations/locations.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,YAAY,EAA0C,MAAM,gBAAgB,CAAC;AAU9F,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAKzH,UAAU,aAAa;IACrB,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAkLD,eAAO,MAAM,gBAAgB;qBACJ,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0FtB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0BN,mBAAmB,UAAU,MAAM;;;;;;;;;;;;;;;;;;;;eA2ErC,MAAM,QAAQ,mBAAmB,UAAU,MAAM;;;;;;;;;;;;;;;;;;;;eA2HjD,MAAM;oBAQD,MAAM,EAAE;;;2BAOD,MAAM,SAAQ,MAAM,UAAa,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;4BA4BtC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAwIR;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,UAAS,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA4C3E;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;0BA0CxE,MAAM,UAAU,MAAM;;;;;;;6BA4GnB,MAAM,aAAa,MAAM;uBAS9C,MAAM,UACN,MAAM,WACL,eAAe,YACd,aAAa;;;;;;;;0BAgUG;QAAE,YAAY,CAAC,EAAE,YAAY,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE;CAiD/E,CAAC"} \ No newline at end of file +{"version":3,"file":"locations.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/locations/locations.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,YAAY,EAA0C,MAAM,gBAAgB,CAAC;AAW9F,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAKzH,UAAU,aAAa;IACrB,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAkLD,eAAO,MAAM,gBAAgB;qBACJ,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0FtB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0BN,mBAAmB,UAAU,MAAM,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;eA2E5C,MAAM,QAAQ,mBAAmB,UAAU,MAAM;;;;;;;;;;;;;;;;;;;;eA2HjD,MAAM;oBAQD,MAAM,EAAE;;;2BAOD,MAAM,SAAQ,MAAM,UAAa,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;4BA4BtC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAwIR;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,UAAS,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA4C3E;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;0BA2DxE,MAAM,UAAU,MAAM;;;;;;;6BA4GnB,MAAM,aAAa,MAAM;uBAS9C,MAAM,UACN,MAAM,WACL,eAAe,YACd,aAAa;;;;;;;;0BAgUG;QAAE,YAAY,CAAC,EAAE,YAAY,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE;CAyD/E,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/map/locations/locations.service.js b/api/dist/modules/map/locations/locations.service.js index 708fa5c4..cd0a63c9 100644 --- a/api/dist/modules/map/locations/locations.service.js +++ b/api/dist/modules/map/locations/locations.service.js @@ -14,6 +14,7 @@ const geocoding_service_1 = require("../geocoding/geocoding.service"); const logger_1 = require("../../../utils/logger"); const metrics_1 = require("../../../utils/metrics"); const spatial_1 = require("../../../utils/spatial"); +const settings_service_1 = require("../settings/settings.service"); // Statistics Canada Lambert Conformal Conic projection (EPSG:3347) → WGS84 (EPSG:4326) proj4_1.default.defs('EPSG:3347', '+proj=lcc +lat_1=49 +lat_2=77 +lat_0=63.390675 +lon_0=-91.86666666666666 +x_0=6200000 +y_0=3000000 +ellps=GRS80 +units=m +no_defs'); // Map CSV header names to our fields (case-insensitive, flexible) @@ -685,6 +686,21 @@ exports.locationsService = { }, take: 5000, // Safety limit }); + // Server-side enforcement: strip sensitive fields based on map visibility settings + const mapSettings = await settings_service_1.mapSettingsService.get(); + if (!mapSettings.publicShowSupportLevels || !mapSettings.publicShowSignInfo) { + for (const loc of locations) { + for (const addr of loc.addresses) { + if (!mapSettings.publicShowSupportLevels) { + addr.supportLevel = null; + } + if (!mapSettings.publicShowSignInfo) { + addr.sign = false; + addr.signSize = null; + } + } + } + } const durationSeconds = (Date.now() - startTime) / 1000; (0, metrics_1.recordLocationQuery)('public', !!bounds, locations.length, durationSeconds); return locations; @@ -1099,6 +1115,14 @@ exports.locationsService = { include: { addresses: true }, orderBy: { createdAt: 'desc' }, }); + // Sanitize a field value against CSV formula injection. + // Spreadsheet apps treat cells starting with =, +, -, @, \t, \r as formulas. + // Prefixing with an apostrophe causes Excel/Sheets to treat the value as plain text. + function sanitizeCsvField(value) { + if (/^[=+\-@\t\r]/.test(value)) + return `'${value}`; + return value; + } // Flatten: one row per address const rows = []; for (const loc of locations) { @@ -1109,16 +1133,16 @@ exports.locationsService = { if (filters?.hasSign !== undefined && addr.sign !== filters.hasSign) continue; rows.push({ - address: loc.address || '', - unitNumber: addr.unitNumber || '', - firstName: addr.firstName || '', - lastName: addr.lastName || '', - email: addr.email || '', - phone: addr.phone || '', + address: sanitizeCsvField(loc.address || ''), + unitNumber: sanitizeCsvField(addr.unitNumber || ''), + firstName: sanitizeCsvField(addr.firstName || ''), + lastName: sanitizeCsvField(addr.lastName || ''), + email: sanitizeCsvField(addr.email || ''), + phone: sanitizeCsvField(addr.phone || ''), supportLevel: addr.supportLevel || '', sign: addr.sign ? 'Yes' : 'No', signSize: addr.signSize || '', - notes: addr.notes || '', + notes: sanitizeCsvField(addr.notes || ''), latitude: loc.latitude?.toString() || '', longitude: loc.longitude?.toString() || '', geocodeConfidence: loc.geocodeConfidence?.toString() || '', diff --git a/api/dist/modules/map/locations/locations.service.js.map b/api/dist/modules/map/locations/locations.service.js.map index 543a1dae..dfa30f8b 100644 --- a/api/dist/modules/map/locations/locations.service.js.map +++ b/api/dist/modules/map/locations/locations.service.js.map @@ -1 +1 @@ -{"version":3,"file":"locations.service.js","sourceRoot":"","sources":["../../../../src/modules/map/locations/locations.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"locations.service.js","sourceRoot":"","sources":["../../../../src/modules/map/locations/locations.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/api/dist/modules/map/locations/nar-import.routes.d.ts.map b/api/dist/modules/map/locations/nar-import.routes.d.ts.map index ea319aa0..bf5e5f0f 100644 --- a/api/dist/modules/map/locations/nar-import.routes.d.ts.map +++ b/api/dist/modules/map/locations/nar-import.routes.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"nar-import.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/locations/nar-import.routes.ts"],"names":[],"mappings":"AAwBA,QAAA,MAAM,eAAe,4CAAW,CAAC;AAoFjC,OAAO,EAAE,eAAe,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"nar-import.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/locations/nar-import.routes.ts"],"names":[],"mappings":"AAsBA,QAAA,MAAM,eAAe,4CAAW,CAAC;AAoFjC,OAAO,EAAE,eAAe,EAAE,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/map/locations/nar-import.routes.js b/api/dist/modules/map/locations/nar-import.routes.js index 56c6f9e2..f945fdea 100644 --- a/api/dist/modules/map/locations/nar-import.routes.js +++ b/api/dist/modules/map/locations/nar-import.routes.js @@ -2,7 +2,6 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.narImportRouter = void 0; const express_1 = require("express"); -const client_1 = require("@prisma/client"); const zod_1 = require("zod"); const crypto_1 = require("crypto"); const nar_import_service_1 = require("./nar-import.service"); @@ -11,7 +10,7 @@ const logger_1 = require("../../../utils/logger"); const auth_middleware_1 = require("../../../middleware/auth.middleware"); const rbac_middleware_1 = require("../../../middleware/rbac.middleware"); const validate_1 = require("../../../middleware/validate"); -const MAP_ADMIN_ROLES = [client_1.UserRole.SUPER_ADMIN, client_1.UserRole.MAP_ADMIN]; +const roles_1 = require("../../../utils/roles"); const serverImportSchema = zod_1.z.object({ provinceCode: zod_1.z.string().min(1).max(2), filterType: zod_1.z.enum(['none', 'city', 'postalPrefix', 'cut']).default('none'), @@ -25,7 +24,7 @@ const serverImportSchema = zod_1.z.object({ const narImportRouter = (0, express_1.Router)(); exports.narImportRouter = narImportRouter; narImportRouter.use(auth_middleware_1.authenticate); -narImportRouter.use((0, rbac_middleware_1.requireRole)(...MAP_ADMIN_ROLES)); +narImportRouter.use((0, rbac_middleware_1.requireRole)(...roles_1.MAP_ROLES)); // GET /api/map/nar-import/datasets — list available NAR datasets by province narImportRouter.get('/datasets', async (_req, res, next) => { try { diff --git a/api/dist/modules/map/locations/nar-import.routes.js.map b/api/dist/modules/map/locations/nar-import.routes.js.map index 44617456..fee4f87f 100644 --- a/api/dist/modules/map/locations/nar-import.routes.js.map +++ b/api/dist/modules/map/locations/nar-import.routes.js.map @@ -1 +1 @@ -{"version":3,"file":"nar-import.routes.js","sourceRoot":"","sources":["../../../../src/modules/map/locations/nar-import.routes.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"nar-import.routes.js","sourceRoot":"","sources":["../../../../src/modules/map/locations/nar-import.routes.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/api/dist/modules/map/settings/settings.routes.d.ts.map b/api/dist/modules/map/settings/settings.routes.d.ts.map index 13538131..685ab0a0 100644 --- a/api/dist/modules/map/settings/settings.routes.d.ts.map +++ b/api/dist/modules/map/settings/settings.routes.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"settings.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/settings/settings.routes.ts"],"names":[],"mappings":"AAUA,QAAA,MAAM,MAAM,4CAAW,CAAC;AA+BxB,OAAO,EAAE,MAAM,IAAI,iBAAiB,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"settings.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/settings/settings.routes.ts"],"names":[],"mappings":"AAQA,QAAA,MAAM,MAAM,4CAAW,CAAC;AA+BxB,OAAO,EAAE,MAAM,IAAI,iBAAiB,EAAE,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/map/settings/settings.routes.js b/api/dist/modules/map/settings/settings.routes.js index 34ab4644..a93be629 100644 --- a/api/dist/modules/map/settings/settings.routes.js +++ b/api/dist/modules/map/settings/settings.routes.js @@ -2,13 +2,12 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.mapSettingsRouter = void 0; const express_1 = require("express"); -const client_1 = require("@prisma/client"); const settings_service_1 = require("./settings.service"); const settings_schemas_1 = require("./settings.schemas"); const validate_1 = require("../../../middleware/validate"); const auth_middleware_1 = require("../../../middleware/auth.middleware"); const rbac_middleware_1 = require("../../../middleware/rbac.middleware"); -const MAP_ADMIN_ROLES = [client_1.UserRole.SUPER_ADMIN, client_1.UserRole.MAP_ADMIN]; +const roles_1 = require("../../../utils/roles"); const router = (0, express_1.Router)(); exports.mapSettingsRouter = router; // GET /api/map/settings — public (needed for map center/zoom) @@ -22,7 +21,7 @@ router.get('/', async (_req, res, next) => { } }); // PUT /api/map/settings — admin only -router.put('/', auth_middleware_1.authenticate, (0, rbac_middleware_1.requireRole)(...MAP_ADMIN_ROLES), (0, validate_1.validate)(settings_schemas_1.updateMapSettingsSchema), async (req, res, next) => { +router.put('/', auth_middleware_1.authenticate, (0, rbac_middleware_1.requireRole)(...roles_1.MAP_ROLES), (0, validate_1.validate)(settings_schemas_1.updateMapSettingsSchema), async (req, res, next) => { try { const settings = await settings_service_1.mapSettingsService.update(req.body); res.json(settings); diff --git a/api/dist/modules/map/settings/settings.routes.js.map b/api/dist/modules/map/settings/settings.routes.js.map index 7e2cef76..7a3a700c 100644 --- a/api/dist/modules/map/settings/settings.routes.js.map +++ b/api/dist/modules/map/settings/settings.routes.js.map @@ -1 +1 @@ -{"version":3,"file":"settings.routes.js","sourceRoot":"","sources":["../../../../src/modules/map/settings/settings.routes.ts"],"names":[],"mappings":";;;AAAA,qCAAkE;AAClE,2CAA0C;AAC1C,yDAAwD;AACxD,yDAA6D;AAC7D,2DAAwD;AACxD,yEAAmE;AACnE,yEAAkE;AAElE,MAAM,eAAe,GAAe,CAAC,iBAAQ,CAAC,WAAW,EAAE,iBAAQ,CAAC,SAAS,CAAC,CAAC;AAE/E,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;AA+BL,mCAAiB;AA7BpC,8DAA8D;AAC9D,MAAM,CAAC,GAAG,CACR,GAAG,EACH,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACzD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,qCAAkB,CAAC,GAAG,EAAE,CAAC;QAChD,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,qCAAqC;AACrC,MAAM,CAAC,GAAG,CACR,GAAG,EACH,8BAAY,EACZ,IAAA,6BAAW,EAAC,GAAG,eAAe,CAAC,EAC/B,IAAA,mBAAQ,EAAC,0CAAuB,CAAC,EACjC,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,qCAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3D,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC"} \ No newline at end of file +{"version":3,"file":"settings.routes.js","sourceRoot":"","sources":["../../../../src/modules/map/settings/settings.routes.ts"],"names":[],"mappings":";;;AAAA,qCAAkE;AAClE,yDAAwD;AACxD,yDAA6D;AAC7D,2DAAwD;AACxD,yEAAmE;AACnE,yEAAkE;AAClE,gDAAiD;AAEjD,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;AA+BL,mCAAiB;AA7BpC,8DAA8D;AAC9D,MAAM,CAAC,GAAG,CACR,GAAG,EACH,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACzD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,qCAAkB,CAAC,GAAG,EAAE,CAAC;QAChD,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,qCAAqC;AACrC,MAAM,CAAC,GAAG,CACR,GAAG,EACH,8BAAY,EACZ,IAAA,6BAAW,EAAC,GAAG,iBAAS,CAAC,EACzB,IAAA,mBAAQ,EAAC,0CAAuB,CAAC,EACjC,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,qCAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3D,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/map/settings/settings.schemas.d.ts b/api/dist/modules/map/settings/settings.schemas.d.ts index a008cba9..5aadd0d9 100644 --- a/api/dist/modules/map/settings/settings.schemas.d.ts +++ b/api/dist/modules/map/settings/settings.schemas.d.ts @@ -12,6 +12,13 @@ export declare const updateMapSettingsSchema: z.ZodObject<{ qrCode2Label: z.ZodOptional>; qrCode3Url: z.ZodUnion<[z.ZodOptional>, z.ZodLiteral<"">]>; qrCode3Label: z.ZodOptional>; + publicMapEnabled: z.ZodOptional; + publicShowLocations: z.ZodOptional; + publicShowSupportLevels: z.ZodOptional; + publicShowCuts: z.ZodOptional; + publicShowEvents: z.ZodOptional; + publicShowAddresses: z.ZodOptional; + publicShowSignInfo: z.ZodOptional; }, "strip", z.ZodTypeAny, { latitude?: number | undefined; longitude?: number | undefined; @@ -25,6 +32,13 @@ export declare const updateMapSettingsSchema: z.ZodObject<{ qrCode2Label?: string | null | undefined; qrCode3Url?: string | null | undefined; qrCode3Label?: string | null | undefined; + publicMapEnabled?: boolean | undefined; + publicShowLocations?: boolean | undefined; + publicShowSupportLevels?: boolean | undefined; + publicShowCuts?: boolean | undefined; + publicShowEvents?: boolean | undefined; + publicShowAddresses?: boolean | undefined; + publicShowSignInfo?: boolean | undefined; }, { latitude?: number | undefined; longitude?: number | undefined; @@ -38,6 +52,13 @@ export declare const updateMapSettingsSchema: z.ZodObject<{ qrCode2Label?: string | null | undefined; qrCode3Url?: string | null | undefined; qrCode3Label?: string | null | undefined; + publicMapEnabled?: boolean | undefined; + publicShowLocations?: boolean | undefined; + publicShowSupportLevels?: boolean | undefined; + publicShowCuts?: boolean | undefined; + publicShowEvents?: boolean | undefined; + publicShowAddresses?: boolean | undefined; + publicShowSignInfo?: boolean | undefined; }>; export type UpdateMapSettingsInput = z.infer; //# sourceMappingURL=settings.schemas.d.ts.map \ No newline at end of file diff --git a/api/dist/modules/map/settings/settings.schemas.d.ts.map b/api/dist/modules/map/settings/settings.schemas.d.ts.map index 009da4c6..eac77ee0 100644 --- a/api/dist/modules/map/settings/settings.schemas.d.ts.map +++ b/api/dist/modules/map/settings/settings.schemas.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"settings.schemas.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/settings/settings.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAalC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"settings.schemas.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/settings/settings.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBlC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/map/settings/settings.schemas.js b/api/dist/modules/map/settings/settings.schemas.js index d57cca56..b1dee6fd 100644 --- a/api/dist/modules/map/settings/settings.schemas.js +++ b/api/dist/modules/map/settings/settings.schemas.js @@ -15,5 +15,12 @@ exports.updateMapSettingsSchema = zod_1.z.object({ qrCode2Label: zod_1.z.string().nullable().optional(), qrCode3Url: zod_1.z.string().url().nullable().optional().or(zod_1.z.literal('')), qrCode3Label: zod_1.z.string().nullable().optional(), + publicMapEnabled: zod_1.z.boolean().optional(), + publicShowLocations: zod_1.z.boolean().optional(), + publicShowSupportLevels: zod_1.z.boolean().optional(), + publicShowCuts: zod_1.z.boolean().optional(), + publicShowEvents: zod_1.z.boolean().optional(), + publicShowAddresses: zod_1.z.boolean().optional(), + publicShowSignInfo: zod_1.z.boolean().optional(), }); //# sourceMappingURL=settings.schemas.js.map \ No newline at end of file diff --git a/api/dist/modules/map/settings/settings.schemas.js.map b/api/dist/modules/map/settings/settings.schemas.js.map index 788d67c8..24efc698 100644 --- a/api/dist/modules/map/settings/settings.schemas.js.map +++ b/api/dist/modules/map/settings/settings.schemas.js.map @@ -1 +1 @@ -{"version":3,"file":"settings.schemas.js","sourceRoot":"","sources":["../../../../src/modules/map/settings/settings.schemas.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAEX,QAAA,uBAAuB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9C,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IAChD,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACnD,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IAChD,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAChD,iBAAiB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACnD,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACjD,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,OAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACpE,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC9C,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,OAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACpE,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC9C,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,OAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACpE,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAC/C,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"settings.schemas.js","sourceRoot":"","sources":["../../../../src/modules/map/settings/settings.schemas.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAEX,QAAA,uBAAuB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9C,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IAChD,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACnD,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IAChD,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAChD,iBAAiB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACnD,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACjD,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,OAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACpE,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC9C,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,OAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACpE,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC9C,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,OAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACpE,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC9C,gBAAgB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACxC,mBAAmB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC3C,uBAAuB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/C,cAAc,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACtC,gBAAgB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACxC,mBAAmB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC3C,kBAAkB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/map/settings/settings.service.d.ts b/api/dist/modules/map/settings/settings.service.d.ts index 5e5d9c8d..4d39d0b7 100644 --- a/api/dist/modules/map/settings/settings.service.d.ts +++ b/api/dist/modules/map/settings/settings.service.d.ts @@ -4,9 +4,9 @@ export declare const mapSettingsService: { id: string; createdAt: Date; updatedAt: Date; + createdBy: string | null; latitude: import("@prisma/client/runtime/library").Decimal | null; longitude: import("@prisma/client/runtime/library").Decimal | null; - createdBy: string | null; zoom: number | null; walkSheetTitle: string | null; walkSheetSubtitle: string | null; @@ -17,14 +17,21 @@ export declare const mapSettingsService: { qrCode2Label: string | null; qrCode3Url: string | null; qrCode3Label: string | null; + publicMapEnabled: boolean; + publicShowLocations: boolean; + publicShowSupportLevels: boolean; + publicShowCuts: boolean; + publicShowEvents: boolean; + publicShowAddresses: boolean; + publicShowSignInfo: boolean; }>; update(data: UpdateMapSettingsInput): Promise<{ id: string; createdAt: Date; updatedAt: Date; + createdBy: string | null; latitude: import("@prisma/client/runtime/library").Decimal | null; longitude: import("@prisma/client/runtime/library").Decimal | null; - createdBy: string | null; zoom: number | null; walkSheetTitle: string | null; walkSheetSubtitle: string | null; @@ -35,6 +42,13 @@ export declare const mapSettingsService: { qrCode2Label: string | null; qrCode3Url: string | null; qrCode3Label: string | null; + publicMapEnabled: boolean; + publicShowLocations: boolean; + publicShowSupportLevels: boolean; + publicShowCuts: boolean; + publicShowEvents: boolean; + publicShowAddresses: boolean; + publicShowSignInfo: boolean; }>; }; //# sourceMappingURL=settings.service.d.ts.map \ No newline at end of file diff --git a/api/dist/modules/map/settings/settings.service.d.ts.map b/api/dist/modules/map/settings/settings.service.d.ts.map index c0c9bad4..20d87c1e 100644 --- a/api/dist/modules/map/settings/settings.service.d.ts.map +++ b/api/dist/modules/map/settings/settings.service.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"settings.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/settings/settings.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;iBAeV,sBAAsB;;;;;;;;;;;;;;;;;;CAiB1C,CAAC"} \ No newline at end of file +{"version":3,"file":"settings.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/settings/settings.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;iBAeV,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;CAiB1C,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/map/shifts/shift-series.routes.d.ts.map b/api/dist/modules/map/shifts/shift-series.routes.d.ts.map index df6fcb9d..b114cab2 100644 --- a/api/dist/modules/map/shifts/shift-series.routes.d.ts.map +++ b/api/dist/modules/map/shifts/shift-series.routes.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"shift-series.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/shifts/shift-series.routes.ts"],"names":[],"mappings":"AAQA,QAAA,MAAM,MAAM,4CAAW,CAAC;AA2DxB,eAAe,MAAM,CAAC"} \ No newline at end of file +{"version":3,"file":"shift-series.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/shifts/shift-series.routes.ts"],"names":[],"mappings":"AAQA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAqExB,eAAe,MAAM,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/map/shifts/shift-series.routes.js b/api/dist/modules/map/shifts/shift-series.routes.js index 2d38a4e1..d4a95097 100644 --- a/api/dist/modules/map/shifts/shift-series.routes.js +++ b/api/dist/modules/map/shifts/shift-series.routes.js @@ -4,12 +4,12 @@ const express_1 = require("express"); const auth_middleware_1 = require("../../../middleware/auth.middleware"); const rbac_middleware_1 = require("../../../middleware/rbac.middleware"); const validate_1 = require("../../../middleware/validate"); -const client_1 = require("@prisma/client"); const shift_series_service_1 = require("./shift-series.service"); const shift_series_schemas_1 = require("./shift-series.schemas"); +const roles_1 = require("../../../utils/roles"); const router = (0, express_1.Router)(); // All routes require admin role -router.use(auth_middleware_1.authenticate, (0, rbac_middleware_1.requireRole)(client_1.UserRole.SUPER_ADMIN, client_1.UserRole.MAP_ADMIN)); +router.use(auth_middleware_1.authenticate, (0, rbac_middleware_1.requireRole)(...roles_1.SCHEDULING_ROLES)); // Create series router.post('/', (0, validate_1.validate)(shift_series_schemas_1.createShiftSeriesSchema), async (req, res, next) => { try { @@ -20,6 +20,16 @@ router.post('/', (0, validate_1.validate)(shift_series_schemas_1.createShiftSeri next(error); } }); +// Get series shift count +router.get('/:id/count', async (req, res, next) => { + try { + const count = await shift_series_service_1.ShiftSeriesService.getShiftCount(req.params.id); + res.json({ count }); + } + catch (error) { + next(error); + } +}); // Get series router.get('/:id', async (req, res, next) => { try { diff --git a/api/dist/modules/map/shifts/shift-series.routes.js.map b/api/dist/modules/map/shifts/shift-series.routes.js.map index 86e442e7..85aaae0e 100644 --- a/api/dist/modules/map/shifts/shift-series.routes.js.map +++ b/api/dist/modules/map/shifts/shift-series.routes.js.map @@ -1 +1 @@ -{"version":3,"file":"shift-series.routes.js","sourceRoot":"","sources":["../../../../src/modules/map/shifts/shift-series.routes.ts"],"names":[],"mappings":";;AAAA,qCAAiC;AACjC,yEAAmE;AACnE,yEAAkE;AAClE,2DAAwD;AACxD,2CAA0C;AAC1C,iEAA4D;AAC5D,iEAA0F;AAE1F,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;AAExB,gCAAgC;AAChC,MAAM,CAAC,GAAG,CAAC,8BAAY,EAAE,IAAA,6BAAW,EAAC,iBAAQ,CAAC,WAAW,EAAE,iBAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AAEhF,gBAAgB;AAChB,MAAM,CAAC,IAAI,CACT,GAAG,EACH,IAAA,mBAAQ,EAAC,8CAAuB,CAAC,EACjC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IACvB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,yCAAkB,CAAC,YAAY,CAClD,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,IAAI,EAAE,EAAE,CACb,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,KAAK,CAAC,CAAC;IACd,CAAC;AACH,CAAC,CACF,CAAC;AAEF,aAAa;AACb,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IAC1C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,yCAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAY,CAAC,CAAC;QAC3E,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,KAAK,CAAC,CAAC;IACd,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,gBAAgB;AAChB,MAAM,CAAC,GAAG,CACR,MAAM,EACN,IAAA,mBAAQ,EAAC,8CAAuB,CAAC,EACjC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IACvB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,yCAAkB,CAAC,YAAY,CAClD,GAAG,CAAC,MAAM,CAAC,EAAY,EACvB,GAAG,CAAC,IAAI,CACT,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,KAAK,CAAC,CAAC;IACd,CAAC;AACH,CAAC,CACF,CAAC;AAEF,gBAAgB;AAChB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IAC7C,IAAI,CAAC;QACH,MAAM,yCAAkB,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAY,CAAC,CAAC;QAC/D,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,KAAK,CAAC,CAAC;IACd,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,kBAAe,MAAM,CAAC"} \ No newline at end of file +{"version":3,"file":"shift-series.routes.js","sourceRoot":"","sources":["../../../../src/modules/map/shifts/shift-series.routes.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/api/dist/modules/map/shifts/shift-series.schemas.d.ts b/api/dist/modules/map/shifts/shift-series.schemas.d.ts index 9d865a83..876206fd 100644 --- a/api/dist/modules/map/shifts/shift-series.schemas.d.ts +++ b/api/dist/modules/map/shifts/shift-series.schemas.d.ts @@ -25,8 +25,8 @@ export declare const createShiftSeriesSchema: z.ZodEffects; + /** + * Get count of non-exception shifts in a series + */ + static getShiftCount(seriesId: string): Promise; /** * Get series with all its shifts */ static getSeries(seriesId: string): Promise<{ - cut: { - id: string; - name: string; - createdAt: Date; - updatedAt: Date; - category: import(".prisma/client").$Enums.CutCategory | null; - description: string | null; - createdByUserId: string | null; - color: string; - opacity: import("@prisma/client/runtime/library").Decimal; - isPublic: boolean; - isOfficial: boolean; - geojson: string; - bounds: string | null; - showLocations: boolean; - exportEnabled: boolean; - assignedTo: string | null; - filterSettings: import("@prisma/client/runtime/library").JsonValue | null; - lastCanvassed: Date | null; - completionPercentage: number; - } | null; shifts: ({ signups: { status: import(".prisma/client").$Enums.SignupStatus; id: string; userId: string | null; userEmail: string; + shiftId: string; userName: string | null; shiftTitle: string | null; userPhone: string | null; signupDate: Date; signupSource: import(".prisma/client").$Enums.SignupSource; - shiftId: string; }[]; } & { status: import(".prisma/client").$Enums.ShiftStatus; @@ -75,28 +58,51 @@ export declare class ShiftSeriesService { location: string | null; title: string; description: string | null; + createdBy: string | null; isPublic: boolean; cutId: string | null; - createdBy: string | null; startTime: string; endTime: string; - maxVolunteers: number; - currentVolunteers: number; + gancioEventId: number | null; + meetingId: string | null; seriesId: string | null; isException: boolean; + maxVolunteers: number; + currentVolunteers: number; })[]; + cut: { + id: string; + name: string; + createdAt: Date; + updatedAt: Date; + category: import(".prisma/client").$Enums.CutCategory | null; + description: string | null; + isPublic: boolean; + createdByUserId: string | null; + color: string; + opacity: import("@prisma/client/runtime/library").Decimal; + isOfficial: boolean; + geojson: string; + bounds: string | null; + showLocations: boolean; + exportEnabled: boolean; + assignedTo: string | null; + filterSettings: import("@prisma/client/runtime/library").JsonValue | null; + lastCanvassed: Date | null; + completionPercentage: number; + } | null; } & { id: string; createdAt: Date; updatedAt: Date; location: string | null; title: string; - description: string | null; startDate: Date; endDate: Date | null; + description: string | null; + createdBy: string | null; isPublic: boolean; cutId: string | null; - createdBy: string | null; startTime: string; endTime: string; maxVolunteers: number; @@ -107,39 +113,18 @@ export declare class ShiftSeriesService { * Update series shifts based on edit mode */ static updateSeries(seriesId: string, input: UpdateShiftSeriesInput): Promise<{ - cut: { - id: string; - name: string; - createdAt: Date; - updatedAt: Date; - category: import(".prisma/client").$Enums.CutCategory | null; - description: string | null; - createdByUserId: string | null; - color: string; - opacity: import("@prisma/client/runtime/library").Decimal; - isPublic: boolean; - isOfficial: boolean; - geojson: string; - bounds: string | null; - showLocations: boolean; - exportEnabled: boolean; - assignedTo: string | null; - filterSettings: import("@prisma/client/runtime/library").JsonValue | null; - lastCanvassed: Date | null; - completionPercentage: number; - } | null; shifts: ({ signups: { status: import(".prisma/client").$Enums.SignupStatus; id: string; userId: string | null; userEmail: string; + shiftId: string; userName: string | null; shiftTitle: string | null; userPhone: string | null; signupDate: Date; signupSource: import(".prisma/client").$Enums.SignupSource; - shiftId: string; }[]; } & { status: import(".prisma/client").$Enums.ShiftStatus; @@ -150,28 +135,51 @@ export declare class ShiftSeriesService { location: string | null; title: string; description: string | null; + createdBy: string | null; isPublic: boolean; cutId: string | null; - createdBy: string | null; startTime: string; endTime: string; - maxVolunteers: number; - currentVolunteers: number; + gancioEventId: number | null; + meetingId: string | null; seriesId: string | null; isException: boolean; + maxVolunteers: number; + currentVolunteers: number; })[]; + cut: { + id: string; + name: string; + createdAt: Date; + updatedAt: Date; + category: import(".prisma/client").$Enums.CutCategory | null; + description: string | null; + isPublic: boolean; + createdByUserId: string | null; + color: string; + opacity: import("@prisma/client/runtime/library").Decimal; + isOfficial: boolean; + geojson: string; + bounds: string | null; + showLocations: boolean; + exportEnabled: boolean; + assignedTo: string | null; + filterSettings: import("@prisma/client/runtime/library").JsonValue | null; + lastCanvassed: Date | null; + completionPercentage: number; + } | null; } & { id: string; createdAt: Date; updatedAt: Date; location: string | null; title: string; - description: string | null; startDate: Date; endDate: Date | null; + description: string | null; + createdBy: string | null; isPublic: boolean; cutId: string | null; - createdBy: string | null; startTime: string; endTime: string; maxVolunteers: number; diff --git a/api/dist/modules/map/shifts/shift-series.service.d.ts.map b/api/dist/modules/map/shifts/shift-series.service.d.ts.map index c3f19bf3..7f1a1904 100644 --- a/api/dist/modules/map/shifts/shift-series.service.d.ts.map +++ b/api/dist/modules/map/shifts/shift-series.service.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"shift-series.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/shifts/shift-series.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAK7F,qBAAa,kBAAkB;IAC7B;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI,EAAE;IA8CjE;;OAEG;WACU,YAAY,CAAC,KAAK,EAAE,sBAAsB,EAAE,SAAS,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;IA2D3E;;OAEG;WACU,SAAS,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAmBvC;;OAEG;WACU,YAAY,CACvB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA0C/B;;OAEG;WACU,YAAY,CAAC,QAAQ,EAAE,MAAM;CAW3C"} \ No newline at end of file +{"version":3,"file":"shift-series.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/shifts/shift-series.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAK7F,qBAAa,kBAAkB;IAC7B;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI,EAAE;IA8CjE;;OAEG;WACU,YAAY,CAAC,KAAK,EAAE,sBAAsB,EAAE,SAAS,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;IA2D3E;;OAEG;WACU,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAM7D;;OAEG;WACU,SAAS,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAmBvC;;OAEG;WACU,YAAY,CACvB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA0C/B;;OAEG;WACU,YAAY,CAAC,QAAQ,EAAE,MAAM;CAW3C"} \ No newline at end of file diff --git a/api/dist/modules/map/shifts/shift-series.service.js b/api/dist/modules/map/shifts/shift-series.service.js index ded89c77..2abd8bfe 100644 --- a/api/dist/modules/map/shifts/shift-series.service.js +++ b/api/dist/modules/map/shifts/shift-series.service.js @@ -104,6 +104,14 @@ class ShiftSeriesService { generatedShiftsCount: result.shifts.length, }; } + /** + * Get count of non-exception shifts in a series + */ + static async getShiftCount(seriesId) { + return database_1.prisma.shift.count({ + where: { seriesId, isException: false }, + }); + } /** * Get series with all its shifts */ diff --git a/api/dist/modules/map/shifts/shift-series.service.js.map b/api/dist/modules/map/shifts/shift-series.service.js.map index d32df7d6..dbac52ac 100644 --- a/api/dist/modules/map/shifts/shift-series.service.js.map +++ b/api/dist/modules/map/shifts/shift-series.service.js.map @@ -1 +1 @@ -{"version":3,"file":"shift-series.service.js","sourceRoot":"","sources":["../../../../src/modules/map/shifts/shift-series.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"shift-series.service.js","sourceRoot":"","sources":["../../../../src/modules/map/shifts/shift-series.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/api/dist/modules/map/shifts/shifts.routes.d.ts.map b/api/dist/modules/map/shifts/shifts.routes.d.ts.map index 219fcfa8..dcb44aab 100644 --- a/api/dist/modules/map/shifts/shifts.routes.d.ts.map +++ b/api/dist/modules/map/shifts/shifts.routes.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"shifts.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/shifts/shifts.routes.ts"],"names":[],"mappings":"AAkBA,QAAA,MAAM,WAAW,4CAAW,CAAC;AA2J7B,QAAA,MAAM,eAAe,4CAAW,CAAC;AA2DjC,QAAA,MAAM,YAAY,4CAAW,CAAC;AA+B9B,OAAO,EAAE,WAAW,IAAI,iBAAiB,EAAE,YAAY,IAAI,kBAAkB,EAAE,eAAe,IAAI,qBAAqB,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"shifts.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/shifts/shifts.routes.ts"],"names":[],"mappings":"AAkBA,QAAA,MAAM,WAAW,4CAAW,CAAC;AAuL7B,QAAA,MAAM,eAAe,4CAAW,CAAC;AA2DjC,QAAA,MAAM,YAAY,4CAAW,CAAC;AA0E9B,OAAO,EAAE,WAAW,IAAI,iBAAiB,EAAE,YAAY,IAAI,kBAAkB,EAAE,eAAe,IAAI,qBAAqB,EAAE,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/map/shifts/shifts.routes.js b/api/dist/modules/map/shifts/shifts.routes.js index ef229bf5..02a40d92 100644 --- a/api/dist/modules/map/shifts/shifts.routes.js +++ b/api/dist/modules/map/shifts/shifts.routes.js @@ -2,19 +2,20 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.shiftsVolunteerRouter = exports.shiftsPublicRouter = exports.shiftsAdminRouter = void 0; const express_1 = require("express"); -const client_1 = require("@prisma/client"); const shifts_service_1 = require("./shifts.service"); const shifts_schemas_1 = require("./shifts.schemas"); const validate_1 = require("../../../middleware/validate"); const auth_middleware_1 = require("../../../middleware/auth.middleware"); const rbac_middleware_1 = require("../../../middleware/rbac.middleware"); const rate_limit_1 = require("../../../middleware/rate-limit"); -const MAP_ADMIN_ROLES = [client_1.UserRole.SUPER_ADMIN, client_1.UserRole.MAP_ADMIN]; +const database_1 = require("../../../config/database"); +const redis_1 = require("../../../config/redis"); +const roles_1 = require("../../../utils/roles"); // --- Admin Router --- const adminRouter = (0, express_1.Router)(); exports.shiftsAdminRouter = adminRouter; adminRouter.use(auth_middleware_1.authenticate); -adminRouter.use((0, rbac_middleware_1.requireRole)(...MAP_ADMIN_ROLES)); +adminRouter.use((0, rbac_middleware_1.requireRole)(...roles_1.SCHEDULING_ROLES)); // GET /api/map/shifts — list paginated adminRouter.get('/', (0, validate_1.validate)(shifts_schemas_1.listShiftsSchema, 'query'), async (req, res, next) => { try { @@ -114,6 +115,28 @@ adminRouter.delete('/:id/signups/:signupId', async (req, res, next) => { next(err); } }); +// POST /api/map/shifts/:id/meeting — create and link a video briefing meeting +adminRouter.post('/:id/meeting', async (req, res, next) => { + try { + const id = req.params.id; + const meeting = await shifts_service_1.shiftsService.createMeetingForShift(id, req.user.id); + res.status(201).json(meeting); + } + catch (err) { + next(err); + } +}); +// DELETE /api/map/shifts/:id/meeting — remove video briefing from shift +adminRouter.delete('/:id/meeting', async (req, res, next) => { + try { + const id = req.params.id; + await shifts_service_1.shiftsService.removeMeetingFromShift(id); + res.status(204).send(); + } + catch (err) { + next(err); + } +}); // POST /api/map/shifts/:id/email-details — email all volunteers adminRouter.post('/:id/email-details', async (req, res, next) => { try { @@ -195,4 +218,47 @@ publicRouter.post('/public/:id/signup', rate_limit_1.shiftSignupRateLimit, (0, v next(err); } }); +// GET /api/map/shifts/public/related — related active campaigns +publicRouter.get('/public/related', async (_req, res, next) => { + try { + const cacheKey = 'shifts:related:campaigns'; + try { + const cached = await redis_1.redis.get(cacheKey); + if (cached) { + res.json(JSON.parse(cached)); + return; + } + } + catch { /* cache miss */ } + const campaigns = await database_1.prisma.campaign.findMany({ + where: { status: 'ACTIVE' }, + select: { + id: true, + slug: true, + title: true, + description: true, + _count: { select: { emails: true } }, + }, + orderBy: { createdAt: 'desc' }, + take: 3, + }); + const result = { + campaigns: campaigns.map(c => ({ + id: c.id, + slug: c.slug, + title: c.title, + description: c.description?.slice(0, 150) ?? null, + emailCount: c._count.emails, + })), + }; + try { + await redis_1.redis.setex(cacheKey, 300, JSON.stringify(result)); + } + catch { /* non-critical */ } + res.json(result); + } + catch (err) { + next(err); + } +}); //# sourceMappingURL=shifts.routes.js.map \ No newline at end of file diff --git a/api/dist/modules/map/shifts/shifts.routes.js.map b/api/dist/modules/map/shifts/shifts.routes.js.map index fe5b0e15..3a89dd5c 100644 --- a/api/dist/modules/map/shifts/shifts.routes.js.map +++ b/api/dist/modules/map/shifts/shifts.routes.js.map @@ -1 +1 @@ -{"version":3,"file":"shifts.routes.js","sourceRoot":"","sources":["../../../../src/modules/map/shifts/shifts.routes.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"shifts.routes.js","sourceRoot":"","sources":["../../../../src/modules/map/shifts/shifts.routes.ts"],"names":[],"mappings":";;;AAAA,qCAAkE;AAClE,qDAAiD;AACjD,qDAM0B;AAC1B,2DAAwD;AACxD,yEAAmE;AACnE,yEAAkE;AAClE,+DAAsE;AACtE,uDAAkD;AAClD,iDAA8C;AAC9C,gDAAwD;AAExD,uBAAuB;AACvB,MAAM,WAAW,GAAG,IAAA,gBAAM,GAAE,CAAC;AA4TL,wCAAiB;AA3TzC,WAAW,CAAC,GAAG,CAAC,8BAAY,CAAC,CAAC;AAC9B,WAAW,CAAC,GAAG,CAAC,IAAA,6BAAW,EAAC,GAAG,wBAAgB,CAAC,CAAC,CAAC;AAElD,uCAAuC;AACvC,WAAW,CAAC,GAAG,CACb,GAAG,EACH,IAAA,mBAAQ,EAAC,iCAAgB,EAAE,OAAO,CAAC,EACnC,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,8BAAa,CAAC,OAAO,CAAC,GAAG,CAAC,KAAY,CAAC,CAAC;QAC7D,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,yCAAyC;AACzC,WAAW,CAAC,GAAG,CACb,QAAQ,EACR,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACzD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,8BAAa,CAAC,QAAQ,EAAE,CAAC;QAC7C,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,+CAA+C;AAC/C,WAAW,CAAC,GAAG,CACb,WAAW,EACX,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC;QAEzC,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE,CAAC;YAC3B,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gCAAgC,EAAE,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,8BAAa,CAAC,eAAe,CAC9C,SAAmB,EACnB,OAAiB,CAClB,CAAC;QAEF,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,sDAAsD;AACtD,WAAW,CAAC,GAAG,CACb,MAAM,EACN,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAY,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,8BAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC/C,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,gCAAgC;AAChC,WAAW,CAAC,IAAI,CACd,GAAG,EACH,IAAA,mBAAQ,EAAC,kCAAiB,CAAC,EAC3B,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,8BAAa,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAK,CAAC,EAAE,CAAC,CAAC;QACjE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,mCAAmC;AACnC,WAAW,CAAC,GAAG,CACb,MAAM,EACN,IAAA,mBAAQ,EAAC,kCAAiB,CAAC,EAC3B,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAY,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,8BAAa,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACvD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,sCAAsC;AACtC,WAAW,CAAC,MAAM,CAChB,MAAM,EACN,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAY,CAAC;QACnC,MAAM,8BAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,yDAAyD;AACzD,WAAW,CAAC,IAAI,CACd,cAAc,EACd,IAAA,mBAAQ,EAAC,gCAAe,CAAC,EACzB,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAY,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,8BAAa,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,wEAAwE;AACxE,WAAW,CAAC,MAAM,CAChB,wBAAwB,EACxB,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,QAAkB,CAAC;QAC/C,MAAM,8BAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC3C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,8EAA8E;AAC9E,WAAW,CAAC,IAAI,CACd,cAAc,EACd,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAY,CAAC;QACnC,MAAM,OAAO,GAAG,MAAM,8BAAa,CAAC,qBAAqB,CAAC,EAAE,EAAE,GAAG,CAAC,IAAK,CAAC,EAAE,CAAC,CAAC;QAC5E,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,wEAAwE;AACxE,WAAW,CAAC,MAAM,CAChB,cAAc,EACd,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAY,CAAC;QACnC,MAAM,8BAAa,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;QAC/C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,gEAAgE;AAChE,WAAW,CAAC,IAAI,CACd,oBAAoB,EACpB,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAY,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,8BAAa,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QACzD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,2BAA2B;AAC3B,MAAM,eAAe,GAAG,IAAA,gBAAM,GAAE,CAAC;AAqIiE,gDAAqB;AApIvH,eAAe,CAAC,GAAG,CAAC,8BAAY,CAAC,CAAC;AAElC,8EAA8E;AAC9E,eAAe,CAAC,GAAG,CACjB,qBAAqB,EACrB,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,8BAAa,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,CAAC,CAAC;QACzE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,mEAAmE;AACnE,eAAe,CAAC,GAAG,CACjB,uBAAuB,EACvB,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,8BAAa,CAAC,YAAY,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,CAAC,CAAC;QAC/D,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,gEAAgE;AAChE,eAAe,CAAC,IAAI,CAClB,uBAAuB,EACvB,iCAAoB,EACpB,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAY,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,8BAAa,CAAC,eAAe,CAAC,EAAE,EAAE,GAAG,CAAC,IAAK,CAAC,EAAE,CAAC,CAAC;QACrE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,kEAAkE;AAClE,eAAe,CAAC,MAAM,CACpB,uBAAuB,EACvB,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAY,CAAC;QACnC,MAAM,8BAAa,CAAC,qBAAqB,CAAC,EAAE,EAAE,GAAG,CAAC,IAAK,CAAC,EAAE,CAAC,CAAC;QAC5D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,wBAAwB;AACxB,MAAM,YAAY,GAAG,IAAA,gBAAM,GAAE,CAAC;AA0E6B,0CAAkB;AAxE7E,2DAA2D;AAC3D,YAAY,CAAC,GAAG,CACd,SAAS,EACT,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACzD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,8BAAa,CAAC,eAAe,EAAE,CAAC;QACrD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,yDAAyD;AACzD,YAAY,CAAC,IAAI,CACf,oBAAoB,EACpB,iCAAoB,EACpB,IAAA,mBAAQ,EAAC,mCAAkB,CAAC,EAC5B,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAY,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,8BAAa,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,gEAAgE;AAChE,YAAY,CAAC,GAAG,CACd,iBAAiB,EACjB,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACzD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,0BAA0B,CAAC;QAC5C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,aAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,MAAM,EAAE,CAAC;gBAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC;QAE5B,MAAM,SAAS,GAAG,MAAM,iBAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC/C,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;YAC3B,MAAM,EAAE;gBACN,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,IAAI;gBACX,WAAW,EAAE,IAAI;gBACjB,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;aACrC;YACD,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;YAC9B,IAAI,EAAE,CAAC;SACR,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG;YACb,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC7B,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI;gBACjD,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;aAC5B,CAAC,CAAC;SACJ,CAAC;QAEF,IAAI,CAAC;YAAC,MAAM,aAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAE9F,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CACF,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/map/shifts/shifts.schemas.d.ts b/api/dist/modules/map/shifts/shifts.schemas.d.ts index 30515392..7a159c3d 100644 --- a/api/dist/modules/map/shifts/shifts.schemas.d.ts +++ b/api/dist/modules/map/shifts/shifts.schemas.d.ts @@ -46,7 +46,7 @@ export declare const updateShiftSchema: z.ZodObject<{ }>>; cutId: z.ZodOptional>; }, "strip", z.ZodTypeAny, { - status?: "OPEN" | "FULL" | "CANCELLED" | undefined; + status?: "CANCELLED" | "OPEN" | "FULL" | undefined; date?: string | undefined; location?: string | null | undefined; title?: string | undefined; @@ -57,7 +57,7 @@ export declare const updateShiftSchema: z.ZodObject<{ endTime?: string | undefined; maxVolunteers?: number | undefined; }, { - status?: "OPEN" | "FULL" | "CANCELLED" | undefined; + status?: "CANCELLED" | "OPEN" | "FULL" | undefined; date?: string | undefined; location?: string | null | undefined; title?: string | undefined; @@ -85,11 +85,11 @@ export declare const listShiftsSchema: z.ZodObject<{ page: number; sortBy: "date" | "createdAt" | "title"; sortOrder: "asc" | "desc"; - status?: "OPEN" | "FULL" | "CANCELLED" | undefined; + status?: "CANCELLED" | "OPEN" | "FULL" | undefined; search?: string | undefined; upcoming?: boolean | undefined; }, { - status?: "OPEN" | "FULL" | "CANCELLED" | undefined; + status?: "CANCELLED" | "OPEN" | "FULL" | undefined; search?: string | undefined; limit?: number | undefined; page?: number | undefined; diff --git a/api/dist/modules/map/shifts/shifts.service.d.ts b/api/dist/modules/map/shifts/shifts.service.d.ts index 372ab89d..2d75bfd1 100644 --- a/api/dist/modules/map/shifts/shifts.service.d.ts +++ b/api/dist/modules/map/shifts/shifts.service.d.ts @@ -9,6 +9,13 @@ export declare const shiftsService: { id: string; name: string; } | null; + meeting: { + id: string; + title: string; + isActive: boolean; + slug: string; + jitsiRoom: string; + } | null; } & { status: import(".prisma/client").$Enums.ShiftStatus; date: Date; @@ -18,15 +25,17 @@ export declare const shiftsService: { location: string | null; title: string; description: string | null; + createdBy: string | null; isPublic: boolean; cutId: string | null; - createdBy: string | null; startTime: string; endTime: string; - maxVolunteers: number; - currentVolunteers: number; + gancioEventId: number | null; + meetingId: string | null; seriesId: string | null; isException: boolean; + maxVolunteers: number; + currentVolunteers: number; })[]; pagination: { page: number; @@ -43,6 +52,13 @@ export declare const shiftsService: { id: string; name: string; } | null; + meeting: { + id: string; + title: string; + isActive: boolean; + slug: string; + jitsiRoom: string; + } | null; signups: ({ user: { id: string; @@ -55,12 +71,12 @@ export declare const shiftsService: { id: string; userId: string | null; userEmail: string; + shiftId: string; userName: string | null; shiftTitle: string | null; userPhone: string | null; signupDate: Date; signupSource: import(".prisma/client").$Enums.SignupSource; - shiftId: string; })[]; } & { status: import(".prisma/client").$Enums.ShiftStatus; @@ -71,15 +87,17 @@ export declare const shiftsService: { location: string | null; title: string; description: string | null; + createdBy: string | null; isPublic: boolean; cutId: string | null; - createdBy: string | null; startTime: string; endTime: string; - maxVolunteers: number; - currentVolunteers: number; + gancioEventId: number | null; + meetingId: string | null; seriesId: string | null; isException: boolean; + maxVolunteers: number; + currentVolunteers: number; }>; create(data: CreateShiftInput, userId: string): Promise<{ status: import(".prisma/client").$Enums.ShiftStatus; @@ -90,15 +108,17 @@ export declare const shiftsService: { location: string | null; title: string; description: string | null; + createdBy: string | null; isPublic: boolean; cutId: string | null; - createdBy: string | null; startTime: string; endTime: string; - maxVolunteers: number; - currentVolunteers: number; + gancioEventId: number | null; + meetingId: string | null; seriesId: string | null; isException: boolean; + maxVolunteers: number; + currentVolunteers: number; }>; update(id: string, data: UpdateShiftInput): Promise<{ status: import(".prisma/client").$Enums.ShiftStatus; @@ -109,17 +129,33 @@ export declare const shiftsService: { location: string | null; title: string; description: string | null; + createdBy: string | null; isPublic: boolean; cutId: string | null; - createdBy: string | null; startTime: string; endTime: string; - maxVolunteers: number; - currentVolunteers: number; + gancioEventId: number | null; + meetingId: string | null; seriesId: string | null; isException: boolean; + maxVolunteers: number; + currentVolunteers: number; }>; delete(id: string): Promise; + createMeetingForShift(shiftId: string, userId: string): Promise<{ + id: string; + createdAt: Date; + updatedAt: Date; + title: string; + isActive: boolean; + description: string | null; + slug: string; + createdByUserId: string; + jitsiRoom: string; + startTime: Date | null; + endTime: Date | null; + }>; + removeMeetingFromShift(shiftId: string): Promise; getStats(): Promise<{ total: number; open: number; @@ -140,24 +176,24 @@ export declare const shiftsService: { id: string; userId: string | null; userEmail: string; + shiftId: string; userName: string | null; shiftTitle: string | null; userPhone: string | null; signupDate: Date; signupSource: import(".prisma/client").$Enums.SignupSource; - shiftId: string; })[]>; addSignup(shiftId: string, data: AddSignupInput): Promise<{ status: import(".prisma/client").$Enums.SignupStatus; id: string; userId: string | null; userEmail: string; + shiftId: string; userName: string | null; shiftTitle: string | null; userPhone: string | null; signupDate: Date; signupSource: import(".prisma/client").$Enums.SignupSource; - shiftId: string; }>; removeSignup(signupId: string): Promise; publicSignup(shiftId: string, data: PublicSignupInput): Promise<{ @@ -166,12 +202,12 @@ export declare const shiftsService: { id: string; userId: string | null; userEmail: string; + shiftId: string; userName: string | null; shiftTitle: string | null; userPhone: string | null; signupDate: Date; signupSource: import(".prisma/client").$Enums.SignupSource; - shiftId: string; }; isNewUser: boolean; }>; @@ -184,6 +220,11 @@ export declare const shiftsService: { location: string | null; title: string; description: string | null; + meeting: { + id: string; + isActive: boolean; + slug: string; + } | null; startTime: string; endTime: string; maxVolunteers: number; @@ -194,12 +235,12 @@ export declare const shiftsService: { id: string; userId: string | null; userEmail: string; + shiftId: string; userName: string | null; shiftTitle: string | null; userPhone: string | null; signupDate: Date; signupSource: import(".prisma/client").$Enums.SignupSource; - shiftId: string; }>; cancelVolunteerSignup(shiftId: string, userId: string): Promise; getMySignups(userId: string): Promise<({ @@ -210,6 +251,11 @@ export declare const shiftsService: { location: string | null; title: string; description: string | null; + meeting: { + id: string; + isActive: boolean; + slug: string; + } | null; startTime: string; endTime: string; maxVolunteers: number; @@ -220,12 +266,12 @@ export declare const shiftsService: { id: string; userId: string | null; userEmail: string; + shiftId: string; userName: string | null; shiftTitle: string | null; userPhone: string | null; signupDate: Date; signupSource: import(".prisma/client").$Enums.SignupSource; - shiftId: string; })[]>; getPublicShifts(): Promise<{ status: import(".prisma/client").$Enums.ShiftStatus; @@ -234,6 +280,11 @@ export declare const shiftsService: { location: string | null; title: string; description: string | null; + meeting: { + id: string; + isActive: boolean; + slug: string; + } | null; startTime: string; endTime: string; maxVolunteers: number; diff --git a/api/dist/modules/map/shifts/shifts.service.d.ts.map b/api/dist/modules/map/shifts/shifts.service.d.ts.map index add0ada6..6e24ddf0 100644 --- a/api/dist/modules/map/shifts/shifts.service.d.ts.map +++ b/api/dist/modules/map/shifts/shifts.service.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"shifts.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/shifts/shifts.service.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAY1B,eAAO,MAAM,aAAa;qBACD,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAuDnB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAyBN,gBAAgB,UAAU,MAAM;;;;;;;;;;;;;;;;;;;eAmBlC,MAAM,QAAQ,gBAAgB;;;;;;;;;;;;;;;;;;;eA6B9B,MAAM;;;;;;;;;wBAsBG,MAAM;;;;;;;;;;;;;;;;;;;uBAaP,MAAM,QAAQ,cAAc;;;;;;;;;;;;2BA6DxB,MAAM;0BAyBP,MAAM,QAAQ,iBAAiB;;;;;;;;;;;;;;;gCAqJzB,MAAM,aAAa,MAAM;oCA4BrB,MAAM;;;;;;;;;;;;;6BA2Cb,MAAM,UAAU,MAAM;;;;;;;;;;;;mCAoGhB,MAAM,UAAU,MAAM;yBA0BhC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BA4DA,MAAM;;;;+BAsEN,MAAM,WAAW,MAAM;;mBAiBf,MAAM;oBAAU,GAAG,EAAE;;;CAe/D,CAAC"} \ No newline at end of file +{"version":3,"file":"shifts.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/shifts/shifts.service.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAoB1B,eAAO,MAAM,aAAa;qBACD,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAwDnB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0BN,gBAAgB,UAAU,MAAM;;;;;;;;;;;;;;;;;;;;;eA2ClC,MAAM,QAAQ,gBAAgB;;;;;;;;;;;;;;;;;;;;;eA8C9B,MAAM;mCAwBc,MAAM,UAAU,MAAM;;;;;;;;;;;;;oCAyBrB,MAAM;;;;;;;;;wBA4BlB,MAAM;;;;;;;;;;;;;;;;;;;uBAaP,MAAM,QAAQ,cAAc;;;;;;;;;;;;2BA2ExB,MAAM;0BA4BP,MAAM,QAAQ,iBAAiB;;;;;;;;;;;;;;;gCAuQzB,MAAM,aAAa,MAAM;oCAuGrB,MAAM;;;;;;;;;;;;;;;;;;6BA4Cb,MAAM,UAAU,MAAM;;;;;;;;;;;;mCAsLhB,MAAM,UAAU,MAAM;yBAqGhC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BA8DA,MAAM;;;;+BAuDN,MAAM,WAAW,MAAM;;mBAiBf,MAAM;oBAAU,GAAG,EAAE;;;CAe/D,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/map/shifts/shifts.service.js b/api/dist/modules/map/shifts/shifts.service.js index fdf39113..fffbac39 100644 --- a/api/dist/modules/map/shifts/shifts.service.js +++ b/api/dist/modules/map/shifts/shifts.service.js @@ -9,10 +9,21 @@ const client_1 = require("@prisma/client"); const database_1 = require("../../../config/database"); const error_handler_1 = require("../../../middleware/error-handler"); const email_service_1 = require("../../../services/email.service"); -const settings_service_1 = require("../../settings/settings.service"); +const notification_queue_service_1 = require("../../../services/notification-queue.service"); +const notification_helper_1 = require("../../../services/notification.helper"); const env_1 = require("../../../config/env"); const logger_1 = require("../../../utils/logger"); const metrics_1 = require("../../../utils/metrics"); +const rocketchat_webhook_service_1 = require("../../../services/rocketchat-webhook.service"); +const listmonk_event_sync_service_1 = require("../../../services/listmonk-event-sync.service"); +const gancio_client_1 = require("../../../services/gancio.client"); +const unified_calendar_service_1 = require("../../events/unified-calendar.service"); +const group_service_1 = require("../../social/group.service"); +const achievements_service_1 = require("../../social/achievements.service"); +const slug_1 = require("../../../utils/slug"); +const settings_service_1 = require("../../settings/settings.service"); +const sms_notification_service_1 = require("../../../services/sms-notification.service"); +const crypto_1 = __importDefault(require("crypto")); const adjectives = ['Blue', 'Red', 'Green', 'Swift', 'Bright', 'Bold', 'Calm', 'Fair']; const nouns = ['Eagle', 'River', 'Mountain', 'Star', 'Forest', 'Lake', 'Wolf', 'Hawk']; function generateReadablePassword() { @@ -21,6 +32,13 @@ function generateReadablePassword() { const num = Math.floor(Math.random() * 90) + 10; return `${adj}${noun}${num}`; } +const meetingSelect = { + id: true, + slug: true, + title: true, + isActive: true, + jitsiRoom: true, +}; exports.shiftsService = { async findAll(filters) { const { page, limit, search, status, upcoming, sortBy, sortOrder } = filters; @@ -50,6 +68,7 @@ exports.shiftsService = { orderBy, include: { cut: { select: { id: true, name: true } }, + meeting: { select: meetingSelect }, _count: { select: { signups: { where: { status: client_1.SignupStatus.CONFIRMED } }, @@ -74,6 +93,7 @@ exports.shiftsService = { where: { id }, include: { cut: { select: { id: true, name: true } }, + meeting: { select: meetingSelect }, signups: { where: { status: client_1.SignupStatus.CONFIRMED }, include: { user: { select: { id: true, email: true, name: true, phone: true } } }, @@ -106,6 +126,28 @@ exports.shiftsService = { createdBy: userId, }, }); + // Gancio event sync (fire-and-forget) + if (gancio_client_1.gancioClient.enabled) { + gancio_client_1.gancioClient.createEvent({ + title: shift.title, + description: shift.description, + location: shift.location, + date: shift.date, + startTime: shift.startTime, + endTime: shift.endTime, + }).then(async (eventId) => { + if (eventId) { + await database_1.prisma.shift.update({ + where: { id: shift.id }, + data: { gancioEventId: eventId }, + }); + } + }).catch((err) => { + logger_1.logger.warn('Gancio sync on shift create failed:', err); + }); + } + // Bust unified calendar cache + unified_calendar_service_1.unifiedCalendarService.bustCache().catch(() => { }); return shift; }, async update(id, data) { @@ -130,6 +172,21 @@ exports.shiftsService = { where: { id }, data: updateData, }); + // Gancio event sync (fire-and-forget) + if (gancio_client_1.gancioClient.enabled && shift.gancioEventId) { + gancio_client_1.gancioClient.updateEvent(shift.gancioEventId, { + title: shift.title, + description: shift.description, + location: shift.location, + date: shift.date, + startTime: shift.startTime, + endTime: shift.endTime, + }).catch((err) => { + logger_1.logger.warn('Gancio sync on shift update failed:', err); + }); + } + // Bust unified calendar cache + unified_calendar_service_1.unifiedCalendarService.bustCache().catch(() => { }); return shift; }, async delete(id) { @@ -137,7 +194,56 @@ exports.shiftsService = { if (!existing) { throw new error_handler_1.AppError(404, 'Shift not found', 'SHIFT_NOT_FOUND'); } + // Delete Gancio event before deleting shift (fire-and-forget) + if (gancio_client_1.gancioClient.enabled && existing.gancioEventId) { + gancio_client_1.gancioClient.deleteEvent(existing.gancioEventId).catch((err) => { + logger_1.logger.warn('Gancio sync on shift delete failed:', err); + }); + } + // Delete associated meeting if exists + if (existing.meetingId) { + await database_1.prisma.meeting.delete({ where: { id: existing.meetingId } }).catch(() => { }); + } await database_1.prisma.shift.delete({ where: { id } }); + // Bust unified calendar cache + unified_calendar_service_1.unifiedCalendarService.bustCache().catch(() => { }); + }, + async createMeetingForShift(shiftId, userId) { + const shift = await database_1.prisma.shift.findUnique({ where: { id: shiftId } }); + if (!shift) + throw new error_handler_1.AppError(404, 'Shift not found', 'SHIFT_NOT_FOUND'); + if (shift.meetingId) + throw new error_handler_1.AppError(400, 'Shift already has a meeting', 'MEETING_EXISTS'); + const settings = await settings_service_1.siteSettingsService.get(); + if (!settings.enableMeet) + throw new error_handler_1.AppError(400, 'Video meetings are not enabled', 'MEET_DISABLED'); + const meeting = await database_1.prisma.meeting.create({ + data: { + slug: (0, slug_1.generateSlug)(shift.title), + title: `${shift.title} — Video Briefing`, + jitsiRoom: crypto_1.default.randomUUID(), + createdByUserId: userId, + }, + }); + await database_1.prisma.shift.update({ + where: { id: shiftId }, + data: { meetingId: meeting.id }, + }); + return meeting; + }, + async removeMeetingFromShift(shiftId) { + const shift = await database_1.prisma.shift.findUnique({ where: { id: shiftId } }); + if (!shift) + throw new error_handler_1.AppError(404, 'Shift not found', 'SHIFT_NOT_FOUND'); + if (!shift.meetingId) + throw new error_handler_1.AppError(400, 'Shift has no meeting', 'NO_MEETING'); + const meetingId = shift.meetingId; + await database_1.prisma.shift.update({ + where: { id: shiftId }, + data: { meetingId: null }, + }); + // Delete the meeting record + await database_1.prisma.meeting.delete({ where: { id: meetingId } }).catch(() => { }); }, async getStats() { const [total, open, full, cancelled, upcoming, totalSignups] = await Promise.all([ @@ -214,6 +320,18 @@ exports.shiftsService = { }, }), ]); + // Listmonk event sync + listmonk_event_sync_service_1.listmonkEventSyncService.onShiftSignup({ + email: data.userEmail, + name: data.userName || data.userEmail, + shiftTitle: shift.title, + shiftDate: new Date(shift.date).toISOString().split('T')[0], + }).catch(() => { }); + // Social group sync (fire-and-forget) + group_service_1.groupService.syncShiftTeam(shiftId).catch(() => { }); + // Achievement check (fire-and-forget) + if (user?.id) + achievements_service_1.achievementsService.checkAndUnlock(user.id, ['shifts']).catch(() => { }); return signup; }, async removeSignup(signupId) { @@ -237,6 +355,8 @@ exports.shiftsService = { }, }), ]); + // Social group sync (fire-and-forget) + group_service_1.groupService.syncShiftTeam(signup.shiftId).catch(() => { }); }, async publicSignup(shiftId, data) { const shift = await database_1.prisma.shift.findUnique({ where: { id: shiftId } }); @@ -279,6 +399,7 @@ exports.shiftsService = { name: data.name, phone: data.phone, role: 'TEMP', + roles: JSON.parse(JSON.stringify(['TEMP'])), createdVia: 'PUBLIC_SHIFT_SIGNUP', expiresAt: shiftDate, }, @@ -339,38 +460,142 @@ exports.shiftsService = { month: 'long', day: 'numeric', }); - const htmlTemplate = email_service_1.emailService.loadTemplate('shift-signup-confirmation', 'html'); - const txtTemplate = email_service_1.emailService.loadTemplate('shift-signup-confirmation', 'txt'); - let orgName = 'Changemaker Lite'; - try { - orgName = (await settings_service_1.siteSettingsService.get()).organizationName || orgName; - } - catch { /* use default */ } - const vars = { - USER_NAME: data.name, - USER_EMAIL: data.email, - SHIFT_TITLE: shift.title, - SHIFT_DATE: dateStr, - SHIFT_TIME: `${shift.startTime} — ${shift.endTime}`, - SHIFT_LOCATION: shift.location || 'TBD', - IS_NEW_USER: isNewUser ? 'true' : '', - TEMP_PASSWORD: tempPassword || '', - LOGIN_URL: `${env_1.env.CORS_ORIGINS.split(',')[0].trim()}/login`, - ORGANIZATION_NAME: orgName, - }; - const html = email_service_1.emailService.processTemplate(htmlTemplate, vars); - const text = email_service_1.emailService.processTemplate(txtTemplate, vars); - await email_service_1.emailService.sendEmail({ - to: data.email, - subject: `Signup Confirmed — ${shift.title}`, - html, - text, + await email_service_1.emailService.sendShiftSignupConfirmation({ + recipientEmail: data.email, + recipientName: data.name, + shiftTitle: shift.title, + shiftDate: dateStr, + shiftTime: `${shift.startTime} — ${shift.endTime}`, + shiftLocation: shift.location || 'TBD', + isNewUser, + tempPassword, + loginUrl: `${env_1.env.CORS_ORIGINS.split(',')[0].trim()}/login`, }); } catch (err) { logger_1.logger.error('Failed to send shift signup confirmation email:', err); } + // SMS signup confirmation (fire-and-forget) + if (data.phone) { + const shiftDate = new Date(shift.date); + const smsDateStr = shiftDate.toLocaleDateString('en-CA', { + weekday: 'long', + year: 'numeric', + month: 'long', + day: 'numeric', + }); + sms_notification_service_1.smsNotificationService.sendShiftSignupConfirmation(data.phone, { + name: data.name, + shiftTitle: shift.title, + shiftDate: smsDateStr, + shiftTime: `${shift.startTime} — ${shift.endTime}`, + }).catch(err => logger_1.logger.error('SMS signup confirmation failed:', err)); + } + // Notify Rocket.Chat + const shiftDateStr = new Date(shift.date).toLocaleDateString('en-CA', { month: 'short', day: 'numeric' }); + rocketchat_webhook_service_1.rocketchatWebhookService.onShiftSignup({ + userName: data.name || data.email, + shiftTitle: shift.title, + shiftDate: shiftDateStr, + }).catch(() => { }); + // Notification: admin shift signup alert + try { + if (await (0, notification_helper_1.isNotificationEnabled)('notifyAdminShiftSignup')) { + const adminEmails = await (0, notification_helper_1.getAdminEmailsByRole)([client_1.UserRole.SUPER_ADMIN, client_1.UserRole.MAP_ADMIN]); + if (adminEmails.length > 0) { + const adminUrl = `${env_1.env.ADMIN_URL || 'http://localhost:3000'}/app/map/shifts`; + const shiftDate = new Date(shift.date); + const dateStr = shiftDate.toLocaleDateString('en-CA', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }); + await notification_queue_service_1.notificationQueueService.enqueue({ + type: 'admin-shift-signup', + adminEmails, + shiftTitle: shift.title, + shiftDate: dateStr, + volunteerName: data.name, + volunteerEmail: data.email, + signupSource: 'Public Form', + adminUrl, + }); + } + } + } + catch (err) { + logger_1.logger.error('Failed to enqueue admin shift signup notification:', err); + } + // Notification: schedule 24h pre-shift reminder + try { + if (await (0, notification_helper_1.isNotificationEnabled)('notifyVolunteerShiftReminder')) { + const shiftDatetime = new Date(shift.date); + const [startH, startM] = shift.startTime.split(':').map(Number); + shiftDatetime.setHours(startH || 0, startM || 0, 0, 0); + await notification_queue_service_1.notificationQueueService.scheduleShiftReminder({ + type: 'volunteer-shift-reminder', + recipientEmail: data.email, + recipientName: data.name, + shiftTitle: shift.title, + shiftDate: shiftDatetime.toLocaleDateString('en-CA', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }), + shiftStartTime: shift.startTime, + shiftEndTime: shift.endTime, + shiftLocation: shift.location || 'TBD', + shiftDescription: shift.description || '', + currentVolunteers: shift.currentVolunteers + 1, + maxVolunteers: shift.maxVolunteers, + shiftStatus: shift.status, + }, shiftDatetime); + } + } + catch (err) { + logger_1.logger.error('Failed to schedule shift reminder:', err); + } + // SMS shift reminder (fire-and-forget, delay calculated by notification service) + if (data.phone) { + const smsShiftDatetime = new Date(shift.date); + const [smsH, smsM] = shift.startTime.split(':').map(Number); + smsShiftDatetime.setHours(smsH || 0, smsM || 0, 0, 0); + sms_notification_service_1.smsNotificationService.sendShiftReminder(data.phone, { + name: data.name, + shiftTitle: shift.title, + shiftTime: shift.startTime, + shiftLocation: shift.location || 'TBD', + }, smsShiftDatetime).catch(err => logger_1.logger.error('SMS shift reminder failed:', err)); + } + // Notification: schedule post-shift thank-you (2h after end) + try { + if (await (0, notification_helper_1.isNotificationEnabled)('notifyVolunteerShiftThankYou')) { + const shiftEndDatetime = new Date(shift.date); + const [endH, endM] = shift.endTime.split(':').map(Number); + shiftEndDatetime.setHours(endH || 0, endM || 0, 0, 0); + const shiftDate = new Date(shift.date); + const dateStr = shiftDate.toLocaleDateString('en-CA', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }); + const signupUrl = `${env_1.env.CORS_ORIGINS.split(',')[0].trim()}/shifts`; + await notification_queue_service_1.notificationQueueService.scheduleShiftThankYou({ + type: 'volunteer-shift-thank-you', + volunteerEmail: data.email, + volunteerName: data.name, + shiftTitle: shift.title, + shiftDate: dateStr, + shiftTime: `${shift.startTime} — ${shift.endTime}`, + shiftLocation: shift.location || 'TBD', + signupUrl, + }, shiftEndDatetime); + } + } + catch (err) { + logger_1.logger.error('Failed to schedule shift thank-you:', err); + } (0, metrics_1.recordShiftSignup)(); + // Listmonk event sync + listmonk_event_sync_service_1.listmonkEventSyncService.onShiftSignup({ + email: data.email, + name: data.name, + shiftTitle: shift.title, + shiftDate: new Date(shift.date).toISOString().split('T')[0], + }).catch(() => { }); + // Social group sync (fire-and-forget) + group_service_1.groupService.syncShiftTeam(shiftId).catch(() => { }); + // Achievement check (fire-and-forget) + if (user?.id) + achievements_service_1.achievementsService.checkAndUnlock(user.id, ['shifts']).catch(() => { }); return { signup, isNewUser }; }, async cancelPublicSignup(shiftId, userEmail) { @@ -383,6 +608,7 @@ exports.shiftsService = { if (signup.status === client_1.SignupStatus.CANCELLED) { throw new error_handler_1.AppError(400, 'Signup already cancelled', 'ALREADY_CANCELLED'); } + const shift = await database_1.prisma.shift.findUnique({ where: { id: shiftId } }); await database_1.prisma.$transaction([ database_1.prisma.shiftSignup.update({ where: { id: signup.id }, @@ -396,6 +622,75 @@ exports.shiftsService = { }, }), ]); + // Notification: cancellation acknowledgement + cancel reminder + try { + if (shift && await (0, notification_helper_1.isNotificationEnabled)('notifyVolunteerCancellation')) { + const shiftDate = new Date(shift.date); + const dateStr = shiftDate.toLocaleDateString('en-CA', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }); + const signupUrl = `${env_1.env.CORS_ORIGINS.split(',')[0].trim()}/shifts`; + await notification_queue_service_1.notificationQueueService.enqueue({ + type: 'volunteer-cancellation', + volunteerEmail: userEmail, + volunteerName: signup.userName || userEmail, + shiftTitle: shift.title, + shiftDate: dateStr, + shiftTime: `${shift.startTime} — ${shift.endTime}`, + signupUrl, + }); + } + // Cancel the pending shift reminder + if (shift) { + const shiftDatetime = new Date(shift.date); + const [startH, startM] = shift.startTime.split(':').map(Number); + shiftDatetime.setHours(startH || 0, startM || 0, 0, 0); + await notification_queue_service_1.notificationQueueService.cancelShiftReminder(userEmail, shiftDatetime); + } + // Cancel the pending shift thank-you + if (shift) { + const shiftEndDatetime = new Date(shift.date); + const [endH, endM] = shift.endTime.split(':').map(Number); + shiftEndDatetime.setHours(endH || 0, endM || 0, 0, 0); + await notification_queue_service_1.notificationQueueService.cancelShiftThankYou(userEmail, shiftEndDatetime); + } + } + catch (err) { + logger_1.logger.error('Failed to enqueue cancellation notification:', err); + } + // Notify Rocket.Chat of cancellation + if (shift) { + const shiftDateStr = new Date(shift.date).toLocaleDateString('en-CA', { month: 'short', day: 'numeric' }); + rocketchat_webhook_service_1.rocketchatWebhookService.onShiftCancellation({ + userName: signup.userName || userEmail, + shiftTitle: shift.title, + shiftDate: shiftDateStr, + }).catch(() => { }); + } + // Notification: admin shift cancellation alert + try { + if (shift && await (0, notification_helper_1.isNotificationEnabled)('notifyAdminShiftCancellation')) { + const adminEmails = await (0, notification_helper_1.getAdminEmailsByRole)([client_1.UserRole.SUPER_ADMIN, client_1.UserRole.MAP_ADMIN]); + if (adminEmails.length > 0) { + const adminUrl = `${env_1.env.ADMIN_URL || 'http://localhost:3000'}/app/map/shifts`; + const shiftDate = new Date(shift.date); + const dateStr = shiftDate.toLocaleDateString('en-CA', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }); + await notification_queue_service_1.notificationQueueService.enqueue({ + type: 'admin-shift-cancellation', + adminEmails, + shiftTitle: shift.title, + shiftDate: dateStr, + volunteerName: signup.userName || userEmail, + volunteerEmail: userEmail, + cancellationSource: 'Public Form', + adminUrl, + }); + } + } + } + catch (err) { + logger_1.logger.error('Failed to enqueue admin shift cancellation notification:', err); + } + // Social group sync (fire-and-forget) + group_service_1.groupService.syncShiftTeam(shiftId).catch(() => { }); }, async getUpcomingForVolunteer(userId) { const user = await database_1.prisma.user.findUnique({ where: { id: userId }, select: { email: true } }); @@ -418,6 +713,7 @@ exports.shiftsService = { maxVolunteers: true, currentVolunteers: true, status: true, + meeting: { select: { id: true, slug: true, isActive: true } }, }, orderBy: [{ date: 'asc' }, { startTime: 'asc' }], }); @@ -504,41 +800,115 @@ exports.shiftsService = { const dateStr = shiftDate.toLocaleDateString('en-CA', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', }); - const htmlTemplate = email_service_1.emailService.loadTemplate('shift-signup-confirmation', 'html'); - const txtTemplate = email_service_1.emailService.loadTemplate('shift-signup-confirmation', 'txt'); - let orgName = 'Changemaker Lite'; - try { - orgName = (await settings_service_1.siteSettingsService.get()).organizationName || orgName; - } - catch { /* default */ } - const vars = { - USER_NAME: user.name || user.email, - USER_EMAIL: user.email, - SHIFT_TITLE: shift.title, - SHIFT_DATE: dateStr, - SHIFT_TIME: `${shift.startTime} — ${shift.endTime}`, - SHIFT_LOCATION: shift.location || 'TBD', - IS_NEW_USER: '', - TEMP_PASSWORD: '', - LOGIN_URL: `${env_1.env.CORS_ORIGINS.split(',')[0].trim()}/login`, - ORGANIZATION_NAME: orgName, - }; - const html = email_service_1.emailService.processTemplate(htmlTemplate, vars); - const text = email_service_1.emailService.processTemplate(txtTemplate, vars); - await email_service_1.emailService.sendEmail({ - to: user.email, - subject: `Signup Confirmed — ${shift.title}`, - html, - text, + await email_service_1.emailService.sendShiftSignupConfirmation({ + recipientEmail: user.email, + recipientName: user.name || user.email, + shiftTitle: shift.title, + shiftDate: dateStr, + shiftTime: `${shift.startTime} — ${shift.endTime}`, + shiftLocation: shift.location || 'TBD', + isNewUser: false, + loginUrl: `${env_1.env.CORS_ORIGINS.split(',')[0].trim()}/login`, }); } catch (err) { logger_1.logger.error('Failed to send volunteer shift signup confirmation email:', err); } + // Notify Rocket.Chat + const shiftDateStr = new Date(shift.date).toLocaleDateString('en-CA', { month: 'short', day: 'numeric' }); + rocketchat_webhook_service_1.rocketchatWebhookService.onShiftSignup({ + userName: user.name || user.email, + shiftTitle: shift.title, + shiftDate: shiftDateStr, + }).catch(() => { }); + // Notification: admin shift signup alert + try { + if (await (0, notification_helper_1.isNotificationEnabled)('notifyAdminShiftSignup')) { + const adminEmails = await (0, notification_helper_1.getAdminEmailsByRole)([client_1.UserRole.SUPER_ADMIN, client_1.UserRole.MAP_ADMIN]); + if (adminEmails.length > 0) { + const adminUrl = `${env_1.env.ADMIN_URL || 'http://localhost:3000'}/app/map/shifts`; + const shiftDate = new Date(shift.date); + const dateStr = shiftDate.toLocaleDateString('en-CA', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }); + await notification_queue_service_1.notificationQueueService.enqueue({ + type: 'admin-shift-signup', + adminEmails, + shiftTitle: shift.title, + shiftDate: dateStr, + volunteerName: user.name || user.email, + volunteerEmail: user.email, + signupSource: 'Authenticated Volunteer', + adminUrl, + }); + } + } + } + catch (err) { + logger_1.logger.error('Failed to enqueue admin shift signup notification:', err); + } + // Notification: schedule 24h pre-shift reminder + try { + if (await (0, notification_helper_1.isNotificationEnabled)('notifyVolunteerShiftReminder')) { + const shiftDatetime = new Date(shift.date); + const [startH, startM] = shift.startTime.split(':').map(Number); + shiftDatetime.setHours(startH || 0, startM || 0, 0, 0); + await notification_queue_service_1.notificationQueueService.scheduleShiftReminder({ + type: 'volunteer-shift-reminder', + recipientEmail: user.email, + recipientName: user.name || user.email, + shiftTitle: shift.title, + shiftDate: shiftDatetime.toLocaleDateString('en-CA', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }), + shiftStartTime: shift.startTime, + shiftEndTime: shift.endTime, + shiftLocation: shift.location || 'TBD', + shiftDescription: shift.description || '', + currentVolunteers: shift.currentVolunteers + 1, + maxVolunteers: shift.maxVolunteers, + shiftStatus: shift.status, + }, shiftDatetime); + } + } + catch (err) { + logger_1.logger.error('Failed to schedule shift reminder:', err); + } + // Notification: schedule post-shift thank-you (2h after end) + try { + if (await (0, notification_helper_1.isNotificationEnabled)('notifyVolunteerShiftThankYou')) { + const shiftEndDatetime = new Date(shift.date); + const [endH, endM] = shift.endTime.split(':').map(Number); + shiftEndDatetime.setHours(endH || 0, endM || 0, 0, 0); + const shiftDate = new Date(shift.date); + const dateStr = shiftDate.toLocaleDateString('en-CA', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }); + const signupUrl = `${env_1.env.CORS_ORIGINS.split(',')[0].trim()}/shifts`; + await notification_queue_service_1.notificationQueueService.scheduleShiftThankYou({ + type: 'volunteer-shift-thank-you', + volunteerEmail: user.email, + volunteerName: user.name || user.email, + shiftTitle: shift.title, + shiftDate: dateStr, + shiftTime: `${shift.startTime} — ${shift.endTime}`, + shiftLocation: shift.location || 'TBD', + signupUrl, + }, shiftEndDatetime); + } + } + catch (err) { + logger_1.logger.error('Failed to schedule shift thank-you:', err); + } + // Listmonk event sync + listmonk_event_sync_service_1.listmonkEventSyncService.onShiftSignup({ + email: user.email, + name: user.name || user.email, + shiftTitle: shift.title, + shiftDate: new Date(shift.date).toISOString().split('T')[0], + }).catch(() => { }); + // Social group sync (fire-and-forget) + group_service_1.groupService.syncShiftTeam(shiftId).catch(() => { }); + // Achievement check (fire-and-forget) + achievements_service_1.achievementsService.checkAndUnlock(userId, ['shifts']).catch(() => { }); return signup; }, async cancelVolunteerSignup(shiftId, userId) { - const user = await database_1.prisma.user.findUnique({ where: { id: userId }, select: { email: true } }); + const user = await database_1.prisma.user.findUnique({ where: { id: userId }, select: { email: true, name: true } }); if (!user) throw new error_handler_1.AppError(404, 'User not found', 'USER_NOT_FOUND'); const signup = await database_1.prisma.shiftSignup.findUnique({ @@ -548,6 +918,7 @@ exports.shiftsService = { throw new error_handler_1.AppError(404, 'Signup not found', 'SIGNUP_NOT_FOUND'); if (signup.status === client_1.SignupStatus.CANCELLED) throw new error_handler_1.AppError(400, 'Already cancelled', 'ALREADY_CANCELLED'); + const shift = await database_1.prisma.shift.findUnique({ where: { id: shiftId } }); await database_1.prisma.$transaction([ database_1.prisma.shiftSignup.update({ where: { id: signup.id }, @@ -561,6 +932,75 @@ exports.shiftsService = { }, }), ]); + // Notification: cancellation acknowledgement + cancel reminder + try { + if (shift && await (0, notification_helper_1.isNotificationEnabled)('notifyVolunteerCancellation')) { + const shiftDate = new Date(shift.date); + const dateStr = shiftDate.toLocaleDateString('en-CA', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }); + const signupUrl = `${env_1.env.CORS_ORIGINS.split(',')[0].trim()}/shifts`; + await notification_queue_service_1.notificationQueueService.enqueue({ + type: 'volunteer-cancellation', + volunteerEmail: user.email, + volunteerName: user.name || user.email, + shiftTitle: shift.title, + shiftDate: dateStr, + shiftTime: `${shift.startTime} — ${shift.endTime}`, + signupUrl, + }); + } + // Cancel the pending shift reminder + if (shift) { + const shiftDatetime = new Date(shift.date); + const [startH, startM] = shift.startTime.split(':').map(Number); + shiftDatetime.setHours(startH || 0, startM || 0, 0, 0); + await notification_queue_service_1.notificationQueueService.cancelShiftReminder(user.email, shiftDatetime); + } + // Cancel the pending shift thank-you + if (shift) { + const shiftEndDatetime = new Date(shift.date); + const [endH, endM] = shift.endTime.split(':').map(Number); + shiftEndDatetime.setHours(endH || 0, endM || 0, 0, 0); + await notification_queue_service_1.notificationQueueService.cancelShiftThankYou(user.email, shiftEndDatetime); + } + } + catch (err) { + logger_1.logger.error('Failed to enqueue cancellation notification:', err); + } + // Notify Rocket.Chat of cancellation + if (shift) { + const shiftDateStr = new Date(shift.date).toLocaleDateString('en-CA', { month: 'short', day: 'numeric' }); + rocketchat_webhook_service_1.rocketchatWebhookService.onShiftCancellation({ + userName: user.name || user.email, + shiftTitle: shift.title, + shiftDate: shiftDateStr, + }).catch(() => { }); + } + // Notification: admin shift cancellation alert + try { + if (shift && await (0, notification_helper_1.isNotificationEnabled)('notifyAdminShiftCancellation')) { + const adminEmails = await (0, notification_helper_1.getAdminEmailsByRole)([client_1.UserRole.SUPER_ADMIN, client_1.UserRole.MAP_ADMIN]); + if (adminEmails.length > 0) { + const adminUrl = `${env_1.env.ADMIN_URL || 'http://localhost:3000'}/app/map/shifts`; + const shiftDate = new Date(shift.date); + const dateStr = shiftDate.toLocaleDateString('en-CA', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }); + await notification_queue_service_1.notificationQueueService.enqueue({ + type: 'admin-shift-cancellation', + adminEmails, + shiftTitle: shift.title, + shiftDate: dateStr, + volunteerName: user.name || user.email, + volunteerEmail: user.email, + cancellationSource: 'Volunteer Portal', + adminUrl, + }); + } + } + } + catch (err) { + logger_1.logger.error('Failed to enqueue admin shift cancellation notification:', err); + } + // Social group sync (fire-and-forget) + group_service_1.groupService.syncShiftTeam(shiftId).catch(() => { }); }, async getMySignups(userId) { const user = await database_1.prisma.user.findUnique({ where: { id: userId }, select: { email: true } }); @@ -588,6 +1028,7 @@ exports.shiftsService = { maxVolunteers: true, currentVolunteers: true, status: true, + meeting: { select: { id: true, slug: true, isActive: true } }, }, }, }, @@ -613,6 +1054,7 @@ exports.shiftsService = { maxVolunteers: true, currentVolunteers: true, status: true, + meeting: { select: { id: true, slug: true, isActive: true } }, }, orderBy: [{ date: 'asc' }, { startTime: 'asc' }], }); @@ -637,37 +1079,22 @@ exports.shiftsService = { month: 'long', day: 'numeric', }); - const htmlTemplate = email_service_1.emailService.loadTemplate('shift-details', 'html'); - const txtTemplate = email_service_1.emailService.loadTemplate('shift-details', 'txt'); - let orgName = 'Changemaker Lite'; - try { - orgName = (await settings_service_1.siteSettingsService.get()).organizationName || orgName; - } - catch { /* use default */ } let sent = 0; let failed = 0; for (const signup of shift.signups) { try { - const vars = { - USER_NAME: signup.userName || signup.userEmail, - SHIFT_TITLE: shift.title, - SHIFT_DATE: dateStr, - SHIFT_START_TIME: shift.startTime, - SHIFT_END_TIME: shift.endTime, - SHIFT_LOCATION: shift.location || 'TBD', - SHIFT_DESCRIPTION: shift.description || '', - CURRENT_VOLUNTEERS: shift.currentVolunteers.toString(), - MAX_VOLUNTEERS: shift.maxVolunteers.toString(), - SHIFT_STATUS: shift.status, - ORGANIZATION_NAME: orgName, - }; - const html = email_service_1.emailService.processTemplate(htmlTemplate, vars); - const text = email_service_1.emailService.processTemplate(txtTemplate, vars); - const result = await email_service_1.emailService.sendEmail({ - to: signup.userEmail, - subject: `Shift Details — ${shift.title}`, - html, - text, + const result = await email_service_1.emailService.sendShiftDetailsEmail({ + recipientEmail: signup.userEmail, + recipientName: signup.userName || signup.userEmail, + shiftTitle: shift.title, + shiftDate: dateStr, + shiftStartTime: shift.startTime, + shiftEndTime: shift.endTime, + shiftLocation: shift.location || 'TBD', + shiftDescription: shift.description || '', + currentVolunteers: shift.currentVolunteers, + maxVolunteers: shift.maxVolunteers, + shiftStatus: shift.status, }); if (result.success) { sent++; diff --git a/api/dist/modules/map/shifts/shifts.service.js.map b/api/dist/modules/map/shifts/shifts.service.js.map index f5bdc8c6..695605e6 100644 --- a/api/dist/modules/map/shifts/shifts.service.js.map +++ b/api/dist/modules/map/shifts/shifts.service.js.map @@ -1 +1 @@ -{"version":3,"file":"shifts.service.js","sourceRoot":"","sources":["../../../../src/modules/map/shifts/shifts.service.ts"],"names":[],"mappings":";;;;;;AAAA,wDAA8B;AAC9B,2CAAiF;AACjF,uDAAkD;AAClD,qEAA6D;AAC7D,mEAA+D;AAC/D,sEAAsE;AACtE,6CAA0C;AAC1C,kDAA+C;AAC/C,oDAA2D;AAS3D,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACvF,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAEvF,SAAS,wBAAwB;IAC/B,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACtE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;IAChD,OAAO,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC;AAC/B,CAAC;AAEY,QAAA,aAAa,GAAG;IAC3B,KAAK,CAAC,OAAO,CAAC,OAAwB;QACpC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;QAC7E,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;QAEhC,MAAM,KAAK,GAA2B,EAAE,CAAC;QAEzC,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,CAAC,EAAE,GAAG;gBACT,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE;gBACpD,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE;aACxD,CAAC;QACJ,CAAC;QAED,IAAI,MAAM;YAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAElC,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;QACnC,CAAC;QAED,MAAM,OAAO,GACX,MAAM,KAAK,OAAO;YAChB,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE;YACtB,CAAC,CAAC,MAAM,KAAK,WAAW;gBACtB,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE;gBAC1B,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAE5B,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACxC,iBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;gBACpB,KAAK;gBACL,IAAI;gBACJ,IAAI,EAAE,KAAK;gBACX,OAAO;gBACP,OAAO,EAAE;oBACP,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;oBACzC,MAAM,EAAE;wBACN,MAAM,EAAE;4BACN,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,qBAAY,CAAC,SAAS,EAAE,EAAE;yBACvD;qBACF;iBACF;aACF,CAAC;YACF,iBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;SAC9B,CAAC,CAAC;QAEH,OAAO;YACL,MAAM;YACN,UAAU,EAAE;gBACV,IAAI;gBACJ,KAAK;gBACL,KAAK;gBACL,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;aACrC;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,KAAK,GAAG,MAAM,iBAAM,CAAC,KAAK,CAAC,UAAU,CAAC;YAC1C,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,OAAO,EAAE;gBACP,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;gBACzC,OAAO,EAAE;oBACP,KAAK,EAAE,EAAE,MAAM,EAAE,qBAAY,CAAC,SAAS,EAAE;oBACzC,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;oBACjF,OAAO,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE;iBAChC;gBACD,MAAM,EAAE;oBACN,MAAM,EAAE;wBACN,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,qBAAY,CAAC,SAAS,EAAE,EAAE;qBACvD;iBACF;aACF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAsB,EAAE,MAAc;QACjD,MAAM,KAAK,GAAG,MAAM,iBAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YACtC,IAAI,EAAE;gBACJ,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBACzB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,SAAS,EAAE,MAAM;aAClB;SACF,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,IAAsB;QAC7C,MAAM,QAAQ,GAAG,MAAM,iBAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,UAAU,GAAqC,EAAE,GAAG,IAAI,EAAE,CAAC;QAEjE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,UAAU,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;QAED,2CAA2C;QAC3C,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACrC,IAAI,QAAQ,CAAC,iBAAiB,IAAI,IAAI,CAAC,aAAa,IAAI,QAAQ,CAAC,MAAM,KAAK,oBAAW,CAAC,IAAI,EAAE,CAAC;gBAC7F,UAAU,CAAC,MAAM,GAAG,oBAAW,CAAC,IAAI,CAAC;YACvC,CAAC;iBAAM,IAAI,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,IAAI,QAAQ,CAAC,MAAM,KAAK,oBAAW,CAAC,IAAI,EAAE,CAAC;gBACnG,UAAU,CAAC,MAAM,GAAG,oBAAW,CAAC,IAAI,CAAC;YACvC,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,iBAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YACtC,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,IAAI,EAAE,UAAU;SACjB,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,MAAM,QAAQ,GAAG,MAAM,iBAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,iBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC/E,iBAAM,CAAC,KAAK,CAAC,KAAK,EAAE;YACpB,iBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,oBAAW,CAAC,IAAI,EAAE,EAAE,CAAC;YAC3D,iBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,oBAAW,CAAC,IAAI,EAAE,EAAE,CAAC;YAC3D,iBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,oBAAW,CAAC,SAAS,EAAE,EAAE,CAAC;YAChE,iBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,oBAAW,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC;YACpG,iBAAM,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,qBAAY,CAAC,SAAS,EAAE,EAAE,CAAC;SACxE,CAAC,CAAC;QAEH,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAe;QAC9B,MAAM,KAAK,GAAG,MAAM,iBAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,iBAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;YACjC,KAAK,EAAE,EAAE,OAAO,EAAE;YAClB,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;YACjF,OAAO,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE;SAChC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAe,EAAE,IAAoB;QACnD,MAAM,KAAK,GAAG,MAAM,iBAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACnD,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;QACzD,CAAC;QAED,0BAA0B;QAC1B,MAAM,QAAQ,GAAG,MAAM,iBAAM,CAAC,WAAW,CAAC,UAAU,CAAC;YACnD,KAAK,EAAE,EAAE,iBAAiB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE;SACrE,CAAC,CAAC;QACH,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,QAAQ,CAAC,MAAM,KAAK,qBAAY,CAAC,SAAS,EAAE,CAAC;gBAC/C,+BAA+B;gBAC/B,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,iBAAM,CAAC,YAAY,CAAC;oBACzC,iBAAM,CAAC,WAAW,CAAC,MAAM,CAAC;wBACxB,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE;wBAC1B,IAAI,EAAE,EAAE,MAAM,EAAE,qBAAY,CAAC,SAAS,EAAE,YAAY,EAAE,qBAAY,CAAC,KAAK,EAAE;qBAC3E,CAAC;oBACF,iBAAM,CAAC,KAAK,CAAC,MAAM,CAAC;wBAClB,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE;wBACtB,IAAI,EAAE;4BACJ,iBAAiB,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE;4BACnC,MAAM,EAAE,KAAK,CAAC,iBAAiB,GAAG,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAW,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;yBAC1F;qBACF,CAAC;iBACH,CAAC,CAAC;gBACH,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,6BAA6B,EAAE,kBAAkB,CAAC,CAAC;QAC7E,CAAC;QAED,eAAe;QACf,MAAM,IAAI,GAAG,MAAM,iBAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAEhF,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,iBAAM,CAAC,YAAY,CAAC;YACzC,iBAAM,CAAC,WAAW,CAAC,MAAM,CAAC;gBACxB,IAAI,EAAE;oBACJ,OAAO;oBACP,UAAU,EAAE,KAAK,CAAC,KAAK;oBACvB,MAAM,EAAE,IAAI,EAAE,EAAE;oBAChB,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE,IAAI;oBACrC,YAAY,EAAE,qBAAY,CAAC,KAAK;iBACjC;aACF,CAAC;YACF,iBAAM,CAAC,KAAK,CAAC,MAAM,CAAC;gBAClB,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE;gBACtB,IAAI,EAAE;oBACJ,iBAAiB,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE;oBACnC,MAAM,EAAE,KAAK,CAAC,iBAAiB,GAAG,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAW,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;iBAC1F;aACF,CAAC;SACH,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAgB;QACjC,MAAM,MAAM,GAAG,MAAM,iBAAM,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAChF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,qBAAY,CAAC,SAAS,EAAE,CAAC;YAC7C,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,0BAA0B,EAAE,mBAAmB,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,iBAAM,CAAC,YAAY,CAAC;YACxB,iBAAM,CAAC,WAAW,CAAC,MAAM,CAAC;gBACxB,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE;gBACvB,IAAI,EAAE,EAAE,MAAM,EAAE,qBAAY,CAAC,SAAS,EAAE;aACzC,CAAC;YACF,iBAAM,CAAC,KAAK,CAAC,MAAM,CAAC;gBAClB,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE;gBAC7B,IAAI,EAAE;oBACJ,iBAAiB,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE;oBACnC,MAAM,EAAE,oBAAW,CAAC,IAAI;iBACzB;aACF,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAe,EAAE,IAAuB;QACzD,MAAM,KAAK,GAAG,MAAM,iBAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,0CAA0C,EAAE,YAAY,CAAC,CAAC;QACpF,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,oBAAW,CAAC,IAAI,EAAE,CAAC;YACtC,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,qCAAqC,EAAE,UAAU,CAAC,CAAC;QAC7E,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,+BAA+B,EAAE,YAAY,CAAC,CAAC;QACzE,CAAC;QAED,IAAI,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACnD,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;QACzD,CAAC;QAED,0BAA0B;QAC1B,MAAM,cAAc,GAAG,MAAM,iBAAM,CAAC,WAAW,CAAC,UAAU,CAAC;YACzD,KAAK,EAAE,EAAE,iBAAiB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE;SACjE,CAAC,CAAC;QAEH,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,KAAK,qBAAY,CAAC,SAAS,EAAE,CAAC;YACvE,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,0CAA0C,EAAE,kBAAkB,CAAC,CAAC;QAC1F,CAAC;QAED,wBAAwB;QACxB,IAAI,IAAI,GAAG,MAAM,iBAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC1E,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,YAAgC,CAAC;QAErC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,mBAAmB;YACnB,YAAY,GAAG,wBAAwB,EAAE,CAAC;YAC1C,MAAM,cAAc,GAAG,MAAM,kBAAM,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YAE3D,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAE3C,IAAI,GAAG,MAAM,iBAAM,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC9B,IAAI,EAAE;oBACJ,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,QAAQ,EAAE,cAAc;oBACxB,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,IAAI,EAAE,MAAM;oBACZ,UAAU,EAAE,qBAAqB;oBACjC,SAAS,EAAE,SAAS;iBACrB;aACF,CAAC,CAAC;YACH,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;QAED,+CAA+C;QAC/C,IAAI,MAAM,CAAC;QACX,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,KAAK,qBAAY,CAAC,SAAS,EAAE,CAAC;YACvE,CAAC,MAAM,CAAC,GAAG,MAAM,iBAAM,CAAC,YAAY,CAAC;gBACnC,iBAAM,CAAC,WAAW,CAAC,MAAM,CAAC;oBACxB,KAAK,EAAE,EAAE,EAAE,EAAE,cAAc,CAAC,EAAE,EAAE;oBAChC,IAAI,EAAE;wBACJ,MAAM,EAAE,qBAAY,CAAC,SAAS;wBAC9B,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,qBAAY,CAAC,aAAa,CAAC,CAAC,CAAC,qBAAY,CAAC,MAAM;wBACrE,QAAQ,EAAE,IAAI,CAAC,IAAI;wBACnB,SAAS,EAAE,IAAI,CAAC,KAAK;wBACrB,MAAM,EAAE,IAAI,CAAC,EAAE;qBAChB;iBACF,CAAC;gBACF,iBAAM,CAAC,KAAK,CAAC,MAAM,CAAC;oBAClB,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE;oBACtB,IAAI,EAAE;wBACJ,iBAAiB,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE;wBACnC,MAAM,EAAE,KAAK,CAAC,iBAAiB,GAAG,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAW,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;qBAC1F;iBACF,CAAC;aACH,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,CAAC,MAAM,CAAC,GAAG,MAAM,iBAAM,CAAC,YAAY,CAAC;gBACnC,iBAAM,CAAC,WAAW,CAAC,MAAM,CAAC;oBACxB,IAAI,EAAE;wBACJ,OAAO;wBACP,UAAU,EAAE,KAAK,CAAC,KAAK;wBACvB,MAAM,EAAE,IAAI,CAAC,EAAE;wBACf,SAAS,EAAE,IAAI,CAAC,KAAK;wBACrB,QAAQ,EAAE,IAAI,CAAC,IAAI;wBACnB,SAAS,EAAE,IAAI,CAAC,KAAK;wBACrB,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,qBAAY,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAY,CAAC,aAAa;qBAC3E;iBACF,CAAC;gBACF,iBAAM,CAAC,KAAK,CAAC,MAAM,CAAC;oBAClB,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE;oBACtB,IAAI,EAAE;wBACJ,iBAAiB,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE;wBACnC,MAAM,EAAE,KAAK,CAAC,iBAAiB,GAAG,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAW,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;qBAC1F;iBACF,CAAC;aACH,CAAC,CAAC;QACL,CAAC;QAED,0BAA0B;QAC1B,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,OAAO,GAAG,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE;gBACpD,OAAO,EAAE,MAAM;gBACf,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,MAAM;gBACb,GAAG,EAAE,SAAS;aACf,CAAC,CAAC;YAEH,MAAM,YAAY,GAAG,4BAAY,CAAC,YAAY,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC;YACpF,MAAM,WAAW,GAAG,4BAAY,CAAC,YAAY,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;YAClF,IAAI,OAAO,GAAG,kBAAkB,CAAC;YACjC,IAAI,CAAC;gBAAC,OAAO,GAAG,CAAC,MAAM,sCAAmB,CAAC,GAAG,EAAE,CAAC,CAAC,gBAAgB,IAAI,OAAO,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;YAE5G,MAAM,IAAI,GAA2B;gBACnC,SAAS,EAAE,IAAI,CAAC,IAAI;gBACpB,UAAU,EAAE,IAAI,CAAC,KAAK;gBACtB,WAAW,EAAE,KAAK,CAAC,KAAK;gBACxB,UAAU,EAAE,OAAO;gBACnB,UAAU,EAAE,GAAG,KAAK,CAAC,SAAS,MAAM,KAAK,CAAC,OAAO,EAAE;gBACnD,cAAc,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK;gBACvC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;gBACpC,aAAa,EAAE,YAAY,IAAI,EAAE;gBACjC,SAAS,EAAE,GAAG,SAAG,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ;gBAC3D,iBAAiB,EAAE,OAAO;aAC3B,CAAC;YAEF,MAAM,IAAI,GAAG,4BAAY,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAC9D,MAAM,IAAI,GAAG,4BAAY,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAE7D,MAAM,4BAAY,CAAC,SAAS,CAAC;gBAC3B,EAAE,EAAE,IAAI,CAAC,KAAK;gBACd,OAAO,EAAE,sBAAsB,KAAK,CAAC,KAAK,EAAE;gBAC5C,IAAI;gBACJ,IAAI;aACL,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,eAAM,CAAC,KAAK,CAAC,iDAAiD,EAAE,GAAG,CAAC,CAAC;QACvE,CAAC;QAED,IAAA,2BAAiB,GAAE,CAAC;QAEpB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,OAAe,EAAE,SAAiB;QACzD,MAAM,MAAM,GAAG,MAAM,iBAAM,CAAC,WAAW,CAAC,UAAU,CAAC;YACjD,KAAK,EAAE,EAAE,iBAAiB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;SACrD,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,qBAAY,CAAC,SAAS,EAAE,CAAC;YAC7C,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,0BAA0B,EAAE,mBAAmB,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,iBAAM,CAAC,YAAY,CAAC;YACxB,iBAAM,CAAC,WAAW,CAAC,MAAM,CAAC;gBACxB,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;gBACxB,IAAI,EAAE,EAAE,MAAM,EAAE,qBAAY,CAAC,SAAS,EAAE;aACzC,CAAC;YACF,iBAAM,CAAC,KAAK,CAAC,MAAM,CAAC;gBAClB,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE;gBACtB,IAAI,EAAE;oBACJ,iBAAiB,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE;oBACnC,MAAM,EAAE,oBAAW,CAAC,IAAI;iBACzB;aACF,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,MAAc;QAC1C,MAAM,IAAI,GAAG,MAAM,iBAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9F,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;QAEvE,MAAM,MAAM,GAAG,MAAM,iBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;YACzC,KAAK,EAAE;gBACL,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,EAAE,GAAG,EAAE,oBAAW,CAAC,SAAS,EAAE;gBACtC,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;aAChE;YACD,MAAM,EAAE;gBACN,EAAE,EAAE,IAAI;gBACR,KAAK,EAAE,IAAI;gBACX,WAAW,EAAE,IAAI;gBACjB,IAAI,EAAE,IAAI;gBACV,SAAS,EAAE,IAAI;gBACf,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,IAAI;gBACnB,iBAAiB,EAAE,IAAI;gBACvB,MAAM,EAAE,IAAI;aACb;YACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;SACjD,CAAC,CAAC;QAEH,qCAAqC;QACrC,MAAM,OAAO,GAAG,MAAM,iBAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;YAChD,KAAK,EAAE;gBACL,SAAS,EAAE,IAAI,CAAC,KAAK;gBACrB,OAAO,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;gBACxC,MAAM,EAAE,qBAAY,CAAC,SAAS;aAC/B;YACD,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;SAC1B,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAE3D,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxB,GAAG,CAAC;YACJ,UAAU,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;SAClC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAAe,EAAE,MAAc;QACnD,MAAM,IAAI,GAAG,MAAM,iBAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YACxC,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;YACrB,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;SAC3D,CAAC,CAAC;QACH,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;QAEvE,MAAM,KAAK,GAAG,MAAM,iBAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;QAC1E,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,mCAAmC,EAAE,YAAY,CAAC,CAAC;QAChG,IAAI,KAAK,CAAC,MAAM,KAAK,oBAAW,CAAC,SAAS;YAAE,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,yBAAyB,EAAE,iBAAiB,CAAC,CAAC;QAClH,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,+BAA+B,EAAE,YAAY,CAAC,CAAC;QAC1I,IAAI,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,aAAa;YAAE,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;QAE3G,MAAM,QAAQ,GAAG,MAAM,iBAAM,CAAC,WAAW,CAAC,UAAU,CAAC;YACnD,KAAK,EAAE,EAAE,iBAAiB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE;SACjE,CAAC,CAAC;QAEH,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,qBAAY,CAAC,SAAS,EAAE,CAAC;YAC3D,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,kCAAkC,EAAE,kBAAkB,CAAC,CAAC;QAClF,CAAC;QAED,IAAI,MAAM,CAAC;QACX,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,qBAAY,CAAC,SAAS,EAAE,CAAC;YAC3D,CAAC,MAAM,CAAC,GAAG,MAAM,iBAAM,CAAC,YAAY,CAAC;gBACnC,iBAAM,CAAC,WAAW,CAAC,MAAM,CAAC;oBACxB,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE;oBAC1B,IAAI,EAAE,EAAE,MAAM,EAAE,qBAAY,CAAC,SAAS,EAAE,YAAY,EAAE,qBAAY,CAAC,aAAa,EAAE;iBACnF,CAAC;gBACF,iBAAM,CAAC,KAAK,CAAC,MAAM,CAAC;oBAClB,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE;oBACtB,IAAI,EAAE;wBACJ,iBAAiB,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE;wBACnC,MAAM,EAAE,KAAK,CAAC,iBAAiB,GAAG,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAW,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;qBAC1F;iBACF,CAAC;aACH,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,CAAC,MAAM,CAAC,GAAG,MAAM,iBAAM,CAAC,YAAY,CAAC;gBACnC,iBAAM,CAAC,WAAW,CAAC,MAAM,CAAC;oBACxB,IAAI,EAAE;wBACJ,OAAO;wBACP,UAAU,EAAE,KAAK,CAAC,KAAK;wBACvB,MAAM,EAAE,IAAI,CAAC,EAAE;wBACf,SAAS,EAAE,IAAI,CAAC,KAAK;wBACrB,QAAQ,EAAE,IAAI,CAAC,IAAI;wBACnB,SAAS,EAAE,IAAI,CAAC,KAAK;wBACrB,YAAY,EAAE,qBAAY,CAAC,aAAa;qBACzC;iBACF,CAAC;gBACF,iBAAM,CAAC,KAAK,CAAC,MAAM,CAAC;oBAClB,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE;oBACtB,IAAI,EAAE;wBACJ,iBAAiB,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE;wBACnC,MAAM,EAAE,KAAK,CAAC,iBAAiB,GAAG,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAW,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;qBAC1F;iBACF,CAAC;aACH,CAAC,CAAC;QACL,CAAC;QAED,0BAA0B;QAC1B,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,OAAO,GAAG,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE;gBACpD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS;aAChE,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,4BAAY,CAAC,YAAY,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC;YACpF,MAAM,WAAW,GAAG,4BAAY,CAAC,YAAY,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;YAClF,IAAI,OAAO,GAAG,kBAAkB,CAAC;YACjC,IAAI,CAAC;gBAAC,OAAO,GAAG,CAAC,MAAM,sCAAmB,CAAC,GAAG,EAAE,CAAC,CAAC,gBAAgB,IAAI,OAAO,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;YAExG,MAAM,IAAI,GAA2B;gBACnC,SAAS,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK;gBAClC,UAAU,EAAE,IAAI,CAAC,KAAK;gBACtB,WAAW,EAAE,KAAK,CAAC,KAAK;gBACxB,UAAU,EAAE,OAAO;gBACnB,UAAU,EAAE,GAAG,KAAK,CAAC,SAAS,MAAM,KAAK,CAAC,OAAO,EAAE;gBACnD,cAAc,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK;gBACvC,WAAW,EAAE,EAAE;gBACf,aAAa,EAAE,EAAE;gBACjB,SAAS,EAAE,GAAG,SAAG,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ;gBAC3D,iBAAiB,EAAE,OAAO;aAC3B,CAAC;YAEF,MAAM,IAAI,GAAG,4BAAY,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAC9D,MAAM,IAAI,GAAG,4BAAY,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAE7D,MAAM,4BAAY,CAAC,SAAS,CAAC;gBAC3B,EAAE,EAAE,IAAI,CAAC,KAAK;gBACd,OAAO,EAAE,sBAAsB,KAAK,CAAC,KAAK,EAAE;gBAC5C,IAAI;gBACJ,IAAI;aACL,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,eAAM,CAAC,KAAK,CAAC,2DAA2D,EAAE,GAAG,CAAC,CAAC;QACjF,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,OAAe,EAAE,MAAc;QACzD,MAAM,IAAI,GAAG,MAAM,iBAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9F,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;QAEvE,MAAM,MAAM,GAAG,MAAM,iBAAM,CAAC,WAAW,CAAC,UAAU,CAAC;YACjD,KAAK,EAAE,EAAE,iBAAiB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE;SACjE,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;QAC7E,IAAI,MAAM,CAAC,MAAM,KAAK,qBAAY,CAAC,SAAS;YAAE,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;QAEhH,MAAM,iBAAM,CAAC,YAAY,CAAC;YACxB,iBAAM,CAAC,WAAW,CAAC,MAAM,CAAC;gBACxB,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;gBACxB,IAAI,EAAE,EAAE,MAAM,EAAE,qBAAY,CAAC,SAAS,EAAE;aACzC,CAAC;YACF,iBAAM,CAAC,KAAK,CAAC,MAAM,CAAC;gBAClB,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE;gBACtB,IAAI,EAAE;oBACJ,iBAAiB,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE;oBACnC,MAAM,EAAE,oBAAW,CAAC,IAAI;iBACzB;aACF,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc;QAC/B,MAAM,IAAI,GAAG,MAAM,iBAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9F,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;QAEvE,MAAM,OAAO,GAAG,MAAM,iBAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;YAChD,KAAK,EAAE;gBACL,SAAS,EAAE,IAAI,CAAC,KAAK;gBACrB,MAAM,EAAE,qBAAY,CAAC,SAAS;gBAC9B,KAAK,EAAE;oBACL,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;oBAC/D,MAAM,EAAE,EAAE,GAAG,EAAE,oBAAW,CAAC,SAAS,EAAE;iBACvC;aACF;YACD,OAAO,EAAE;gBACP,KAAK,EAAE;oBACL,MAAM,EAAE;wBACN,EAAE,EAAE,IAAI;wBACR,KAAK,EAAE,IAAI;wBACX,WAAW,EAAE,IAAI;wBACjB,IAAI,EAAE,IAAI;wBACV,SAAS,EAAE,IAAI;wBACf,OAAO,EAAE,IAAI;wBACb,QAAQ,EAAE,IAAI;wBACd,aAAa,EAAE,IAAI;wBACnB,iBAAiB,EAAE,IAAI;wBACvB,MAAM,EAAE,IAAI;qBACb;iBACF;aACF;YACD,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;SACpC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,MAAM,GAAG,MAAM,iBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;YACzC,KAAK,EAAE;gBACL,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,EAAE,GAAG,EAAE,oBAAW,CAAC,SAAS,EAAE;gBACtC,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;aAChE;YACD,MAAM,EAAE;gBACN,EAAE,EAAE,IAAI;gBACR,KAAK,EAAE,IAAI;gBACX,WAAW,EAAE,IAAI;gBACjB,IAAI,EAAE,IAAI;gBACV,SAAS,EAAE,IAAI;gBACf,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,IAAI;gBACnB,iBAAiB,EAAE,IAAI;gBACvB,MAAM,EAAE,IAAI;aACb;YACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;SACjD,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,OAAe;QACrC,MAAM,KAAK,GAAG,MAAM,iBAAM,CAAC,KAAK,CAAC,UAAU,CAAC;YAC1C,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE;YACtB,OAAO,EAAE;gBACP,OAAO,EAAE;oBACP,KAAK,EAAE,EAAE,MAAM,EAAE,qBAAY,CAAC,SAAS,EAAE;iBAC1C;aACF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,wBAAQ,CAAC,GAAG,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE;YACpD,OAAO,EAAE,MAAM;YACf,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,MAAM;YACb,GAAG,EAAE,SAAS;SACf,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,4BAAY,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QACxE,MAAM,WAAW,GAAG,4BAAY,CAAC,YAAY,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACtE,IAAI,OAAO,GAAG,kBAAkB,CAAC;QACjC,IAAI,CAAC;YAAC,OAAO,GAAG,CAAC,MAAM,sCAAmB,CAAC,GAAG,EAAE,CAAC,CAAC,gBAAgB,IAAI,OAAO,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAE5G,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,MAAM,IAAI,GAA2B;oBACnC,SAAS,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS;oBAC9C,WAAW,EAAE,KAAK,CAAC,KAAK;oBACxB,UAAU,EAAE,OAAO;oBACnB,gBAAgB,EAAE,KAAK,CAAC,SAAS;oBACjC,cAAc,EAAE,KAAK,CAAC,OAAO;oBAC7B,cAAc,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK;oBACvC,iBAAiB,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;oBAC1C,kBAAkB,EAAE,KAAK,CAAC,iBAAiB,CAAC,QAAQ,EAAE;oBACtD,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE;oBAC9C,YAAY,EAAE,KAAK,CAAC,MAAM;oBAC1B,iBAAiB,EAAE,OAAO;iBAC3B,CAAC;gBAEF,MAAM,IAAI,GAAG,4BAAY,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;gBAC9D,MAAM,IAAI,GAAG,4BAAY,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;gBAE7D,MAAM,MAAM,GAAG,MAAM,4BAAY,CAAC,SAAS,CAAC;oBAC1C,EAAE,EAAE,MAAM,CAAC,SAAS;oBACpB,OAAO,EAAE,mBAAmB,KAAK,CAAC,KAAK,EAAE;oBACzC,IAAI;oBACJ,IAAI;iBACL,CAAC,CAAC;gBAEH,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,IAAI,EAAE,CAAC;gBACT,CAAC;qBAAM,CAAC;oBACN,MAAM,EAAE,CAAC;gBACX,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,eAAM,CAAC,KAAK,CAAC,mCAAmC,MAAM,CAAC,SAAS,GAAG,EAAE,GAAG,CAAC,CAAC;gBAC1E,MAAM,EAAE,CAAC;YACX,CAAC;QACH,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,SAAiB,EAAE,OAAe;QACtD,MAAM,MAAM,GAAG,MAAM,iBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;YACzC,KAAK,EAAE;gBACL,IAAI,EAAE;oBACJ,GAAG,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC;oBACxB,GAAG,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC;iBACvB;aACF;YACD,OAAO,EAAE;gBACP,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;gBACzC,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;aAClD;YACD,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;SAC9B,CAAC,CAAC;QAEH,gBAAgB;QAChB,MAAM,OAAO,GAAqD,EAAE,CAAC;QAErE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAEvD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtB,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;YAC9C,CAAC;YAED,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;YACzB,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC5B,CAAC;CACF,CAAC"} \ No newline at end of file +{"version":3,"file":"shifts.service.js","sourceRoot":"","sources":["../../../../src/modules/map/shifts/shifts.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/api/dist/modules/map/tracking/tracking.routes.d.ts.map b/api/dist/modules/map/tracking/tracking.routes.d.ts.map index af4d5333..a8055006 100644 --- a/api/dist/modules/map/tracking/tracking.routes.d.ts.map +++ b/api/dist/modules/map/tracking/tracking.routes.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"tracking.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/tracking/tracking.routes.ts"],"names":[],"mappings":"AAmBA,QAAA,MAAM,eAAe,4CAAW,CAAC;AAoHjC,QAAA,MAAM,WAAW,4CAAW,CAAC;AA8C7B,OAAO,EAAE,eAAe,IAAI,uBAAuB,EAAE,WAAW,IAAI,mBAAmB,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"tracking.routes.d.ts","sourceRoot":"","sources":["../../../../src/modules/map/tracking/tracking.routes.ts"],"names":[],"mappings":"AAiBA,QAAA,MAAM,eAAe,4CAAW,CAAC;AAoHjC,QAAA,MAAM,WAAW,4CAAW,CAAC;AA8C7B,OAAO,EAAE,eAAe,IAAI,uBAAuB,EAAE,WAAW,IAAI,mBAAmB,EAAE,CAAC"} \ No newline at end of file diff --git a/api/dist/modules/map/tracking/tracking.routes.js b/api/dist/modules/map/tracking/tracking.routes.js index 58c3a8ee..02682dab 100644 --- a/api/dist/modules/map/tracking/tracking.routes.js +++ b/api/dist/modules/map/tracking/tracking.routes.js @@ -2,14 +2,13 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.trackingAdminRouter = exports.trackingVolunteerRouter = void 0; const express_1 = require("express"); -const client_1 = require("@prisma/client"); const tracking_service_1 = require("./tracking.service"); const tracking_schemas_1 = require("./tracking.schemas"); const validate_1 = require("../../../middleware/validate"); const auth_middleware_1 = require("../../../middleware/auth.middleware"); const rbac_middleware_1 = require("../../../middleware/rbac.middleware"); const rate_limit_1 = require("../../../middleware/rate-limit"); -const MAP_ADMIN_ROLES = [client_1.UserRole.SUPER_ADMIN, client_1.UserRole.MAP_ADMIN]; +const roles_1 = require("../../../utils/roles"); // ─── Volunteer Router ──────────────────────────────────────────────── const volunteerRouter = (0, express_1.Router)(); exports.trackingVolunteerRouter = volunteerRouter; @@ -104,7 +103,7 @@ volunteerRouter.get('/my/sessions/:id/route', async (req, res, next) => { const adminRouter = (0, express_1.Router)(); exports.trackingAdminRouter = adminRouter; adminRouter.use(auth_middleware_1.authenticate); -adminRouter.use((0, rbac_middleware_1.requireRole)(...MAP_ADMIN_ROLES)); +adminRouter.use((0, rbac_middleware_1.requireRole)(...roles_1.MAP_ROLES)); // GET /api/map/tracking/live — active volunteers with positions + recent trails adminRouter.get('/live', (0, validate_1.validate)(tracking_schemas_1.liveVolunteersQuerySchema, 'query'), async (req, res, next) => { try { diff --git a/api/dist/modules/map/tracking/tracking.routes.js.map b/api/dist/modules/map/tracking/tracking.routes.js.map index 45f3b869..dc25fc99 100644 --- a/api/dist/modules/map/tracking/tracking.routes.js.map +++ b/api/dist/modules/map/tracking/tracking.routes.js.map @@ -1 +1 @@ -{"version":3,"file":"tracking.routes.js","sourceRoot":"","sources":["../../../../src/modules/map/tracking/tracking.routes.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tracking.routes.js","sourceRoot":"","sources":["../../../../src/modules/map/tracking/tracking.routes.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/api/dist/modules/media/db/schema.d.ts b/api/dist/modules/media/db/schema.d.ts index b0b2f7e1..44a451b8 100644 --- a/api/dist/modules/media/db/schema.d.ts +++ b/api/dist/modules/media/db/schema.d.ts @@ -334,7 +334,7 @@ export declare const videos: import("drizzle-orm/pg-core").PgTableWithColumns<{ tableName: "videos"; dataType: "string"; columnType: "PgText"; - data: "videos" | "studios" | "gifs" | "private" | "inbox" | "curated" | "playback" | "compilations" | "highlights"; + data: "studios" | "gifs" | "private" | "inbox" | "curated" | "playback" | "compilations" | "videos" | "highlights"; driverParam: string; notNull: false; hasDefault: false; @@ -346,7 +346,7 @@ export declare const videos: import("drizzle-orm/pg-core").PgTableWithColumns<{ identity: undefined; generated: undefined; }, {}, { - $type: "videos" | "studios" | "gifs" | "private" | "inbox" | "curated" | "playback" | "compilations" | "highlights"; + $type: "studios" | "gifs" | "private" | "inbox" | "curated" | "playback" | "compilations" | "videos" | "highlights"; }>; publicViewCount: import("drizzle-orm/pg-core").PgColumn<{ name: "public_view_count"; @@ -12527,7 +12527,7 @@ export declare const performerFaces: import("drizzle-orm/pg-core").PgTableWithCo tableName: "performer_faces"; dataType: "string"; columnType: "PgText"; - data: "pending" | "assigned" | "ignored" | "skipped"; + data: "pending" | "skipped" | "ignored" | "assigned"; driverParam: string; notNull: false; hasDefault: true; @@ -12539,7 +12539,7 @@ export declare const performerFaces: import("drizzle-orm/pg-core").PgTableWithCo identity: undefined; generated: undefined; }, {}, { - $type: "pending" | "assigned" | "ignored" | "skipped"; + $type: "pending" | "skipped" | "ignored" | "assigned"; }>; matchConfidence: import("drizzle-orm/pg-core").PgColumn<{ name: "match_confidence"; @@ -12822,7 +12822,7 @@ export declare const performerDiscrepancies: import("drizzle-orm/pg-core").PgTab tableName: "performer_discrepancies"; dataType: "string"; columnType: "PgText"; - data: "pending" | "rejected" | "merged" | "ignored" | "confirmed"; + data: "pending" | "rejected" | "ignored" | "merged" | "confirmed"; driverParam: string; notNull: true; hasDefault: true; @@ -12834,7 +12834,7 @@ export declare const performerDiscrepancies: import("drizzle-orm/pg-core").PgTab identity: undefined; generated: undefined; }, {}, { - $type: "pending" | "rejected" | "merged" | "ignored" | "confirmed"; + $type: "pending" | "rejected" | "ignored" | "merged" | "confirmed"; }>; resolvedBy: import("drizzle-orm/pg-core").PgColumn<{ name: "resolved_by"; @@ -12993,7 +12993,7 @@ export declare const pipelines: import("drizzle-orm/pg-core").PgTableWithColumns tableName: "pipelines"; dataType: "string"; columnType: "PgText"; - data: "pending" | "completed" | "failed" | "paused" | "cancelled" | "queued" | "running"; + data: "cancelled" | "pending" | "completed" | "failed" | "paused" | "running" | "queued"; driverParam: string; notNull: true; hasDefault: true; @@ -13005,7 +13005,7 @@ export declare const pipelines: import("drizzle-orm/pg-core").PgTableWithColumns identity: undefined; generated: undefined; }, {}, { - $type: "pending" | "completed" | "failed" | "paused" | "cancelled" | "queued" | "running"; + $type: "cancelled" | "pending" | "completed" | "failed" | "paused" | "running" | "queued"; }>; priority: import("drizzle-orm/pg-core").PgColumn<{ name: "priority"; @@ -15300,7 +15300,7 @@ export declare const notifications: import("drizzle-orm/pg-core").PgTableWithCol tableName: "notifications"; dataType: "string"; columnType: "PgText"; - data: "poke" | "friend_request" | "friend_request_accepted" | "video_recommendation" | "watch_party_invite" | "achievement_unlocked" | "comment_reply" | "digest_completed" | "digest_failed" | "upload_approved" | "upload_rejected" | "system"; + data: "friend_request" | "poke" | "upload_approved" | "upload_rejected" | "system" | "friend_request_accepted" | "video_recommendation" | "watch_party_invite" | "achievement_unlocked" | "comment_reply" | "digest_completed" | "digest_failed"; driverParam: string; notNull: true; hasDefault: false; @@ -15312,7 +15312,7 @@ export declare const notifications: import("drizzle-orm/pg-core").PgTableWithCol identity: undefined; generated: undefined; }, {}, { - $type: "poke" | "friend_request" | "friend_request_accepted" | "video_recommendation" | "watch_party_invite" | "achievement_unlocked" | "comment_reply" | "digest_completed" | "digest_failed" | "upload_approved" | "upload_rejected" | "system"; + $type: "friend_request" | "poke" | "upload_approved" | "upload_rejected" | "system" | "friend_request_accepted" | "video_recommendation" | "watch_party_invite" | "achievement_unlocked" | "comment_reply" | "digest_completed" | "digest_failed"; }>; title: import("drizzle-orm/pg-core").PgColumn<{ name: "title"; @@ -16253,7 +16253,7 @@ export declare const publishedInboxFiles: import("drizzle-orm/pg-core").PgTableW tableName: "published_inbox_files"; dataType: "string"; columnType: "PgText"; - data: "video" | "clip" | "scene"; + data: "video" | "scene" | "clip"; driverParam: string; notNull: true; hasDefault: false; @@ -16265,7 +16265,7 @@ export declare const publishedInboxFiles: import("drizzle-orm/pg-core").PgTableW identity: undefined; generated: undefined; }, {}, { - $type: "video" | "clip" | "scene"; + $type: "video" | "scene" | "clip"; }>; }; dialect: "pg"; diff --git a/api/dist/modules/media/middleware/auth.d.ts b/api/dist/modules/media/middleware/auth.d.ts index acf38acf..361f3f39 100644 --- a/api/dist/modules/media/middleware/auth.d.ts +++ b/api/dist/modules/media/middleware/auth.d.ts @@ -6,6 +6,7 @@ declare module 'fastify' { id: string; email: string; role: UserRole; + roles: UserRole[]; }; } } diff --git a/api/dist/modules/media/middleware/auth.d.ts.map b/api/dist/modules/media/middleware/auth.d.ts.map index dbf58509..4e15085f 100644 --- a/api/dist/modules/media/middleware/auth.d.ts.map +++ b/api/dist/modules/media/middleware/auth.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../src/modules/media/middleware/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvD,OAAO,EAAE,QAAQ,EAAc,MAAM,gBAAgB,CAAC;AAKtD,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,cAAc;QACtB,IAAI,CAAC,EAAE;YACL,EAAE,EAAE,MAAM,CAAC;YACX,KAAK,EAAE,MAAM,CAAC;YACd,IAAI,EAAE,QAAQ,CAAC;SAChB,CAAC;KACH;CACF;AAQD;;;GAGG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CA+Df;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC,CAiCf"} \ No newline at end of file +{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../src/modules/media/middleware/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvD,OAAO,EAAE,QAAQ,EAAc,MAAM,gBAAgB,CAAC;AAMtD,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,cAAc;QACtB,IAAI,CAAC,EAAE;YACL,EAAE,EAAE,MAAM,CAAC;YACX,KAAK,EAAE,MAAM,CAAC;YACd,IAAI,EAAE,QAAQ,CAAC;YACf,KAAK,EAAE,QAAQ,EAAE,CAAC;SACnB,CAAC;KACH;CACF;AASD;;;GAGG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CAyEf;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC,CA0Cf"} \ No newline at end of file diff --git a/api/dist/modules/media/middleware/auth.js b/api/dist/modules/media/middleware/auth.js index 2d6bef86..0fbd5046 100644 --- a/api/dist/modules/media/middleware/auth.js +++ b/api/dist/modules/media/middleware/auth.js @@ -10,23 +10,32 @@ const jsonwebtoken_1 = __importDefault(require("jsonwebtoken")); const client_1 = require("@prisma/client"); const database_1 = require("../../../config/database"); const env_1 = require("../../../config/env"); +const roles_1 = require("../../../utils/roles"); /** * Authenticate user via V2 JWT access token * Verifies token and checks user status in Prisma database */ async function authenticate(request, reply) { const authHeader = request.headers.authorization; - if (!authHeader?.startsWith('Bearer ')) { + const queryToken = request.query?.token; + // Support both Authorization header and ?token= query param (for /