listUser = []; $this->loadUsers(); } /** * Add a new user to the list of users. * * @param string $login The login name of the new user. * @param string $password The password of the new user. * @param string $role The role of the new user. * * @return bool True if the user was successfully added, false otherwise. */ public function addUser(string $login, string $password, string $role): bool { if ($this->listUser[$login]) { return false; } $newUser = [$login => ['password' => password_hash($password, PASSWORD_DEFAULT), 'role' => $role]]; $listUser = array_merge($newUser, $this->listUser); $yaml = Yaml::dump($listUser); return file_put_contents('../data/users.yaml', $yaml); } /** * Load the users from the YAML file. * * @return void */ private function loadUsers() { if (file_exists('../data/users.yaml')) { $listUser = Yaml::parseFile('../data/users.yaml'); if (!empty($listUser)) { $this->listUser = $listUser; } } } /** * Log in a user with the given credentials. * * @param string $user The username. * @param string $password The password. * * @return bool True if the user is logged in successfully, false otherwise. */ public function logIn(string $user, string $password): bool { if ($this->listUser[$user] && password_verify($password, $this->listUser[$user]['password'])) { $_SESSION['isLogged'] = true; return true; } return false; } /** * Log out the user and redirect to the index page. * * @return void */ static function logOut(): void { session_destroy(); header("Location: index.php"); } /** * Check if the user is logged in. * * @return bool True if the user is logged in, false otherwise. */ static function isLogged(): bool { if (isset($_SESSION['isLogged']) && $_SESSION['isLogged'] === true) { return true; } return false; } }