- Move permission validation from AdminLayoutAppDirClient.tsx (client) to layout.tsx (server)
- Add server-side redirect using next/navigation redirect() function
- Remove client-side useEffect permission check to eliminate flash
- Follow same pattern as organizations layout for consistent auth handling
- Users without admin role are redirected to /settings/my-account/profile before any content renders
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* fix: correct booking count in EventTrendsChart by restructuring SQL query
- Replace JOIN-based query with CTE approach to count distinct bookings
- Separate booking stats from guest stats to prevent duplicate counting
- Preserve no-show guest functionality with LEFT JOIN
- Ensure EventTrendsChart 'Created' sum matches BookingKPICards 'events_created'
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* fix: use positional GROUP BY references to resolve PostgreSQL error
- Replace column expressions in GROUP BY with positional references (1, 2, 3)
- Fixes PostgreSQL error 42803 caused by parameter resolution in CTE queries
- Maintains the same query logic while avoiding column reference conflicts
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* address feedback
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* chore: v2 dont allow mixing platform teams/users with non-platform
* chore: finish main merge
* test: e2e
* refactor: simplify can add user to team logic
* refactor: fetch only needed oauth data
* refactor: cleanup
* feat: support auto create agent
* fix: intercom showing on cal.video page
* Revert "feat: support auto create agent"
This reverts commit 084319c419b3baa44a3a82c0a2d79a4242a64d4d.
---------
Co-authored-by: Udit Takkar <udit222001@gmail.com>
* refactor layout to not check session
* add actions for orgs + org admins
* update types on actions to be correctly non nullable
* Add tests for utils
* Apply suggestion from @coderabbitai[bot]
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* restore lock file
* rename _actions to actions
* update tests to be mocked
* restore lock
---------
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* feat: add PBAC permission checks to insights
- Add layout-level protection for insights pages with session.user.org.id check
- Add API-level protection for insights tRPC endpoints using insightsPbacProcedure
- Enhance routing form insights with PBAC team filtering
- Use insights.read permission with OWNER/ADMIN fallback roles
- Replace all userBelongsToTeamProcedure with insightsPbacProcedure in insights router
- Fix lint issues: remove unused variables and functions, fix non-null assertion
Implements Permission-Based Access Control (PBAC) for insights functionality following the same patterns as event type PBAC implementation from PR #22618.
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* fix: clean up unused imports in routing-forms
- Remove unused isFormCreateEditAllowed import
- Remove unused TRPCError import
- Change MembershipRole to type import for better tree-shaking
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* address feedback
* clean up permission check
* revert unnecessary changes
* fix procedure
* allow MEMBER for insights
* support teams not under orgs
* fix type error
* revert unnecessary changes
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* perf: move to disable prisma client extension inference
* Prisma doesn't like it when you pass Record<string, unknown>
* API v1 type fixes
* Missed one
* Fix unit test fail due to faulty expect
* Assigning to prisma InputJsonValue/Array must be done as object, not interface
* Fix @calcom/web ts error, teams not defined
* Run eslint formatter
* fixed the routingFormHelpers file causing a failing app store e2e test
* fix: prevent footer doubling with CSS position absolute for grid layouts
* fix: use :host selector for Shadow DOM compatibility in footer doubling fix
* Add better comments and updae playground to be ab le to test it
---------
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
* chore: implement redis cache for calendars api v2
* fixup! chore: implement redis cache for calendars api v2
* fixup! fixup! chore: implement redis cache for calendars api v2
* fix leverage genetic type of redis.get
* refactor: address supalarry's PR feedback
- Create CalendarsCacheService to separate cache responsibilities
- Rename cache methods to be more descriptive (getConnectedAndDestinationCalendarsCache, setConnectedAndDestinationCalendarsCache)
- Remove unused redisService injection from CalendarsController
- Move all cache-related functionality to dedicated service
Addresses comments 9, 10, and 11 from supalarry on PR #23622
Co-Authored-By: morgan@cal.com <morgan@cal.com>
* refactor: address supalarry's latest PR feedback
- Remove redundant deleteConnectedAndDestinationCalendarsCache from CalendarsService
- Update controller to directly inject and use CalendarsCacheService
- Extract TTL constant and remove manual JSON.stringify in cache service
Co-Authored-By: morgan@cal.com <morgan@cal.com>
* fix: update IcsFeedService to use CalendarsCacheService directly
- Inject CalendarsCacheService into IcsFeedService constructor
- Replace calendarsService.deleteCalendarCache with calendarsCacheService.deleteConnectedAndDestinationCalendarsCache
- Completes the refactoring to eliminate all old cache method references
Co-Authored-By: morgan@cal.com <morgan@cal.com>
* fix: update destination-calendars and selected-calendars services to use CalendarsCacheService directly
- Inject CalendarsCacheService in both service constructors
- Replace calendarsService.deleteCalendarCache calls with calendarsCacheService.deleteConnectedAndDestinationCalendarsCache
- Add CalendarsCacheService to module providers for proper dependency injection
- Completes migration of all cache method references to use dedicated cache service
Co-Authored-By: morgan@cal.com <morgan@cal.com>
* chore: use CalendarsCacheService
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>