Spaces:
Running
Running
File size: 1,442 Bytes
ad19202 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
import { auth } from "@repo/auth";
import { createUser, createUserAccount, getUserByEmail } from "@repo/database";
import { logger } from "@repo/logs";
import { nanoid } from "nanoid";
async function main() {
logger.info("Let's create a new user for your application!");
const email = await logger.prompt("Enter an email:", {
required: true,
placeholder: "admin@example.com",
type: "text",
});
const name = await logger.prompt("Enter a name:", {
required: true,
placeholder: "Adam Admin",
type: "text",
});
const isAdmin = await logger.prompt("Should user be an admin?", {
required: true,
type: "confirm",
default: false,
});
const authContext = await auth.$context;
const adminPassword = nanoid(16);
const hashedPassword = await authContext.password.hash(adminPassword);
// check if user exists
const user = await getUserByEmail(email);
if (user) {
logger.error("User with this email already exists!");
return;
}
const adminUser = await createUser({
email,
name,
role: isAdmin ? "admin" : "user",
emailVerified: true,
onboardingComplete: true,
});
if (!adminUser) {
logger.error("Failed to create user!");
return;
}
await createUserAccount({
userId: adminUser.id,
providerId: "credential",
accountId: adminUser.id,
hashedPassword,
});
logger.success("User created successfully!");
logger.info(`Here is the password for the new user: ${adminPassword}`);
}
main();
|