Added permission checks for Buildings and terminations

This commit is contained in:
Frank Schubert
2021-08-05 20:11:15 +02:00
parent 4a74e15300
commit c06bb156c7
18 changed files with 246 additions and 91 deletions

View File

@@ -9,6 +9,8 @@ class User extends mfBaseModel {
public $permissions;
public $flags;
public $address;
private $my_networks;
public function init() {
$this->table = "Worker";
@@ -77,12 +79,27 @@ class User extends mfBaseModel {
if(!$this->id) {
return false;
}
if(is_object($this->permissions) && property_exists($this->permissions, "is$what")) {
return $this->permissions->{"is$what"};
if(!is_array($what)) {
$what = [$what];
}
if(is_object($this->address) && property_exists($this->address, "types") && is_array($this->address->types)) {
return ($this->address->types[$what]->id) ? true : false;
foreach($what as $w) {
if(is_object($this->permissions) && property_exists($this->permissions, "is$w")) {
if($this->permissions->{"is$w"} === true) {
return true;
}
}
//var_dump($this->address->types);exit;
if(is_object($this->address) && property_exists($this->address, "types") && is_array($this->address->types)) {
if($this->address->types[$w]->id) {
return true;
}
}
}
return false;
}
public function isAdmin() {
@@ -96,4 +113,49 @@ class User extends mfBaseModel {
public function __toString() {
return $this->username;
}
public function getProperty($name) {
if($this->$name == null) {
if(!$this->id) {
return null;
}
if($name == "my_networks") {
$this->my_networks = $this->getMyNetworks();
return $this->my_networks;
}
$classname = ucfirst($name);
$idfield = $name."_id";
$this->$name = new $classname($this->$idfield);
if($this->$name->id) {
return $this->$name;
} else {
return null;
}
}
return $this->$name;
}
private function getMyNetworks() {
if(!$this->id) {
return false;
}
$my_networks = [];
$network_list = NetworkAddressModel::search(['address_id' => $this->address_id]);
foreach($network_list as $n) {
if(!array_key_exists($n->network_id, $my_networks)) {
$my_networks[$n->network_id] = new Network($n->network_id);
}
}
return $my_networks;
}
}