예제 #1
0
 /**
  * Check user access to permission
  *
  * @access public
  *
  * @param integer $userId user id
  * @param string $permission checked permission
  * @param array $data for compatible, not used!
  *
  * @return bool
  * @throws \Micro\base\Exception
  */
 public function check($userId, $permission, array $data = [])
 {
     $query = new Query($this->container->db);
     $query->select = '*';
     $query->table = '`acl_user` AS `au`';
     $query->addJoin('`acl_perm` AS  `ap`', '`ap`.`id` =  `au`.`perm`');
     $query->addJoin('`acl_role_perm` AS  `arp`', '`arp`.`role` =  `au`.`role`');
     $query->addJoin('`acl_perm` AS  `ap1`', '`ap1`.`id` =  `arp`.`perm`');
     $query->addWhere('`au`.`user`=' . $userId);
     $query->addWhere('`ap`.`name`=:perm OR `ap1`.`name`=:perm');
     $query->limit = 1;
     $query->params = [':perm' => $permission];
     $query->single = true;
     return (bool) $query->run();
 }