fix: add sign up hook

This commit is contained in:
David Nguyen
2025-02-13 20:21:23 +11:00
parent 87dcdd44cd
commit ebc2b00067
13 changed files with 55 additions and 96 deletions

View File

@ -19,12 +19,4 @@ export const onAuthorize = async (user: AuthorizeUser, c: Context<HonoAuthContex
await createSession(sessionToken, user.userId, metadata);
await setSessionCookie(c, sessionToken);
// Todo.
// Create the Stripe customer and attach it to the user if it doesn't exist.
// if (user.customerId === null && IS_BILLING_ENABLED()) {
// await getStripeCustomerByUser(user).catch((err) => {
// console.error(err);
// });
// }
};

View File

@ -6,6 +6,7 @@ import { z } from 'zod';
import { NEXT_PUBLIC_WEBAPP_URL } from '@documenso/lib/constants/app';
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
import { onCreateUserHook } from '@documenso/lib/server-only/user/create-user';
import { env } from '@documenso/lib/utils/env';
import { prisma } from '@documenso/prisma';
import { UserSecurityAuditLogType } from '@documenso/prisma/client';
@ -232,6 +233,11 @@ export const googleRoute = new Hono<HonoAuthContext>()
return user;
});
await onCreateUserHook(createdUser).catch((err) => {
// Todo: Add logging.
console.error(err);
});
await onAuthorize({ userId: createdUser.id }, c);
return c.redirect(redirectPath, 302);

View File

@ -1,4 +1,5 @@
import { hash } from '@node-rs/bcrypt';
import type { User } from '@prisma/client';
import { TeamMemberInviteStatus } from '@prisma/client';
import { getStripeCustomerByUser } from '@documenso/ee/server-only/stripe/get-customer';
@ -70,6 +71,22 @@ export const createUser = async ({ name, email, password, signature, url }: Crea
return user;
});
await onCreateUserHook(user).catch((err) => {
// Todo: Add logging.
console.error(err);
});
return user;
};
/**
* Should be run after a user is created.
*
* @returns User
*/
export const onCreateUserHook = async (user: User) => {
const { email } = user;
const acceptedTeamInvites = await prisma.teamMemberInvite.findMany({
where: {
status: TeamMemberInviteStatus.ACCEPTED,

View File

@ -1,10 +1,25 @@
export const appLog = (context: string, ...args: Parameters<typeof console.log>) => {
// if (env('NEXT_DEBUG') === 'true') {
console.log(`[${context}]: ${args[0]}`, ...args.slice(1));
// }
import { env } from './env';
/**
* Which areas to debug, keyed by context.
*/
const debugging: Record<string, boolean> = {
auth: env('NEXT_DEBUG_AUTH') === 'true',
job: env('NEXT_DEBUG_JOB') === 'true',
middleware: env('NEXT_DEBUG_MIDDLEWARE') === 'true',
};
export class AppLogger {
export const appLog = (context: string, ...args: Parameters<typeof console.log>) => {
if (debugging[context.toLowerCase()] === false) {
return;
}
if (env('NEXT_DEBUG') === 'true') {
console.log(`[${context}]: ${args[0]}`, ...args.slice(1));
}
};
export class AppDebugger {
public context: string;
constructor(context: string) {