diff --git a/scripts/createCompanyUser.js b/scripts/createCompanyUser.js new file mode 100644 index 0000000..6a11ab3 --- /dev/null +++ b/scripts/createCompanyUser.js @@ -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; diff --git a/scripts/createPersonalUser.js b/scripts/createPersonalUser.js new file mode 100644 index 0000000..20092b2 --- /dev/null +++ b/scripts/createPersonalUser.js @@ -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; diff --git a/server.js b/server.js index ffb02f0..e8bf538 100644 --- a/server.js +++ b/server.js @@ -11,6 +11,8 @@ const { logger, requestLogger, setLogLevel, setTransportLevel, getLoggerLevels } // ADD: import permission initializer and admin-creation script const permissionsInit = require('./scripts/initPermissions'); const createAdminUser = require('./scripts/createAdminUser'); +const createCompanyUser = require('./scripts/createCompanyUser'); +const createPersonalUser = require('./scripts/createPersonalUser'); const app = express(); const PORT = process.env.PORT || 3001; @@ -175,6 +177,12 @@ async function startServer() { // Create admin user await createAdminUser(); + // Create company user + await createCompanyUser(); + + // Create personal user + await createPersonalUser(); + // Start the server app.listen(PORT, () => { const host = process.env.HOST || 'localhost';