From 57f32af71a98b45c53bb9c05bc45a6d40a3cd392 Mon Sep 17 00:00:00 2001 From: Collin Date: Tue, 12 Mar 2024 14:12:47 +0000 Subject: [PATCH] Update PluginManager, add PluginBase and add SetRole() function --- src/LonaDB/Plugins/PluginBase.php | 30 ++++++++++++++++++++++++++++ src/LonaDB/Plugins/PluginManager.php | 8 ++++---- src/LonaDB/Users/UserManager.php | 15 +++++++++++--- 3 files changed, 46 insertions(+), 7 deletions(-) create mode 100644 src/LonaDB/Plugins/PluginBase.php diff --git a/src/LonaDB/Plugins/PluginBase.php b/src/LonaDB/Plugins/PluginBase.php new file mode 100644 index 0000000..73e7543 --- /dev/null +++ b/src/LonaDB/Plugins/PluginBase.php @@ -0,0 +1,30 @@ +LonaDB = $LonaDB; + $this->Name = $name; + + $this->GetLogger()->Load("Loading Plugin '" . $this->Name . "'"); + } + + public function onEnable() : void { + $this->GetLogger()->Info("Plugin '" . $this->Name . "' has been loaded"); + } + + final public function GetLonaDB() : LonaDB { return $this->LonaDB; } + + final public function GetName() : string { return $this->Name; } + + final private function GetLogger() : Logger { return $this->LonaDB->Logger; } +} \ No newline at end of file diff --git a/src/LonaDB/Plugins/PluginManager.php b/src/LonaDB/Plugins/PluginManager.php index 71201f8..74f9a8c 100644 --- a/src/LonaDB/Plugins/PluginManager.php +++ b/src/LonaDB/Plugins/PluginManager.php @@ -39,9 +39,9 @@ class PluginManager{ try{ $this->load_classphp($path, $phar); - eval("\$this->Plugins[\$conf['name']] = new " . $conf['main']['namespace'] . "\\" . $conf['main']['class'] . "();"); + eval("\$this->Plugins[\$conf['name']] = new " . $conf['main']['namespace'] . "\\" . $conf['main']['class'] . "(\$this->LonaDB, \$conf['name']);"); - $this->Plugins[$conf['name']]->onEnable($this->LonaDB); + $this->Plugins[$conf['name']]->onEnable(); } catch(e){ $this->LonaDB->Logger->Error("Could not load main file for plugin '" . $conf['name'] . "'"); @@ -76,9 +76,9 @@ class PluginManager{ $phar->stopBuffering(); } - eval("\$this->Plugins[\$conf['name']] = new " . $conf['main']['namespace'] . "\\" . $conf['main']['class'] . "();"); + eval("\$this->Plugins[\$conf['name']] = new " . $conf['main']['namespace'] . "\\" . $conf['main']['class'] . "(\$this->LonaDB, \$conf['name']);"); - $this->Plugins[$conf['name']]->onEnable($this->LonaDB); + $this->Plugins[$conf['name']]->onEnable(); } catch(e){ $this->LonaDB->Logger->Error("Could not load main file for plugin '" . $conf['name'] . "'"); diff --git a/src/LonaDB/Users/UserManager.php b/src/LonaDB/Users/UserManager.php index ab403b7..3ddb34c 100644 --- a/src/LonaDB/Users/UserManager.php +++ b/src/LonaDB/Users/UserManager.php @@ -30,7 +30,7 @@ class UserManager{ $this->Users = json_decode(openssl_decrypt($parts[0], AES_256_CBC, $this->LonaDB->config["encryptionKey"], 0, base64_decode($parts[1])), true); } - public function CheckPassword(string $name, string $password) : bool { + public function CheckPassword(string $name = "", string $password = "") : bool { if($name === "root" && $password === $this->LonaDB->config["root"]) return true; if(!$this->Users[$name]) { @@ -52,7 +52,7 @@ class UserManager{ $users = []; foreach($this->Users as $name => $user){ - array_push($users, $name); + $users[$name] = $this->GetRole($name); } return $users; @@ -95,6 +95,15 @@ class UserManager{ return true; } + public function SetRole(string $name, string $role) : bool { + if($name === "root") return false; + if(!$this->CheckUser($name)) return false; + + $this->Users[$name]['role'] = $role; + $this->Save(); + return true; + } + public function GetRole(string $name) : string { if($name === "root") return "Superuser"; if(!$this->CheckUser($name)) return ""; @@ -144,4 +153,4 @@ class UserManager{ $encrypted = openssl_encrypt(json_encode($this->Users), AES_256_CBC, $this->LonaDB->config["encryptionKey"], 0, $iv); file_put_contents("./data/Users.lona", $encrypted.":".base64_encode($iv)); } -} \ No newline at end of file +}