public function isAllowed($module, $permissionLevel, $element = null, $entity = null)
 {
     if ($this->user->getRole() == "admin") {
         return true;
     }
     if (!isset($this->roles[$this->user->getRole()])) {
         return false;
     }
     $role = $this->roles[$this->user->getRole()];
     $allowed = false;
     if (!isset($role['modules'][$module])) {
         return false;
     }
     if ($role['modules'][$module]['global'] >= $permissionLevel) {
         $allowed = true;
     }
     if ($element && isset($role['modules'][$module]['elements'][$element])) {
         if ($role['modules'][$module]['elements'][$element] > $role['modules'][$module]['global']) {
             throw new \Exception("You cannot set element permission bigger than global permission.");
         } else {
             if ($role['modules'][$module]['elements'][$element] >= $permissionLevel) {
                 $allowed = true;
             } else {
                 $allowed = false;
             }
         }
     }
     return $allowed;
 }