mirror of
https://github.com/hanzoai/calendar.git
synced 2026-10-30 14:46:43 +00:00
* move SystemField to features * migrate workflow service * merge two tests for team repository * update imports and migrate team repository * migrate delegation credential repository * migrate credential repository * migrate entityPermissionUtils * migrate hashedLink service and repository * migrate membership service * update imports * remove file * migrate buildEventUrlFromBooking * migrate getAllUserBookings to features * update imports * update organizationMock * migrate slots * migrate date-ranges to schedules dir * migrate getAggregatedAvailability * fix * refactor * migrate useCreateEventType hook to features * migrate assignValueToUser * migrate validateUsername to auth features * migrate system field back to lib * migrate getLabelValueMapFromResponses back to lib * update imports * use relative path * fix type checks * fix * fix * fix tests * update gh codeowners * fix * fix
65 lines
1.8 KiB
TypeScript
65 lines
1.8 KiB
TypeScript
import type { z } from "zod";
|
|
|
|
import { DelegationCredentialRepository } from "@calcom/features/delegation-credentials/repositories/DelegationCredentialRepository";
|
|
import { WorkspacePlatformRepository } from "@calcom/lib/server/repository/workspacePlatform";
|
|
|
|
import { TRPCError } from "@trpc/server";
|
|
|
|
import type { DelegationCredentialUpdateSchema } from "./schema";
|
|
import {
|
|
ensureDelegationCredentialNotAlreadyConfigured,
|
|
ensureNoServiceAccountKey,
|
|
handleDelegationCredentialError,
|
|
} from "./utils";
|
|
|
|
export default async function handler({
|
|
input,
|
|
ctx,
|
|
}: {
|
|
input: z.infer<typeof DelegationCredentialUpdateSchema>;
|
|
ctx: { user: { id: number; organizationId: number | null } };
|
|
}) {
|
|
const { id, workspacePlatformSlug, domain } = input;
|
|
const { user } = ctx;
|
|
const { organizationId } = user;
|
|
|
|
if (!organizationId) {
|
|
throw new TRPCError({
|
|
code: "UNAUTHORIZED",
|
|
message: "You must be part of an organization to update a delegation credential",
|
|
});
|
|
}
|
|
|
|
await ensureDelegationCredentialNotAlreadyConfigured({
|
|
domain,
|
|
currentOrganizationId: organizationId,
|
|
delegationCredentialBeingUpdatedId: id,
|
|
});
|
|
|
|
try {
|
|
const workspacePlatform = await WorkspacePlatformRepository.findBySlugIncludeSensitiveServiceAccountKey({
|
|
slug: workspacePlatformSlug,
|
|
});
|
|
|
|
if (!workspacePlatform) {
|
|
throw new TRPCError({
|
|
code: "NOT_FOUND",
|
|
message: `Workspace platform ${workspacePlatformSlug} not found`,
|
|
});
|
|
}
|
|
|
|
const updatedDelegation = await DelegationCredentialRepository.updateById({
|
|
id,
|
|
data: {
|
|
workspacePlatformId: workspacePlatform.id,
|
|
domain,
|
|
organizationId,
|
|
},
|
|
});
|
|
|
|
return ensureNoServiceAccountKey(updatedDelegation);
|
|
} catch (error) {
|
|
handleDelegationCredentialError(error);
|
|
}
|
|
}
|