Files
+16 68bd877c5b feat: OAuth provider for Zapier (#11465)
Co-authored-by: Alex van Andel <[email protected]>
Co-authored-by: sajanlamsal <[email protected]>
Co-authored-by: CarinaWolli <[email protected]>
Co-authored-by: alannnc <[email protected]>
Co-authored-by: Leo Giovanetti <[email protected]>
Co-authored-by: Peer Richelsen <[email protected]>
Co-authored-by: Hariom Balhara <[email protected]>
Co-authored-by: Udit Takkar <[email protected]>
Co-authored-by: Nitin Panghal <[email protected]>
Co-authored-by: Omar López <[email protected]>
Co-authored-by: Peer Richelsen <[email protected]>
Co-authored-by: zomars <[email protected]>
Co-authored-by: Shivam Kalra <[email protected]>
Co-authored-by: Richard Poelderl <[email protected]>
Co-authored-by: Crowdin Bot <[email protected]>
Co-authored-by: Joe Au-Yeung <[email protected]>
Co-authored-by: Nafees Nazik <[email protected]>
Co-authored-by: Chiranjeev Vishnoi <[email protected]>
Co-authored-by: Denzil Samuel <[email protected]>
Co-authored-by: Syed Ali Shahbaz <[email protected]>
Co-authored-by: nitinpanghal <[email protected]>
Co-authored-by: Ahmad <[email protected]>
Co-authored-by: Annlee Fores <[email protected]>
Co-authored-by: Keith Williams <[email protected]>
Co-authored-by: Vijay <[email protected]>
2023-09-28 12:41:28 -07:00

39 lines
960 B
TypeScript

import { randomBytes, createHash } from "crypto";
import { prisma } from "@calcom/prisma";
import type { TAddClientInputSchema } from "./addClient.schema";
type AddClientOptions = {
input: TAddClientInputSchema;
};
export const addClientHandler = async ({ input }: AddClientOptions) => {
const { name, redirectUri, logo } = input;
const [hashedSecret, secret] = generateSecret();
const clientId = randomBytes(32).toString("hex");
const client = await prisma.oAuthClient.create({
data: {
name,
redirectUri,
clientId,
clientSecret: hashedSecret,
logo,
},
});
const clientWithSecret = {
...client,
clientSecret: secret,
};
return clientWithSecret;
};
const hashSecretKey = (apiKey: string): string => createHash("sha256").update(apiKey).digest("hex");
// Generate a random secret
export const generateSecret = (secret = randomBytes(32).toString("hex")) => [hashSecretKey(secret), secret];