SpreadQuiz/usermgr.php

119 lines
3.3 KiB
PHP

<?php
require_once "globals.php";
require_once "common_func.php";
require_once "controller.php";
$userdb = new \SleekDB\Store(USERDB, DATADIR, ["timeout" => 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;
//}