119 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			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;
 | 
						|
//}
 |