diff --git a/add-user.php b/add-user.php index 12d7f04..6e612bc 100644 --- a/add-user.php +++ b/add-user.php @@ -10,14 +10,30 @@ if (!can($_SESSION['user_role_id'], 'user', 'create')) { } $error_message = ''; +$roles = []; + +try { + $pdo = db(); + $stmt = $pdo->query('SELECT id, name FROM roles ORDER BY name'); + $roles = $stmt->fetchAll(PDO::FETCH_ASSOC); + if ($roles === false) { + throw new Exception("Failed to fetch roles from the database."); + } +} catch (PDOException $e) { + error_log('PDO Error in add-user.php: ' . $e->getMessage()); + die("Error: A database error occurred while trying to fetch roles. Please check the logs. Message: " . $e->getMessage()); +} catch (Exception $e) { + die("Error: " . $e->getMessage()); +} + if ($_SERVER['REQUEST_METHOD'] === 'POST') { $name = $_POST['name'] ?? ''; $email = $_POST['email'] ?? ''; $password = $_POST['password'] ?? ''; - $role = $_POST['role'] ?? 'Employee'; + $role_id = $_POST['role_id'] ?? null; - if (empty($name) || empty($email) || empty($password)) { + if (empty($name) || empty($email) || empty($password) || empty($role_id)) { $error_message = 'Please fill in all required fields.'; } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $error_message = 'Invalid email format.'; @@ -25,16 +41,15 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { try { $pdo = db(); - // Check if email already exists $stmt = $pdo->prepare('SELECT id FROM users WHERE email = ?'); $stmt->execute([$email]); if ($stmt->fetch()) { $error_message = 'A user with this email address already exists.'; } else { $hashed_password = password_hash($password, PASSWORD_DEFAULT); - $sql = "INSERT INTO users (name, email, password, role) VALUES (?, ?, ?, ?)"; + $sql = "INSERT INTO users (name, email, password, role_id) VALUES (?, ?, ?, ?)"; $stmt = $pdo->prepare($sql); - $stmt->execute([$name, $email, $hashed_password, $role]); + $stmt->execute([$name, $email, $hashed_password, $role_id]); header("Location: users.php?success=user_added"); exit; @@ -94,12 +109,14 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {