Files
nuxt-frontend/prisma/seed.mjs
2026-04-14 19:44:21 -05:00

53 lines
1.0 KiB
JavaScript

import { PrismaClient } from '@prisma/client'
import { randomBytes, scryptSync } from 'node:crypto'
const prisma = new PrismaClient()
function hashPassword(password) {
const salt = randomBytes(16).toString('base64url')
const derivedKey = scryptSync(password, salt, 64).toString('base64url')
return `scrypt$${salt}$${derivedKey}`
}
async function upsertUser({ email, password }) {
const passwordHash = hashPassword(password)
await prisma.user.upsert({
where: { email },
update: {
passwordHash
},
create: {
email,
passwordHash
}
})
}
async function main() {
await upsertUser({
email: 'student@example.com',
password: 'student123'
})
await upsertUser({
email: 'admin@example.com',
password: 'admin123'
})
await upsertUser({
email: 'limited@example.com',
password: 'limited123'
})
}
main()
.then(async () => {
await prisma.$disconnect()
})
.catch(async (error) => {
console.error('Seed failed:', error)
await prisma.$disconnect()
process.exit(1)
})