From b7b5306619cc4420bd0ae494881ee7161391dec4 Mon Sep 17 00:00:00 2001 From: MohamedBassem Date: Sat, 2 Mar 2024 09:53:24 +0000 Subject: feature: Make the first user an admin automatically --- packages/web/server/api/routers/users.ts | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'packages/web/server/api/routers/users.ts') diff --git a/packages/web/server/api/routers/users.ts b/packages/web/server/api/routers/users.ts index 3078a42a..3d5d982d 100644 --- a/packages/web/server/api/routers/users.ts +++ b/packages/web/server/api/routers/users.ts @@ -5,6 +5,7 @@ import { z } from "zod"; import { hashPassword } from "@/server/auth"; import { TRPCError } from "@trpc/server"; import { users } from "@hoarder/db/schema"; +import { count } from "drizzle-orm"; export const usersAppRouter = router({ create: publicProcedure @@ -13,9 +14,13 @@ export const usersAppRouter = router({ z.object({ name: z.string(), email: z.string(), + role: z.enum(["user", "admin"]).nullable(), }), ) .mutation(async ({ input, ctx }) => { + const [{ count: userCount }] = await ctx.db + .select({ count: count() }) + .from(users); try { const result = await ctx.db .insert(users) @@ -23,10 +28,12 @@ export const usersAppRouter = router({ name: input.name, email: input.email, password: await hashPassword(input.password), + role: userCount == 0 ? "admin" : "user", }) .returning({ name: users.name, email: users.email, + role: users.role, }); return result[0]; } catch (e) { -- cgit v1.2.3-70-g09d2