feat: add user creation scripts for company and personal users
This commit is contained in:
parent
39458dd556
commit
8e450cd9c5
71
scripts/createCompanyUser.js
Normal file
71
scripts/createCompanyUser.js
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
const UnitOfWork = require('../database/UnitOfWork');
|
||||||
|
const argon2 = require('argon2');
|
||||||
|
|
||||||
|
async function createCompanyUser() {
|
||||||
|
// Edit these values directly in code (no env vars)
|
||||||
|
const companyEmail = 'dummy-company@profitplanet.local';
|
||||||
|
const companyPassword = 'dummyPass!1234';
|
||||||
|
const companyName = 'Dummy Company Inc';
|
||||||
|
const companyPhone = '+490000000001';
|
||||||
|
const contactPersonName = 'Dummy Contact';
|
||||||
|
const contactPersonPhone = '+490000000002';
|
||||||
|
|
||||||
|
const uow = new UnitOfWork();
|
||||||
|
await uow.start();
|
||||||
|
try {
|
||||||
|
const [existing] = await uow.connection.query(
|
||||||
|
`SELECT id FROM users WHERE email = ? AND user_type = 'company' LIMIT 1`,
|
||||||
|
[companyEmail]
|
||||||
|
);
|
||||||
|
|
||||||
|
const hashed = await argon2.hash(companyPassword);
|
||||||
|
let userId;
|
||||||
|
|
||||||
|
if (existing.length) {
|
||||||
|
userId = existing[0].id;
|
||||||
|
await uow.connection.query(
|
||||||
|
`UPDATE users SET password = ? WHERE id = ?`,
|
||||||
|
[hashed, userId]
|
||||||
|
);
|
||||||
|
console.log('✅ Company user password updated');
|
||||||
|
} else {
|
||||||
|
// Create base user record
|
||||||
|
const [userRes] = await uow.connection.query(
|
||||||
|
`INSERT INTO users (email, password, user_type, role, created_at) VALUES (?, ?, 'company', 'user', NOW())`,
|
||||||
|
[companyEmail, hashed]
|
||||||
|
);
|
||||||
|
userId = userRes.insertId;
|
||||||
|
|
||||||
|
// Create company profile (adjust column names if schema differs)
|
||||||
|
await uow.connection.query(
|
||||||
|
`INSERT INTO company_profiles (user_id, company_name, phone, contact_person_name, contact_person_phone)
|
||||||
|
VALUES (?, ?, ?, ?, ?)`,
|
||||||
|
[userId, companyName, companyPhone, contactPersonName, contactPersonPhone]
|
||||||
|
);
|
||||||
|
|
||||||
|
// Initialize user status (defaults: not verified, not completed)
|
||||||
|
await uow.connection.query(
|
||||||
|
`INSERT INTO user_status (user_id, status, is_admin_verified, email_verified, profile_completed, documents_uploaded, contract_signed)
|
||||||
|
VALUES (?, 'active', 0, 0, 0, 0, 0)`,
|
||||||
|
[userId]
|
||||||
|
);
|
||||||
|
|
||||||
|
// Initialize user settings
|
||||||
|
await uow.connection.query(
|
||||||
|
`INSERT INTO user_settings (user_id) VALUES (?)`,
|
||||||
|
[userId]
|
||||||
|
);
|
||||||
|
|
||||||
|
console.log('✅ Company user created and initialized');
|
||||||
|
}
|
||||||
|
|
||||||
|
await uow.commit();
|
||||||
|
return { ok: true, userId, email: companyEmail };
|
||||||
|
} catch (error) {
|
||||||
|
await uow.rollback(error);
|
||||||
|
console.error('💥 Failed to create company user:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = createCompanyUser;
|
||||||
70
scripts/createPersonalUser.js
Normal file
70
scripts/createPersonalUser.js
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
const UnitOfWork = require('../database/UnitOfWork');
|
||||||
|
const argon2 = require('argon2');
|
||||||
|
|
||||||
|
async function createPersonalUser() {
|
||||||
|
// Edit these values directly in code (no env vars)
|
||||||
|
const personalEmail = 'dummy-personal@profitplanet.local';
|
||||||
|
const personalPassword = 'dummyPass!1234';
|
||||||
|
const firstName = 'Dummy';
|
||||||
|
const lastName = 'User';
|
||||||
|
const phone = '+490000000003';
|
||||||
|
|
||||||
|
const uow = new UnitOfWork();
|
||||||
|
await uow.start();
|
||||||
|
try {
|
||||||
|
const [existing] = await uow.connection.query(
|
||||||
|
`SELECT id FROM users WHERE email = ? AND user_type = 'personal' LIMIT 1`,
|
||||||
|
[personalEmail]
|
||||||
|
);
|
||||||
|
|
||||||
|
const hashed = await argon2.hash(personalPassword);
|
||||||
|
let userId;
|
||||||
|
|
||||||
|
if (existing.length) {
|
||||||
|
userId = existing[0].id;
|
||||||
|
await uow.connection.query(
|
||||||
|
`UPDATE users SET password = ? WHERE id = ?`,
|
||||||
|
[hashed, userId]
|
||||||
|
);
|
||||||
|
console.log('✅ Personal user password updated');
|
||||||
|
} else {
|
||||||
|
// Create base user record
|
||||||
|
const [userRes] = await uow.connection.query(
|
||||||
|
`INSERT INTO users (email, password, user_type, role, created_at) VALUES (?, ?, 'personal', 'user', NOW())`,
|
||||||
|
[personalEmail, hashed]
|
||||||
|
);
|
||||||
|
userId = userRes.insertId;
|
||||||
|
|
||||||
|
// Create personal profile
|
||||||
|
await uow.connection.query(
|
||||||
|
`INSERT INTO personal_profiles (user_id, first_name, last_name, phone)
|
||||||
|
VALUES (?, ?, ?, ?)`,
|
||||||
|
[userId, firstName, lastName, phone]
|
||||||
|
);
|
||||||
|
|
||||||
|
// Initialize user status
|
||||||
|
await uow.connection.query(
|
||||||
|
`INSERT INTO user_status (user_id, status, is_admin_verified, email_verified, profile_completed, documents_uploaded, contract_signed)
|
||||||
|
VALUES (?, 'active', 0, 0, 0, 0, 0)`,
|
||||||
|
[userId]
|
||||||
|
);
|
||||||
|
|
||||||
|
// Initialize user settings
|
||||||
|
await uow.connection.query(
|
||||||
|
`INSERT INTO user_settings (user_id) VALUES (?)`,
|
||||||
|
[userId]
|
||||||
|
);
|
||||||
|
|
||||||
|
console.log('✅ Personal user created and initialized');
|
||||||
|
}
|
||||||
|
|
||||||
|
await uow.commit();
|
||||||
|
return { ok: true, userId, email: personalEmail };
|
||||||
|
} catch (error) {
|
||||||
|
await uow.rollback(error);
|
||||||
|
console.error('💥 Failed to create personal user:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = createPersonalUser;
|
||||||
@ -11,6 +11,8 @@ const { logger, requestLogger, setLogLevel, setTransportLevel, getLoggerLevels }
|
|||||||
// ADD: import permission initializer and admin-creation script
|
// ADD: import permission initializer and admin-creation script
|
||||||
const permissionsInit = require('./scripts/initPermissions');
|
const permissionsInit = require('./scripts/initPermissions');
|
||||||
const createAdminUser = require('./scripts/createAdminUser');
|
const createAdminUser = require('./scripts/createAdminUser');
|
||||||
|
const createCompanyUser = require('./scripts/createCompanyUser');
|
||||||
|
const createPersonalUser = require('./scripts/createPersonalUser');
|
||||||
|
|
||||||
const app = express();
|
const app = express();
|
||||||
const PORT = process.env.PORT || 3001;
|
const PORT = process.env.PORT || 3001;
|
||||||
@ -175,6 +177,12 @@ async function startServer() {
|
|||||||
// Create admin user
|
// Create admin user
|
||||||
await createAdminUser();
|
await createAdminUser();
|
||||||
|
|
||||||
|
// Create company user
|
||||||
|
await createCompanyUser();
|
||||||
|
|
||||||
|
// Create personal user
|
||||||
|
await createPersonalUser();
|
||||||
|
|
||||||
// Start the server
|
// Start the server
|
||||||
app.listen(PORT, () => {
|
app.listen(PORT, () => {
|
||||||
const host = process.env.HOST || 'localhost';
|
const host = process.env.HOST || 'localhost';
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user