test
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

98 lines
2.7 KiB

<?php
namespace We7\Table\Users;
class Permission extends \We7Table {
protected $tableName = 'users_permission';
protected $primaryKey = 'id';
protected $field = array(
'uniacid',
'uid',
'type',
'permission',
'url',
);
protected $default = array(
'uniacid' => '',
'uid' => '',
'type' => '',
'permission' => '',
'url' => '',
);
public $notModuleTypes = array(
PERMISSION_ACCOUNT,
PERMISSION_WXAPP,
PERMISSION_WEBAPP,
PERMISSION_PHONEAPP,
PERMISSION_ALIAPP,
PERMISSION_BAIDUAPP,
PERMISSION_TOUTIAOAPP,
PERMISSION_SYSTEM,
PERMISSION_MODULES
);
public function getUserPermissionByType($uid, $uniacid, $type = '') {
$this->query->where('uid', $uid)->where('uniacid', $uniacid);
if (!empty($type)) {
$this->query->where('type', $type);
}
$result = $this->query->get();
if (!empty($result['permission'])) {
$result['permission'] = explode('|', $result['permission']);
}
return $result;
}
public function getAllUserPermission($uid, $uniacid) {
return $this->query->where('uid', $uid)
->where('uniacid', $uniacid)->getall('type');
}
public function getAllUserModulePermission($uid, $uniacid = 0) {
if (!empty($uniacid)) {
$this->query->where('uniacid', $uniacid);
}
return $this->query->where('uid', $uid)
->where('type !=', array(PERMISSION_ACCOUNT, PERMISSION_WXAPP, PERMISSION_WEBAPP, PERMISSION_PHONEAPP, PERMISSION_ALIAPP, PERMISSION_BAIDUAPP, PERMISSION_TOUTIAOAPP, PERMISSION_SYSTEM))->getall('type');
}
public function getClerkPermission($module) {
global $_W;
return $this->query->from('users_permission', 'p')->leftjoin('uni_account_users', 'u')->on(array('u.uid' => 'p.uid', 'u.uniacid' => 'p.uniacid'))->where('u.role', 'clerk')->where('p.type', $module)->where('u.uniacid', $_W['uniacid'])->getall('uid');
}
public function getClerkPermissionList($uniacid = 0, $uid = 0, $username = '') {
$this->query->from('users_permission', 'p')
->select('p.*')
->leftjoin('uni_account_users', 'u')
->on(array('u.uid' => 'p.uid', 'u.uniacid' => 'p.uniacid'))
->where('u.role', 'clerk');
if (!empty($uniacid)) {
$this->query->where('u.uniacid', $uniacid);
}
if (!empty($uid)) {
$this->query->where('u.uid', $uid);
}
if (!empty($username)) {
$this->query->leftjoin('users', 's')
->on(array('s.uid' => 'p.uid'))
->where('s.username like', "%$username%");
}
if (empty($module)) {
$this->query->where('p.type !=', $this->notModuleTypes);
} else {
$this->query->where('p.type', $module);
}
return $this->query->getall();
}
public function searchWithUniAccountUsers() {
return $this->query->from($this->tableName, 'p')
->leftjoin('uni_account_users', 'u')
->on(array(
'p.uid' => 'u.uid',
'p.uniacid' => 'u.uniacid'
));
}
}