<?php /** * 判断是否有管理权限 */ namespace Rpc\Controller\Competence; use Common\Common\Cache; use Common\Common\Department; use Common\Service\InviteSettingService; use VcySDK\EnterprisePlugin; use VcySDK\Service; class AuthorityController extends AbstractController { /** * @param $user (API)$this->_login->user * @return array|bool */ public function Index() { $user = $this->get_arguments(); if (empty($user)) { return [false, false]; } $powers = array($user['memUid']); if (!empty($user['job'])) { $powers[] = $user['job']['jobId']; } if (!empty($user['role'])) { $powers[] = $user['role']['roleId']; } if (!empty($user['dpName'])) { $department = Department::instance(); foreach ($user['dpName'] as $item) { $parentDpIds[$item['dpId']] = $item['dpId']; $department->list_parent_cdids($item['dpId'], $parentDpIds); $powers = array_merge($powers, array_values($parentDpIds)); } } $settingServ = new InviteSettingService(); $data = $settingServ->get_by_conds([]); $settings = Cache::instance()->get('Common.AppSetting'); $result = [ // 管理人员权限 false, // 邀请人员权限 false ]; // 管理人员 权限 if (array_intersect($powers, $settings['manageAuths']['value']['auths'])) { $result[0] = true; } // 邀请人员 权限 if (array_intersect($powers, unserialize($data['invite_udpids'])['auths'])) { $result[1] = true; } // 通讯录是否安装 也会决定 管理人员和邀请人员的权限 $enterprisePluginSdk = new EnterprisePlugin(Service::instance()); $pluginList = $enterprisePluginSdk->listAll(); $pluginList = array_combine_by_key($pluginList, 'plIdentifier'); $contactInstalled = $pluginList['contact']['available'] == EnterprisePlugin::AVAILABLE_OPEN; $result[1] = $result[1] && $contactInstalled; // 返回 通讯录是否安装 $result[2] = $contactInstalled; return $result; } }