false]); const PRIVILEGE_NONE = "none"; const PRIVILEGE_PLAYER = "player"; const PRIVILEGE_CREATOR = "creator"; const PRIVILEGE_QUIZMASTER = "admin"; // TODO: refactor! //function add_user(string $nickname, string $password, string $realname, array $groupids = [], string $privilege = PRIVILEGE_PLAYER): bool //{ // global $userdb; // if (count(get_user($nickname)) != 0) { // user exists // return false; // } // // $user_data = [ // "nickname" => $nickname, // "password" => password_hash($password, PASSWORD_DEFAULT), // "realname" => $realname, // "groups" => $groupids, // "privilege" => $privilege // ]; // foreach ($groupids as $groupid) { // change_group_user_assignments($groupid, $nickname, null); // } // $userdb->insert($user_data); // return true; // user registration successful //} // //function delete_user(string $nickname) //{ // global $userdb; // if ($nickname == QUIZMASTER_NICKNAME) { // return; // } // // $user_data = get_user($nickname); // if (count($user_data) !== 0) { // foreach ($user_data["groups"] as $groupid) { // change_group_user_assignments($groupid, null, $nickname); // } // $userdb->deleteBy(["nickname", "=", $nickname]); // } //} function get_user(string $nickname): array { global $userdb; $user_data_array = $userdb->findBy(["nickname", "=", $nickname]); return count($user_data_array) != 0 ? $user_data_array[0] : []; } function update_user(array $user_data) { global $userdb; return $userdb->update($user_data); } //function change_password(string $nickname, string $old, string $new): bool //{ // $user_data = get_user($nickname); // if (count($user_data) != 0) { // if (password_verify($old, $user_data["password"])) { // $user_data["password"] = password_hash($new, PASSWORD_DEFAULT); // update_user($user_data); // return true; // } // } // return false; //} function change_user_group_assignments(string $nickname, $groupname_add, $groupname_remove) { $user_data = get_user($nickname); if (count($user_data) != 0) { alter_array_contents($user_data["groups"], $groupname_add, $groupname_remove); update_user($user_data); // update user } } //function change_privilege_level(string $nickname, string $privilege) //{ // $user_data = get_user($nickname); // if (count($user_data) != 0) { // $user_data["privilege"] = $privilege; // update_user($user_data); // } //} // //function check_user_credentials(string $nickname, string $password): bool //{ // $user_data = get_user($nickname); // if (count($user_data) != 0) { // return password_verify($password, $user_data["password"]); // } else { // return false; // } //} // //function get_all_users(): array //{ // global $userdb; // return $userdb->findAll(); //} // //function get_all_nicknames() : array { // $nicknames = []; // $user_data_array = get_all_users(); // foreach ($user_data_array as $user_data) { // $nicknames[] = $user_data["nickname"]; // } // return $nicknames; //}