Files
cal.diy/packages/app-store/delegationCredential.ts
Benny JooandDevin AI ab21c7f805 refactor: Cal.diy (#28903)
* feat: Cal.diy — community-driven MIT-licensed fork of Cal.com

This squashed commit contains all Cal.diy changes applied on top of calcom/cal.com main:

- Rebrand Cal.com to Cal.diy across the entire codebase
- Remove Enterprise Edition (EE) features, license checks, and AGPL restrictions
- Switch license from AGPL-3.0 to MIT
- Remove docs/ directory (migrated to Nextra at cal.diy)
- Remove dead code: org tests, EE tips, platform nav, premium username, SAML/SSO, etc.
- Clean up .env.example for self-hosted Cal.diy
- Update Docker image references to calcom/cal.diy
- Update README, CONTRIBUTING.md, and issue templates for Cal.diy community fork
- Add PR welcome bot for Cal.diy contributors
- Fix API v2 breaking changes oasdiff ignore entries
- Replace Blacksmith CI runners with default GitHub Actions

3893 files changed, 20789 insertions(+), 411020 deletions(-)

Co-Authored-By: benny@cal.com <sldisek783@gmail.com>

* refactor: remove org-specific /organizations/:orgId endpoints from API v2 atoms controllers (#1701)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix: revert Cal.diy Inc to Cal.com, Inc. in license files, copyright notices, and package metadata (#1702)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* rip out org related comments in api v2

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-04-15 09:52:36 -03:00

183 lines
5.0 KiB
TypeScript

import { CredentialRepository } from "@calcom/features/credentials/repositories/CredentialRepository";
import { prisma } from "@calcom/prisma";
import type { SelectedCalendar } from "@calcom/prisma/client";
import { credentialForCalendarServiceSelect } from "@calcom/prisma/selects/credential";
import type { CredentialForCalendarService, CredentialPayload } from "@calcom/types/Credential";
type Host<TUser extends { id: number; email: string; credentials: CredentialPayload[] }> = {
user: TUser;
};
export async function getAllDelegationCredentialsForUserIncludeServiceAccountKey(_args: {
user: { email: string; id: number };
}) {
return [] as CredentialForCalendarService[];
}
export async function getAllDelegationCredentialsForUser(_args: { user: { email: string; id: number } }) {
return [] as CredentialForCalendarService[];
}
export async function getAllDelegatedCalendarCredentialsForUser(_args: {
user: { email: string; id: number };
}) {
return [] as CredentialForCalendarService[];
}
export async function assertSuccessfullyConfiguredInWorkspace(_args: {
delegationCredential: unknown;
user: unknown;
}): Promise<void> {
throw new Error("Delegation credentials are not available in the community edition");
}
export async function getAllDelegationCredentialsForUserByAppType(_args: {
user: { email: string; id: number };
appType: string;
}) {
return [] as CredentialForCalendarService[];
}
export async function getAllDelegationCredentialsForUserByAppSlug(_args: {
user: { email: string; id: number };
appSlug: string;
}) {
return [] as CredentialForCalendarService[];
}
export const buildAllCredentials = ({
existingCredentials,
}: {
delegationCredentials: CredentialForCalendarService[];
existingCredentials: CredentialPayload[];
}) => {
return existingCredentials as CredentialForCalendarService[];
};
export async function enrichUsersWithDelegationCredentials<
TUser extends { id: number; email: string; credentials: CredentialPayload[] },
>({ users }: { orgId: number | null; users: TUser[] }) {
return users;
}
export const enrichHostsWithDelegationCredentials = async <
THost extends Host<TUser>,
TUser extends { id: number; email: string; credentials: CredentialPayload[] },
>({
hosts,
}: {
orgId: number | null;
hosts: THost[];
}) => {
return hosts;
};
export const enrichUserWithDelegationCredentialsIncludeServiceAccountKey = async <
TUser extends { id: number; email: string; credentials: CredentialPayload[] },
>({
user,
}: {
user: TUser;
}) => {
return user;
};
export const enrichUserWithDelegationCredentials = async <
TUser extends { id: number; email: string; credentials: CredentialPayload[] },
>({
user,
}: {
user: TUser;
}) => {
return user;
};
export async function enrichUserWithDelegationConferencingCredentialsWithoutOrgId<
TUser extends { id: number; email: string; credentials: CredentialPayload[] },
>({ user }: { user: TUser }) {
return user;
}
export async function getDelegationCredentialOrFindRegularCredential<
TDelegationCredential extends { delegatedToId?: string | null },
>({
id,
}: {
id: {
credentialId: number | null | undefined;
delegationCredentialId: string | null | undefined;
};
delegationCredentials: TDelegationCredential[];
}) {
return id.credentialId
? await CredentialRepository.findCredentialForCalendarServiceById({
id: id.credentialId,
})
: null;
}
export function getDelegationCredentialOrRegularCredential<
TCredential extends { delegatedToId?: string | null; id: number },
>({
credentials,
id,
}: {
credentials: TCredential[];
id: { credentialId: number | null | undefined; delegationCredentialId: string | null | undefined };
}) {
return (
credentials.find((cred) => {
if (id.credentialId) {
return cred.id === id.credentialId;
}
return false;
}) || null
);
}
export function getFirstDelegationConferencingCredential(_args: {
credentials: CredentialForCalendarService[];
}) {
return undefined;
}
export function getFirstDelegationConferencingCredentialAppLocation(_args: {
credentials: CredentialForCalendarService[];
}) {
return null;
}
export async function findUniqueDelegationCalendarCredential(_args: {
userId: number;
delegationCredentialId: string;
}) {
return null;
}
export async function getUsersCredentialsIncludeServiceAccountKey(user: { id: number; email: string }) {
return prisma.credential.findMany({
where: {
userId: user.id,
},
select: credentialForCalendarServiceSelect,
orderBy: {
id: "asc",
},
});
}
export async function getUsersCredentials(user: { id: number; email: string }) {
return getUsersCredentialsIncludeServiceAccountKey(user);
}
export async function getCredentialForSelectedCalendar({
credentialId,
}: Partial<SelectedCalendar>) {
if (credentialId) {
const credentialRepository = new CredentialRepository(prisma);
const credential = await credentialRepository.findByIdWithDelegationCredential(credentialId);
return credential ?? undefined;
}
return undefined;
}