feat: add encryptedKey column to Credential table for calendar integrations (#27154)

Adds encrypted credential storage using a new keyring system:
  - New `encryptedKey` column with AES-256-GCM encryption
  - Decryption in getCalendarsEvents with fallback to legacy `key`
  - buildCredentialCreateData service for credential creation
  - Phase 1: Google Calendar only, other integrations follow
This commit is contained in:
Alex van Andel
2026-01-30 09:15:13 -03:00
committed by GitHub
parent 80e4b1af1f
commit fc9c26e8dd
36 changed files with 308 additions and 34 deletions
@@ -120,6 +120,7 @@ export class AppleCalendarService implements CredentialSyncCalendarApp {
appId: APPLE_CALENDAR_ID,
invalid: false,
delegationCredentialId: null,
encryptedKey: null,
};
const dav = BuildCalendarService({
@@ -40,6 +40,7 @@ export class IcsFeedService implements ICSFeedCalendarApp {
appId: ICS_CALENDAR,
invalid: false,
delegationCredentialId: null,
encryptedKey: null,
};
try {
@@ -88,6 +88,7 @@ export class CredentialsRepository {
id: true,
type: true,
key: true,
encryptedKey: true,
userId: true,
teamId: true,
appId: true,