3 changed files with 60 additions and 16 deletions
@ -0,0 +1,54 @@ |
|||||
|
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.' }); |
||||
|
} |
||||
|
}; |
||||
@ -1,22 +1,12 @@ |
|||||
const express = require('express'); |
const express = require('express'); |
||||
const authMiddleware = require('../middleware/authMiddleware'); |
const authMiddleware = require('../middleware/authMiddleware'); |
||||
|
const userController = require('../controllers/UserController'); |
||||
|
|
||||
const router = express.Router(); |
const router = express.Router(); |
||||
|
|
||||
// Open only to logged users
|
router.get('/profile', authMiddleware(), userController.getProfile); |
||||
router.get('/profile', authMiddleware(), (req, res) => { |
router.get('/admin', authMiddleware('admin'), userController.getAdminPage); |
||||
res.json({ |
router.post('/create', authMiddleware('admin'), userController.createUser); |
||||
message: 'Welcome to your profile!', |
|
||||
user: req.user, |
|
||||
}); |
|
||||
}); |
|
||||
|
|
||||
// Open only to admins
|
|
||||
router.get('/admin', authMiddleware('admin'), (req, res) => { |
|
||||
res.json({ |
|
||||
message: 'Welcome, admin!', |
|
||||
user: req.user, |
|
||||
}); |
|
||||
}); |
|
||||
|
|
||||
module.exports = router; |
module.exports = router; |
||||
|
|||||
Loading…
Reference in new issue