From a5c7904aa17849c1131db9237dcd9e196b7fd1aa Mon Sep 17 00:00:00 2001 From: Ruslan Bakiev <572431+veikab@users.noreply.github.com> Date: Fri, 3 Apr 2026 19:09:15 +0700 Subject: [PATCH] Add user role management script --- scripts/set-user-role.js | 56 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 scripts/set-user-role.js diff --git a/scripts/set-user-role.js b/scripts/set-user-role.js new file mode 100644 index 0000000..dddd4a8 --- /dev/null +++ b/scripts/set-user-role.js @@ -0,0 +1,56 @@ +import 'dotenv/config'; + +import { prisma } from '../src/prisma-client.js'; + +const [, , emailArg, roleArg = 'MANAGER'] = process.argv; + +const email = String(emailArg || '').trim().toLowerCase(); +const role = String(roleArg || '').trim().toUpperCase(); +const allowedRoles = new Set(['CLIENT', 'MANAGER']); + +if (!email) { + throw new Error('Usage: node scripts/set-user-role.js [CLIENT|MANAGER]'); +} + +if (!allowedRoles.has(role)) { + throw new Error(`Unsupported role: ${role}`); +} + +const existingUser = await prisma.user.findUnique({ + where: { email }, + select: { + id: true, + email: true, + role: true, + fullName: true, + }, +}); + +if (!existingUser) { + throw new Error(`User not found: ${email}`); +} + +const updatedUser = await prisma.user.update({ + where: { email }, + data: { role }, + select: { + id: true, + email: true, + role: true, + fullName: true, + }, +}); + +console.log( + JSON.stringify( + { + ok: true, + user: updatedUser, + previousRole: existingUser.role, + }, + null, + 2, + ), +); + +await prisma.$disconnect();