diff options
| author | Mohamed Bassem <me@mbassem.com> | 2026-02-01 17:20:17 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-02-01 17:20:17 +0000 |
| commit | 4051594b2f410f01e883febad22eb9001a84f90e (patch) | |
| tree | 37b74d93192e2399fb50a31436150ba671b2b5cc /packages/trpc/routers | |
| parent | 67501ed6229a63efc29b34513fac35239bd4f8e4 (diff) | |
| download | karakeep-4051594b2f410f01e883febad22eb9001a84f90e.tar.zst | |
feat: add support for redirectUrl after signup (#2439)
* feat: add support for redirectUrl after signup
* pr review
* more fixes
* format
* another fix
Diffstat (limited to 'packages/trpc/routers')
| -rw-r--r-- | packages/trpc/routers/users.test.ts | 1 | ||||
| -rw-r--r-- | packages/trpc/routers/users.ts | 17 |
2 files changed, 15 insertions, 3 deletions
diff --git a/packages/trpc/routers/users.test.ts b/packages/trpc/routers/users.test.ts index 605d14fc..ccde4c86 100644 --- a/packages/trpc/routers/users.test.ts +++ b/packages/trpc/routers/users.test.ts @@ -1116,6 +1116,7 @@ describe("User Routes", () => { "resend@test.com", "Test User", expect.any(String), // token + undefined, // redirectUrl ); }); diff --git a/packages/trpc/routers/users.ts b/packages/trpc/routers/users.ts index abd50d63..c11a0ffd 100644 --- a/packages/trpc/routers/users.ts +++ b/packages/trpc/routers/users.ts @@ -11,6 +11,7 @@ import { zWhoAmIResponseSchema, zWrappedStatsResponseSchema, } from "@karakeep/shared/types/users"; +import { validateRedirectUrl } from "@karakeep/shared/utils/redirectUrl"; import { adminProcedure, @@ -31,7 +32,7 @@ export const usersAppRouter = router({ maxRequests: 3, }), ) - .input(zSignUpSchema) + .input(zSignUpSchema.and(z.object({ redirectUrl: z.string().optional() }))) .output( z.object({ id: z.string(), @@ -65,7 +66,11 @@ export const usersAppRouter = router({ }); } } - const user = await User.create(ctx, input); + const validatedRedirectUrl = validateRedirectUrl(input.redirectUrl); + const user = await User.create(ctx, { + ...input, + redirectUrl: validatedRedirectUrl, + }); return { id: user.id, name: user.name, @@ -206,10 +211,16 @@ export const usersAppRouter = router({ .input( z.object({ email: z.string().email(), + redirectUrl: z.string().optional(), }), ) .mutation(async ({ input, ctx }) => { - await User.resendVerificationEmail(ctx, input.email); + const validatedRedirectUrl = validateRedirectUrl(input.redirectUrl); + await User.resendVerificationEmail( + ctx, + input.email, + validatedRedirectUrl, + ); return { success: true }; }), forgotPassword: publicProcedure |
