import { useValidatedBody, useValidatedParams, z, zh } from 'h3-zod'; import prisma from '~~/lib/prisma'; export default defineEventHandler(async (event) => { const user = await requireUserSession(event); if (user.user.role !== 'ADMIN') { throw createError({ status: 403, statusText: 'Not allowed!' }); } const { userId } = await useValidatedParams( event, z.object({ userId: zh.numAsString }) ); const { role } = await useValidatedBody( event, z.object({ role: z.enum(['USER', 'CREATOR', 'ADMIN']) }) ); if (userId === user.user.id) { throw createError({ status: 400, statusText: 'You cannot change your own role!' }); } const updated = await prisma.user.update({ where: { id: userId, deactivated: false, deletedAt: null }, data: { role }, select: { id: true, name: true, email: true, role: true } }); return { success: true, user: updated }; });