From c1d926c6fa7263830622866de7eaa2de8ad6eda3 Mon Sep 17 00:00:00 2001 From: Yangshun Tay <tay.yang.shun@gmail.com> Date: Mon, 7 Nov 2022 18:56:25 +0800 Subject: [PATCH] [portal][feat] allow changing email on settings page --- apps/portal/src/pages/settings.tsx | 12 ++++++++++++ apps/portal/src/server/router/user-router.ts | 2 ++ 2 files changed, 14 insertions(+) diff --git a/apps/portal/src/pages/settings.tsx b/apps/portal/src/pages/settings.tsx index d35f9cc9..a7d112d3 100644 --- a/apps/portal/src/pages/settings.tsx +++ b/apps/portal/src/pages/settings.tsx @@ -34,6 +34,7 @@ function SettingsForm({ ); const [name, setName] = useState(session?.user?.name); + const [email, setEmail] = useState(session?.user?.email); return ( <div className="lg:py-18 bg-white py-12"> @@ -50,6 +51,7 @@ function SettingsForm({ onSubmit={(event) => { event.preventDefault(); updateProfileMutation.mutate({ + email: email ? email : undefined, name: name ? name : undefined, }); }}> @@ -58,10 +60,20 @@ function SettingsForm({ <TextInput description="This name will be used across the entire platform" label="Name" + placeholder="John Doe" value={name ?? undefined} onChange={(val) => setName(val)} /> </div> + <div className="sm:col-span-3"> + <TextInput + label="Email" + placeholder="john.doe@example.com" + type="email" + value={email ?? undefined} + onChange={(val) => setEmail(val)} + /> + </div> {/* <div className="sm:col-span-6"> <label className="block text-sm font-medium text-gray-700" diff --git a/apps/portal/src/server/router/user-router.ts b/apps/portal/src/server/router/user-router.ts index 036d609a..6a6283d8 100644 --- a/apps/portal/src/server/router/user-router.ts +++ b/apps/portal/src/server/router/user-router.ts @@ -6,12 +6,14 @@ export const userRouter = createProtectedRouter().mutation( 'settings.profile.update', { input: z.object({ + email: z.string().optional(), name: z.string().optional(), }), async resolve({ ctx, input }) { const userId = ctx.session?.user?.id; return await ctx.prisma.user.update({ data: { + email: input.email, name: input.name, }, where: {