Add user settings, improve color scheme

This commit is contained in:
Meier Lukas
2023-07-29 11:19:40 +02:00
parent d8562e2990
commit ed76afbce8
8 changed files with 129 additions and 31 deletions

View File

@@ -2,9 +2,9 @@ import { TRPCError } from '@trpc/server';
import bcrypt from 'bcrypt';
import { z } from 'zod';
import { hashPassword } from '~/utils/security';
import { signUpFormSchema } from '~/validations/user';
import { colorSchemeParser, signUpFormSchema } from '~/validations/user';
import { createTRPCRouter, publicProcedure } from '../trpc';
import { createTRPCRouter, protectedProcedure, publicProcedure } from '../trpc';
export const userRouter = createTRPCRouter({
register: publicProcedure
@@ -50,6 +50,12 @@ export const userRouter = createTRPCRouter({
name: input.username,
password: hashedPassword,
salt: salt,
settings: {
create: {
colorScheme: colorSchemeParser.parse(ctx.cookies['color-scheme']),
language: ctx.cookies['config-locale'] ?? 'en',
},
},
},
});
await ctx.prisma.registrationToken.delete({
@@ -63,4 +69,24 @@ export const userRouter = createTRPCRouter({
name: user.name,
};
}),
changeColorScheme: protectedProcedure
.input(
z.object({
colorScheme: colorSchemeParser,
})
)
.mutation(async ({ ctx, input }) => {
await ctx.prisma.user.update({
where: {
id: ctx.session?.user?.id,
},
data: {
settings: {
update: {
colorScheme: input.colorScheme,
},
},
},
});
}),
});

View File

@@ -25,6 +25,7 @@ import { prisma } from '../db';
interface CreateContextOptions {
session: Session | null;
cookies: Partial<Record<string, string>>;
}
/**
@@ -39,6 +40,7 @@ interface CreateContextOptions {
*/
const createInnerTRPCContext = (opts: CreateContextOptions) => ({
session: opts.session,
cookies: opts.cookies,
prisma,
});
@@ -56,6 +58,7 @@ export const createTRPCContext = async (opts: CreateNextContextOptions) => {
return createInnerTRPCContext({
session,
cookies: req.cookies,
});
};