114 lines
3.6 KiB
PHP
Executable File
114 lines
3.6 KiB
PHP
Executable File
<?php
|
|
|
|
class User {
|
|
public static function findByUsername($username) {
|
|
$db = Database::getInstance();
|
|
return $db->fetchOne(
|
|
"SELECT * FROM users WHERE username = ? AND is_active = 1",
|
|
[$username]
|
|
);
|
|
}
|
|
|
|
public static function findById($id) {
|
|
$db = Database::getInstance();
|
|
return $db->fetchOne(
|
|
"SELECT * FROM users WHERE id = ?",
|
|
[$id]
|
|
);
|
|
}
|
|
|
|
public static function all() {
|
|
$db = Database::getInstance();
|
|
return $db->fetchAll(
|
|
"SELECT id, username, email, first_name, last_name, role, is_active, last_login, created_at
|
|
FROM users ORDER BY id"
|
|
);
|
|
}
|
|
|
|
public static function create($data) {
|
|
$db = Database::getInstance();
|
|
$db->execute(
|
|
"INSERT INTO users (username, email, password, first_name, last_name, role)
|
|
VALUES (?, ?, ?, ?, ?, ?)",
|
|
[
|
|
$data['username'],
|
|
$data['email'],
|
|
password_hash($data['password'], PASSWORD_DEFAULT),
|
|
$data['first_name'],
|
|
$data['last_name'],
|
|
$data['role']
|
|
]
|
|
);
|
|
return $db->lastInsertId();
|
|
}
|
|
|
|
public static function update($id, $data) {
|
|
$db = Database::getInstance();
|
|
$sql = "UPDATE users SET username = ?, email = ?, first_name = ?, last_name = ?, role = ?";
|
|
$params = [
|
|
$data['username'],
|
|
$data['email'],
|
|
$data['first_name'],
|
|
$data['last_name'],
|
|
$data['role']
|
|
];
|
|
|
|
if (!empty($data['password'])) {
|
|
$sql .= ", password = ?";
|
|
$params[] = password_hash($data['password'], PASSWORD_DEFAULT);
|
|
}
|
|
|
|
$sql .= " WHERE id = ?";
|
|
$params[] = $id;
|
|
|
|
// Database::execute() puede devolver el número de filas afectadas o un booleano.
|
|
// Si devuelve 0 (ninguna fila afectada) PHP lo interpreta como false.
|
|
// Queremos que sea true si la consulta se ejecuta sin errores.
|
|
$stmt = $db->execute($sql, $params);
|
|
return $stmt !== false; // Devuelve true si la ejecución fue exitosa, false si hubo un error.
|
|
}
|
|
|
|
public static function delete($id) {
|
|
$db = Database::getInstance();
|
|
return $db->execute(
|
|
"UPDATE users SET is_active = 0 WHERE id = ?",
|
|
[$id]
|
|
);
|
|
}
|
|
|
|
public static function updateProfile($id, $data) {
|
|
$db = Database::getInstance();
|
|
$stmt = $db->execute(
|
|
"UPDATE users SET email = ?, first_name = ?, last_name = ? WHERE id = ?",
|
|
[
|
|
$data['email'],
|
|
$data['first_name'],
|
|
$data['last_name'],
|
|
$id
|
|
]
|
|
);
|
|
return $stmt !== false; // Devuelve true si la ejecución fue exitosa, false si hubo un error.
|
|
}
|
|
|
|
public static function changePassword($id, $newPassword) {
|
|
$db = Database::getInstance();
|
|
$stmt = $db->execute(
|
|
"UPDATE users SET password = ? WHERE id = ?",
|
|
[
|
|
password_hash($newPassword, PASSWORD_DEFAULT),
|
|
$id
|
|
]
|
|
);
|
|
return $stmt !== false; // Devuelve true si la ejecución fue exitosa, false si hubo un error.
|
|
}
|
|
|
|
public static function verifyPassword($id, $password) {
|
|
$db = Database::getInstance();
|
|
$user = $db->fetchOne(
|
|
"SELECT password FROM users WHERE id = ?",
|
|
[$id]
|
|
);
|
|
return $user && password_verify($password, $user['password']);
|
|
}
|
|
}
|