You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

54 lines
1.3 KiB

const { pool } = require('../config/databases');
const bcrypt = require('bcryptjs');
exports.getProfile = (req, res) => {
res.json({
message: 'Welcome to your profile!',
user: req.user,
});
};
exports.getAdminPage = (req, res) => {
res.json({
message: 'Welcome, admin!',
user: req.user,
});
};
exports.createUser = async (req, res) => {
const { username, password, role = 'user' } = req.body;
if (!username || !password) {
return res.status(400).json({ message: 'Username and password are required.' });
}
try {
// Check if username already exists
const [existing] = await pool.query('SELECT * FROM users WHERE username = ?', [username]);
if (existing.length > 0) {
return res.status(409).json({ message: 'Username already exists.' });
}
// Hash password
const hashedPassword = await bcrypt.hash(password, 10);
// Insert user
const [result] = await pool.query(
'INSERT INTO users (username, password, role) VALUES (?, ?, ?)',
[username, hashedPassword, role]
);
res.status(201).json({
message: 'User created successfully',
user: {
id: result.insertId,
username,
role,
},
});
} catch (err) {
console.error(err);
res.status(500).json({ message: 'Server error while creating user.' });
}
};