Files
billReminder/Service/UserManager.php
2024-02-09 20:52:11 -06:00

43 lines
1.4 KiB
PHP

<?php
namespace Hpz937\BillReminder\Service;
use Hpz937\BillReminder\Database\DatabaseInterface;
use Hpz937\BillReminder\Model\User;
class UserManager {
private DatabaseInterface $db;
public function __construct(DatabaseInterface $db) {
$this->db = $db;
}
public function register(string $username, string $password): bool {
$passwordHash = password_hash($password, PASSWORD_DEFAULT);
$sql = "INSERT INTO users (username, passwordHash) VALUES (:username, :passwordHash)";
$this->db->prepare($sql);
return $this->db->execute([
':username' => $username,
':passwordHash' => $passwordHash,
]);
}
public function login(string $username, string $password): ?User {
$sql = "SELECT * FROM users WHERE username = :username";
$this->db->prepare($sql);
$this->db->execute([':username' => $username]);
$result = $this->db->fetch();
if ($result && (new User($result['id'], $result['username'], $result['passwordHash']))->verifyPassword($password)) {
// Start or regenerate the session
session_regenerate_id();
$_SESSION['user_id'] = $result['id'];
return new User($result['id'], $result['username'], $result['passwordHash']);
}
return null;
}
// Additional methods as needed, e.g., for password change, user details update, etc.
}