initial code commit
This commit is contained in:
42
Service/UserManager.php
Normal file
42
Service/UserManager.php
Normal file
@@ -0,0 +1,42 @@
|
||||
<?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.
|
||||
}
|
||||
Reference in New Issue
Block a user