Exemple #1
0
 /**
  * 获取用户及空间信息
  * @return array
  */
 public function getProfile()
 {
     $data = array();
     $data['id'] = $this->user['id'];
     $data['display_name'] = $this->user['nick'];
     $data['user_name'] = $this->user['user_name'];
     $data['avatar'] = $this->user['avatar'];
     $data['nick'] = $this->user['nick'];
     $data['email'] = $this->user['email'];
     $data['space'] = $this->user['space'];
     $data['usedSpace'] = $this->user['usedSpace'];
     $data['used_space'] = $this->user['usedSpace'];
     $data['email'] = $this->user['email'];
     $data['phone'] = $this->user['phone'];
     //这里的信息比较冗余,把站点的逻辑融入到用户信息获得的地方,是为了不让PC客户端发送多次请求
     //打印用户是否是管理员
     $info = array("success" => $this->user["is_admin"]);
     $data['is_admin'] = $info;
     //输出服务器时间
     $info = array("time" => time());
     $data['time'] = $info;
     //获得站点信息
     $app = new SiteService();
     $data['app_info'] = $app->info();
     //是否系统只有默认账号
     $data['only_default_account'] = $app->onlyDefaultAccount();
     //获得授权码信息
     $code = MiniOption::getInstance()->getOptionValue("code");
     if (empty($code)) {
         $code = "";
     }
     $data['code'] = $code;
     return $data;
 }
Exemple #2
0
 /**
  * 静态方法, 单例统一访问入口
  * @return object  返回对象的唯一实例
  */
 public static function getInstance()
 {
     if (is_null(self::$_instance) || !isset(self::$_instance)) {
         self::$_instance = new self();
     }
     return self::$_instance;
 }
Exemple #3
0
 /**
  *
  * Enter 添加用户设备
  * @param int $user_id 用户id
  * @param string $device_uuid 设备唯一值
  * @param string $device_type 设备类型
  * @param string $device_info 设备信息
  * @param string $name 设备名称
  * @return mixed $value 返回true/false
  */
 public function addUserDevices($user_id, $device_uuid, $device_type, $device_info, $device_name)
 {
     $key = "user_device_delete_record";
     $db_manager = MDbManager::getInstance();
     $value = MiniOption::getInstance()->getOptionValue($key);
     $id = "";
     if (isset($value)) {
         $ids = explode(",", $value);
         if (count($ids) > 0) {
             $id = $ids[0];
             unset($ids[0]);
             $newValue = implode(",", $ids);
             MiniOption::getInstance()->setOptionValue($key, $newValue);
         }
     }
     if ($id == "") {
         $created_at = $updated_at = date("Y-m-d H:i:s", time());
         $sql = "INSERT INTO " . DB_PREFIX . "_user_devices(user_id, user_device_type, user_device_name, user_device_info, user_device_uuid, created_at, updated_at)" . " VALUES ({$user_id}, {$device_type}, \"{$device_name}\", \"{$device_info}\", \"{$device_uuid}\", \"{$created_at}\", \"{$updated_at}\")";
     } else {
         $created_at = $updated_at = date("Y-m-d H:i:s", time());
         $sql = "INSERT INTO " . DB_PREFIX . "_user_devices(id,user_id, user_device_type, user_device_name, user_device_info, user_device_uuid, created_at, updated_at)" . " VALUES ({$id},{$user_id}, {$device_type}, \"{$device_name}\", \"{$device_info}\", \"{$device_uuid}\", \"{$created_at}\", \"{$updated_at}\")";
     }
     try {
         $db_manager->insertDb($sql);
     } catch (Exception $e) {
         return false;
     }
     return true;
 }
 /**
 *获得插件信息
 * @param $plugins 插件列表
 * {
    "miniDoc":{}
 * }
 * @return array
 */
 function setPluginInfo($plugins)
 {
     if (empty($plugins)) {
         $plugins = array();
     }
     //读取商业主题设置参数
     $key = "plugin_" . "businessTheme";
     $defaultParams = PluginBusinessThemeOption::getDefaultParams();
     $pluginData = unserialize(MiniOption::getInstance()->getOptionValue($key));
     if (empty($pluginData)) {
         $pluginData = $defaultParams;
     }
     if (empty($pluginData['logo'])) {
         $pluginData['logo'] = $defaultParams['logo'];
     }
     if (empty($pluginData['carouselImagesUrl'])) {
         $pluginData['carouselImagesUrl'] = $defaultParams['carouselImagesUrl'];
     }
     if (empty($pluginData['companyEnglishName'])) {
         $pluginData['companyEnglishName'] = $defaultParams['companyEnglishName'];
     }
     if (empty($pluginData['helpName'])) {
         $pluginData['helpName'] = $defaultParams['helpName'];
     }
     if (empty($pluginData['helpUrl'])) {
         $pluginData['helpUrl'] = $defaultParams['helpUrl'];
     }
     array_push($plugins, array("name" => "businessTheme", "data" => $pluginData));
     return $plugins;
 }
 /**
  * 设置迷你云默认地址,迷你文档服务器下载文件内容需要获得这个地址
  */
 private function setDefault()
 {
     //判断是否在网页启动数据库生成,在command模式下无法获得$_SERVER的值
     if (array_key_exists("SERVER_PORT", $_SERVER)) {
         $host = MiniHttp::getMiniHost();
         MiniOption::getInstance()->setOptionValue("miniyun_host", $host);
     }
 }
 /**
  * 获得迷你云服务器地址
  * 如果用户在options表中定义了{miniyun_host:xxxx},优选它
  * 否则默认为http://127.0.0.1
  */
 public function getMiniyunHost()
 {
     $value = MiniOption::getInstance()->getOptionValue("miniyun_host");
     if (empty($value)) {
         $value = "http://127.0.0.1/";
     }
     return $value;
 }
 /**
  *
  * 获取下载限制的文件个数
  * @since 1.0.0
  */
 public function getLimitSize()
 {
     $limit_size = DownloadPackageConst::DEFAULT_LIMIT_SIZE;
     $size = MiniOption::getInstance()->getOptionValue("download_package_limit_size");
     if (isset($size)) {
         $limit_size = $size;
     }
     return $limit_size;
 }
Exemple #8
0
 /**
  *获取AD信息
  */
 public function getAdInfo()
 {
     $adInfo = array();
     $adInfo['ad_ldap_host'] = MiniOption::getInstance()->getOptionValue('ad_ldap_host');
     $adInfo['ad_ldap_port'] = MiniOption::getInstance()->getOptionValue('ad_ldap_port');
     $adInfo['ad_ldap_base_cn'] = MiniOption::getInstance()->getOptionValue('ad_ldap_base_cn');
     $adInfo['ad_white_list_open'] = MiniOption::getInstance()->getOptionValue('ad_white_list_open');
     $adInfo['ad_sync_department'] = MiniOption::getInstance()->getOptionValue('ad_sync_department');
     $adInfo['ad_coding'] = MiniOption::getInstance()->getOptionValue('ad_coding');
     return $adInfo;
 }
Exemple #9
0
 /**
  *获取LDAP信息
  */
 public function getLdapInfo()
 {
     $ldapInfo = array();
     $ldapInfo['ldap_host'] = MiniOption::getInstance()->getOptionValue('ldap_host');
     $ldapInfo['ldap_port'] = MiniOption::getInstance()->getOptionValue('ldap_port');
     $ldapInfo['ldap_base_cn'] = MiniOption::getInstance()->getOptionValue('ldap_base_cn');
     $ldapInfo['ldap_primary_key'] = MiniOption::getInstance()->getOptionValue('ldap_primary_key');
     $ldapInfo['ldap_nick'] = MiniOption::getInstance()->getOptionValue('ldap_nick');
     $ldapInfo['ldap_department_name'] = MiniOption::getInstance()->getOptionValue('ldap_department_name');
     $ldapInfo['ldap_white_list_open'] = MiniOption::getInstance()->getOptionValue('ldap_white_list_open');
     $ldapInfo['ldap_sync_department'] = MiniOption::getInstance()->getOptionValue('ldap_sync_department');
     $ldapInfo['ldap_coding'] = MiniOption::getInstance()->getOptionValue('ldap_coding');
     return $ldapInfo;
 }
Exemple #10
0
 /**
  * (non-PHPdoc)
  * @see IUserSourceInterface::getUser()
  * 获取用户信息 
  * @since 1.0.0
  */
 public function getUser($userInfo)
 {
     $userName = $userInfo['userName'];
     $password = $userInfo['password'];
     //扩展信息
     $host_str = 'ad_ldap_host';
     $port_str = 'ad_ldap_port';
     $baseCn_str = 'ad_ldap_base_cn';
     $coding_str = 'ad_coding';
     $department_str = 'ad_sync_department';
     $syncDepartment = MiniOption::getInstance()->getOptionValue($department_str);
     $ldapHost = MiniOption::getInstance()->getOptionValue($host_str);
     if ($ldapHost === NULL) {
         $this->errorCode = self::LDAP_INIT_ERROR;
         return false;
     }
     $ldapPort = MiniOption::getInstance()->getOptionValue($port_str);
     if ($ldapPort === NULL) {
         $this->errorCode = self::LDAP_INIT_ERROR;
         return false;
     }
     $ldapBaseCn = MiniOption::getInstance()->getOptionValue($baseCn_str);
     if ($ldapBaseCn === NULL) {
         $this->errorCode = self::LDAP_INIT_ERROR;
         return false;
     }
     $ldapCoding = MiniOption::getInstance()->getOptionValue($coding_str);
     if ($ldapCoding === NULL) {
         $ldapCoding = "GB2312";
     }
     if (empty($ldapHost) || empty($ldapPort) || empty($ldapBaseCn)) {
         $this->errorCode = self::LDAP_INIT_ERROR;
         return false;
     }
     //链接AD服务器
     $ad = new AD();
     $ad->setHost($ldapHost);
     $ad->setFilter($ldapBaseCn);
     $ad->setCoding($ldapCoding);
     $ad->setPort($ldapPort);
     $ad->setSyncDepartment($syncDepartment);
     $result = $ad->getMember($userName, $password);
     if (!$result) {
         $this->errorCode = MConst::ERROR_PASSWORD_INVALID;
         // 用户名不存在
         return false;
     }
     return $result;
 }
 /**
  * 控制器执行主逻辑函数
  * @param $uri 地址
  * @return mixed $value 返回最终需要执行完的结果
  */
 public function invoke($uri = null)
 {
     $user = MUserManager::getInstance()->getCurrentUser();
     $device = MUserManager::getInstance()->getCurrentDevice();
     $data = array();
     $data['user_name'] = $user["user_name"];
     $data['display_name'] = $user["nick"];
     $data['id'] = $user["id"];
     $data['uid'] = $user["user_uuid"];
     $data['space'] = (double) $user["space"];
     $data['used_space'] = (double) $user["usedSpace"];
     $data['email'] = $user["email"];
     $data['phone'] = $user["phone"];
     $data['avatar'] = $user["avatar"];
     $data['mult_user'] = false;
     $data['site_id'] = MiniSiteUtils::getSiteID();
     $data["device_id"] = $device["id"];
     $value = MiniOption::getInstance()->getOptionValue('site_company');
     if (isset($value)) {
         $license['company'] = $value;
     } else {
         $license['company'] = "";
     }
     $license['licensestr'] = "";
     //免费版本
     $license['is_vip'] = false;
     // 目前针对iis服务器,使客户端禁用put协议
     if (isset($_SERVER['SERVER_SOFTWARE']) && strpos(strtolower($_SERVER['SERVER_SOFTWARE']), 'iis') !== false) {
         $data['disable_put'] = true;
     }
     // 32M
     $blockSize = 4 * 1024 * 1024;
     // 内存配置需要
     $mem_limit = CUtils::return_bytes(ini_get('memory_limit'));
     if ($mem_limit < 4 * $blockSize) {
         $blockSize = $mem_limit / 4;
     }
     $postMaxSize = CUtils::return_bytes(ini_get('post_max_size'));
     $uploadMaxFileSize = CUtils::return_bytes(ini_get('upload_max_filesize'));
     $min = $postMaxSize > $uploadMaxFileSize ? $uploadMaxFileSize : $postMaxSize;
     $data['block_size'] = $min > $blockSize ? $blockSize : $min;
     if ($data['block_size'] == $postMaxSize && $data['block_size'] == $uploadMaxFileSize) {
         $data['block_size'] = $data['block_size'] - 104858;
     }
     echo json_encode($data);
 }
Exemple #12
0
 /**
  * 创建用户
  * @param $name
  * @param $password
  * @param $email
  * @throws Exception
  * @return array
  */
 public static function createUser($name, $password, $email)
 {
     //判断系统是否可以注册
     $enableReg = MiniOption::getInstance()->getOptionValue("user_register_enabled");
     if (isset($enableReg) && $enableReg == "0") {
         throw new MiniException(1000);
     }
     $isExtend = apply_filters("license_user_extend");
     if ($isExtend === 1) {
         throw new MiniException(1003);
     }
     $data = array();
     //参数完整性检测
     if (empty($name) || strlen($name) > 255) {
         throw new MiniException(1000);
     }
     if (empty($password)) {
         throw new MiniException(1001);
     }
     if (!empty($email)) {
         //TODO check email rule
     }
     //唯一性检测
     $user = MiniUser::getInstance()->getUserByName($name);
     if (!empty($user)) {
         throw new MiniException(1002);
     }
     //创建用户
     $userData = array();
     $userData['name'] = $name;
     $userData['password'] = $password;
     if (!empty($email)) {
         $extend = array();
         $extend["email"] = $email;
         $userData["extend"] = $extend;
     }
     $user = MiniUser::getInstance()->create($userData);
     if (empty($user)) {
         return $data;
     }
     return $data;
 }
Exemple #13
0
 /**
  * 获得当前用户
  * @return array|null
  */
 public function getUser()
 {
     if (isset($this->user)) {
         return $this->user;
     }
     $user = MUserManager::getInstance()->getCurrentUser();
     if (!empty($user)) {
         $user = MiniUser::getInstance()->getUser($user["id"]);
         $data = array();
         $data['user_uuid'] = $user["user_uuid"];
         $data['user_name'] = $user["user_name"];
         $data['display_name'] = $user["nick"];
         $data['space'] = (double) $user["space"];
         $data['used_space'] = (double) $user["usedSpace"];
         $data['email'] = $user["email"];
         $data['phone'] = $user["phone"];
         $data['avatar'] = $user["avatar"];
         $data['is_admin'] = $user["is_admin"];
         $data['code'] = MiniOption::getInstance()->getOptionValue("code");
         $this->user = $data;
         return $data;
     }
     return NULL;
 }
Exemple #14
0
 /**
  * 系统空间是否还有剩余
  */
 public static function hasOverSysSpace()
 {
     $value = MiniOption::getInstance()->getOptionValue("site_sys_space");
     if (isset($value) && $value > 0) {
         $usedSpace = MiniVersion::getInstance()->getTotalSize();
         $overSpace = $value * 1024 * 1024 - $usedSpace;
         if ($overSpace < 0) {
             return false;
         }
     }
     return true;
 }
Exemple #15
0
 /**
  * extend
  */
 public function getExtendTactics()
 {
     $editors = MiniOption::getInstance()->getOptionValue('online_editor');
     $editors = unserialize($editors);
     return $editors;
 }
Exemple #16
0
 /**
  *
  * 获得微信信息加密的Token
  * @since 1.0.7
  */
 public static function getWxToken()
 {
     $wxToken = MiniOption::getInstance()->getOptionValue("wx_token");
     if ($wxToken === NULL) {
         $wxToken = md5(MiniUtil::random(32));
         MiniOption::getInstance()->setOptionValue("wx_token", $wxToken);
     }
     return $wxToken;
 }
 /**
  *商业般主题插件获得参数
  *
  */
 public function getParams()
 {
     $key = "plugin_" . "businessTheme";
     $value = MiniOption::getInstance()->getOptionValue($key);
     $defaultParams = PluginBusinessThemeOption::getDefaultParams();
     if (!empty($value)) {
         $pluginData = unserialize($value);
     } else {
         $pluginData = $defaultParams;
     }
     if (empty($pluginData['logo'])) {
         $pluginData['logo'] = $defaultParams['logo'];
     }
     if (empty($pluginData['carouselImagesUrl'])) {
         $pluginData['carouselImagesUrl'] = $defaultParams['carouselImagesUrl'];
     }
     if (empty($pluginData['companyEnglishName'])) {
         $pluginData['companyEnglishName'] = $defaultParams['companyEnglishName'];
     }
     if (empty($pluginData['helpName'])) {
         $pluginData['helpName'] = $defaultParams['helpName'];
     }
     if (empty($pluginData['helpUrl'])) {
         $pluginData['helpUrl'] = $defaultParams['helpUrl'];
     }
     return $pluginData;
 }
Exemple #18
0
 /**
  * 获得被删除的ID,如果没有删除的记录,则返回空值
  */
 public function getTemporaryId()
 {
     $key = MiniUser::$OPTION_KEY;
     $value = MiniOption::getInstance()->getOptionValue($key);
     $id = "";
     if (isset($value) && !empty($value)) {
         $ids = explode(",", $value);
         if (count($ids) > 0) {
             $id = $ids[0];
             unset($ids[0]);
             //把新值保存到db中
             MiniOption::getInstance()->setOptionValue($key, implode(",", $ids));
         }
     }
     return $id;
 }
Exemple #19
0
 public function getCodeByUserId()
 {
     $data = MiniOption::getInstance()->getOptionValue("code");
     return $data;
 }
Exemple #20
0
 /**
  *
  * 此后都是用MiniOption::getInstance()->getOptionValue替代
  * 现在之所以存在是因为很多Module采用这样的接口模式
  * @param string $key
  * @deprecated
  */
 public function getOptionValue($key)
 {
     return MiniOption::getInstance()->getOptionValue($key);
 }
Exemple #21
0
 /**
  *
  * 获取默认总空间大小
  */
 public static function defaultTotalSize()
 {
     $total = DEFAULT_USER_SPACE * 1024 * 1024;
     $value = MiniOption::getInstance()->getOptionValue("site_default_space");
     if (isset($value)) {
         $total = doubleval($value) * 1024 * 1024;
     }
     return $total;
 }
 /**
  * 同步所有域帐号
  */
 public function actionSyncUsers()
 {
     $ldapInfo = array();
     $userSource = apply_filters('third_user_source', false);
     if ($userSource == false) {
         echo 'LDAP插件未启用';
         exit;
     }
     $ldapInfo['ldap_host'] = MiniOption::getInstance()->getOptionValue('ldap_host');
     $ldapInfo['ldap_port'] = MiniOption::getInstance()->getOptionValue('ldap_port');
     $ldapInfo['ldap_base_cn'] = MiniOption::getInstance()->getOptionValue('ldap_base_cn');
     $ldapInfo['ldap_primary_key'] = MiniOption::getInstance()->getOptionValue('ldap_primary_key');
     $ldapInfo['ldap_nick'] = MiniOption::getInstance()->getOptionValue('ldap_nick');
     $ldapInfo['department_alias'] = MiniOption::getInstance()->getOptionValue('ldap_department_name');
     $ldapInfo['ldap_test_user_name'] = MiniOption::getInstance()->getOptionValue('ldap_test_user_name');
     $ldapInfo['ldap_test_password'] = MiniOption::getInstance()->getOptionValue('ldap_test_password');
     $ldapInfo['ldap_sync_department'] = MiniOption::getInstance()->getOptionValue('ldap_sync_department');
     foreach ($ldapInfo as $info) {
         if (empty($info)) {
             echo 'LDAP插件未设置!';
             exit;
         }
     }
     $ldapUsrDom = "@" . $this->getLdapHost($ldapInfo['ldap_base_cn']);
     $ldapConn = @ldap_connect($ldapInfo['ldap_host'], $ldapInfo['ldap_port']);
     @ldap_set_option($ldapConn, LDAP_OPT_PROTOCOL_VERSION, 3);
     @ldap_set_option($ldapConn, LDAP_OPT_REFERRALS, 0);
     // @ldap_bind($ldapConn,iconv('utf-8', $ldapInfo['ldap_coding'],$ldapInfo['ldap_test_user_name'].$ldapUsrDom),$ldapInfo['ldap_test_password']); //验证账号与密码
     @ldap_bind($ldapConn);
     $attrItems = array("ou", "dn", "mail", "telephoneNumber", $ldapInfo['ldap_nick'], "useraccountcontrol", $ldapInfo['department_alias']);
     $results = @ldap_search($ldapConn, $ldapInfo['ldap_base_cn'], "(|(sn=*)(givenname=*))", $attrItems);
     $entries = @ldap_get_entries($ldapConn, $results);
     $results2 = @ldap_search($ldapConn, $ldapInfo['ldap_base_cn'], "(ou=*)", $attrItems);
     $entries2 = @ldap_get_entries($ldapConn, $results2);
     foreach ($entries as $key => $entry) {
         $userData = array();
         $extend = array();
         if (!empty($entry['dn'])) {
             $userData['user_status'] = 1;
             $dn = $entry['dn'];
             $cn = explode(',', $dn)[0];
             $department = $this->getDepartment($dn);
             $userName = explode('=', $cn)[1];
             $userData['nick'] = $userName;
             $userData['name'] = $userName;
             if (!empty($entry['telephonenumber'])) {
                 $extend['phone'] = $entry['telephonenumber'][0];
             }
             if (!empty($entry[$ldapInfo['ldap_nick']])) {
                 $extend['nick'] = $entry[$ldapInfo['ldap_nick']][0];
             }
             if (!empty($entry['mail'])) {
                 $extend['email'] = $entry['mail'][0];
             }
             if (!empty($entry['dn'])) {
                 $extend['dn'] = $entry['dn'];
             }
             if (!empty($extend)) {
                 $userData['extend'] = $extend;
             }
         }
         if (!empty($userData)) {
             MiniUser::getInstance()->create($userData);
             echo '已导入:' . $userData['name'] . "\n";
             if ($key + 1 == $entries['count']) {
                 echo '共导入' . $entries['count'] . "位用户\n";
             }
             if ($ldapInfo['ldap_sync_department'] != 'false' && !empty($department)) {
                 $this->importDepartment($userName, $department, $entries2, $ldapInfo['department_alias']);
             }
         }
     }
 }
Exemple #23
0
 /**
  *
  * 设置参数
  *
  */
 private function renewOptions($params)
 {
     //用户基础地址
     $baseUri = CUtils::getBaseUrl();
     $options = MiniOption::getInstance()->getOptions();
     foreach ($options as $key => $option) {
         $key = $option["option_name"];
         $value = $option["option_value"];
         if ("site_name" == $key) {
             $params["siteName"] = $value;
             $params["name"] = $value;
         } else {
             if ("skin" == $key) {
                 $params["skinUrl"] = $baseUri . "/static/skin/" . $value . "/";
                 $params["skin"] = $value;
             } else {
                 if ("site_title" == $key) {
                     $params["siteTitle"] = $value;
                     $params["title"] = $value;
                 } else {
                     if ("site_logo_url" == $key) {
                         $params["logo"] = $value;
                         $params["siteLogo"] = $value;
                     } else {
                         if ("site_logo_small_url" == $key) {
                             $params["logoSmall"] = $value;
                             $params["siteLogoSmall"] = $value;
                         } else {
                             if ("site_default_space" == $key) {
                                 $params["defaultSpace"] = $value;
                             } else {
                                 if ("site_sys_space" == $key) {
                                     $params["sysSpace"] = $value;
                                 } else {
                                     if ("site_company" == $key) {
                                         $params["company"] = $value;
                                     } else {
                                         if ("user_register_enabled" == $key) {
                                             $params["enabledReigster"] = $value == "1" ? true : false;
                                         } else {
                                             if ("user_create_url" == $key && !empty($value)) {
                                                 $params["registerUrl"] = $value;
                                             } else {
                                                 if ("user_getpwd_url" == $key && !empty($value)) {
                                                     $params["getpwUrl"] = $value;
                                                 } else {
                                                     if ("mail_enabled_email" == $key) {
                                                         $params["enableMail"] = $value;
                                                     } else {
                                                         if ("mid" == $key) {
                                                             $params["mid"] = $value;
                                                         } else {
                                                             if ("default_permission" == $key) {
                                                                 $params["permission"] = unserialize($value);
                                                             }
                                                         }
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     return $params;
 }
 /**
  * 修改editor
  */
 public function updateEditor($selectExtend, $extend, $firstMethod, $secondMethod, $editorTip)
 {
     $data = array();
     $data['extend'] = $extend;
     $data['first_method'] = $firstMethod;
     if ($secondMethod != '') {
         $data['second_method'] = $secondMethod;
     }
     if ($editorTip != '') {
         $data['editor_tip'] = $editorTip;
     }
     $editors = MiniOption::getInstance()->getOptionValue('online_editor');
     $editors = unserialize($editors);
     if (strpos($extend, '/')) {
         $extends = explode('/', $extend);
         foreach ($editors as $key => $editor) {
             if ($editor['extend'] == $selectExtend) {
                 $i = $key;
                 $data['enabled'] = $editor['enabled'];
                 continue;
             }
             $extendStr = $editor['extend'];
             if (strpos($extendStr, "/")) {
                 $extendArr = explode('/', $extendStr);
                 $dataFix = array_intersect($extendArr, $extends);
                 if (count($dataFix) != 0) {
                     return false;
                 }
             } else {
                 foreach ($extends as $extend) {
                     if ($extend == $extendStr) {
                         return false;
                     }
                 }
             }
         }
     } else {
         foreach ($editors as $key => $editor) {
             if ($editor['extend'] == $selectExtend) {
                 $i = $key;
                 $data['enabled'] = $editor['enabled'];
                 continue;
             }
             $extendStr = $editor['extend'];
             if (strpos($extendStr, "/")) {
                 $extendArr = explode('/', $extendStr);
                 for ($j = 0; $j <= count($extendArr) - 1; $j++) {
                     if ($extendArr[$j] == $extend) {
                         return false;
                     }
                 }
             } else {
                 if ($extendStr == $extend) {
                     return false;
                 }
             }
         }
     }
     $items = array();
     $items[] = $data;
     array_splice($editors, $i, 1, $items);
     MiniOption::getInstance()->setOptionValue('online_editor', serialize($editors));
     return true;
 }
 public function mateCodeData($meatArr)
 {
     return MiniOption::getInstance()->setOptionValue("code", $meatArr);
 }
Exemple #26
0
 /**
  * 获得被删除的ID,如果没有删除的记录,则返回空值
  */
 public function getTemporaryId()
 {
     $key = MiniUserDevice::$OPTION_KEY;
     $value = MiniOption::getInstance()->getOptionValue($key);
     $id = "";
     if (isset($value)) {
         $ids = explode(",", $value);
         if (count($ids) > 0) {
             $id = $ids[0];
             unset($ids[0]);
             $newValue = implode(",", $ids);
             MiniOption::getInstance()->setOptionValue($key, $newValue);
         }
     }
     return $id;
 }
Exemple #27
0
 /**
  * 根据用户名+密码查询账号是否在AD服务器中
  * @param string $userName
  * @param string $password
  * @return array|bool
  */
 function getMember($userName, $password)
 {
     $adWhiteListOpen = MiniOption::getInstance()->getOptionValue('ad_white_list_open');
     if ($adWhiteListOpen == 'true') {
         $user = MiniUser::getInstance()->getUserByName($userName);
         if (empty($user)) {
             $this->code = -2;
             return false;
         }
     }
     $ldapUsrDom = "@" . $this->getHost();
     $userName = str_replace($ldapUsrDom, "", $userName);
     $ldapConn = @ldap_connect($this->host, $this->port);
     if (!$ldapConn) {
         $this->code = -1;
         #服务器无法连接
         return false;
     }
     @ldap_set_option($ldapConn, LDAP_OPT_PROTOCOL_VERSION, 3);
     @ldap_set_option($ldapConn, LDAP_OPT_REFERRALS, 0);
     $loginResult = @ldap_bind($ldapConn, iconv('utf-8', $this->coding, $userName . $ldapUsrDom), $password);
     //验证账号与密码
     if (!$loginResult) {
         $this->code = -2;
         #测试帐号与密码错误
         return false;
     }
     $dn = $this->filter;
     $attrItems = array("ou", "sn", "mail", "telephonenumber", "displayname", "department");
     $query = "(&(userprincipalname=" . iconv('utf-8', $this->coding, $userName . $ldapUsrDom) . "))";
     //验证账号是否在过滤条件中
     $results = @ldap_search($ldapConn, $dn, $query, $attrItems);
     $entries = @ldap_get_entries($ldapConn, $results);
     if ($entries['count'] == 0) {
         $this->code = -2;
         #测试帐号与密码错误
         return false;
     }
     $output = array();
     $extend = array();
     $extend["nick"] = $userName;
     $output["user_name"] = $userName;
     if ($entries['count'] != 0) {
         $entries = @ldap_get_entries($ldapConn, $results);
         array_shift($entries);
         if (count($entries) > 0) {
             //获得更加详细的信息
             $entry = $entries[0];
             $phoneInfo = $this->getValue("telephonenumber", $entry);
             //获得电话号码
             if ($phoneInfo != null) {
                 $extend["phone"] = $phoneInfo;
             }
             $displayNameInfo = $this->getValue("displayname", $entry);
             //获得昵称与全名
             if ($displayNameInfo != null) {
                 $extend["nick"] = $displayNameInfo;
             } else {
                 $extend["nick"] = $userName;
             }
             $mailInfo = $this->getValue("mail", $entry);
             //获得电子邮件
             if ($mailInfo != null) {
                 $extend["email"] = $mailInfo;
             }
             if ($this->syncDepartment != 'false') {
                 $department = $this->getValue("dn", $entry);
                 //获得昵称与全名
                 if ($department != null) {
                     $departmentInfo = $this->getDevelopment($department);
                     if (!empty($departmentInfo)) {
                         $output['departmentData'][0][] = $departmentInfo;
                         $output['departmentData'][0][] = $userName;
                     }
                 }
             }
         }
     }
     $output["extend"] = $extend;
     ldap_close($ldapConn);
     return $output;
 }
 /**
  * 同步所有域帐号
  */
 public function actionSyncUsers()
 {
     $adInfo = array();
     $userSource = apply_filters('third_user_source', false);
     if ($userSource == false) {
         echo 'AD插件未启用';
         exit;
     }
     $adInfo['ad_ldap_host'] = MiniOption::getInstance()->getOptionValue('ad_ldap_host');
     $adInfo['ad_ldap_port'] = MiniOption::getInstance()->getOptionValue('ad_ldap_port');
     $adInfo['ad_ldap_base_cn'] = MiniOption::getInstance()->getOptionValue('ad_ldap_base_cn');
     $adInfo['ad_test_user_name'] = MiniOption::getInstance()->getOptionValue('ad_test_user_name');
     $adInfo['ad_test_password'] = MiniOption::getInstance()->getOptionValue('ad_test_password');
     $adInfo['ad_sync_department'] = MiniOption::getInstance()->getOptionValue('ad_sync_department');
     foreach ($adInfo as $info) {
         if (empty($info)) {
             echo 'AD插件未设置!';
             exit;
         }
     }
     $ldapUsrDom = "@" . $this->getAdHost($adInfo['ad_ldap_base_cn']);
     $ldapConn = @ldap_connect($adInfo['ad_ldap_host'], $adInfo['ad_ldap_port']);
     @ldap_set_option($ldapConn, LDAP_OPT_PROTOCOL_VERSION, 3);
     @ldap_set_option($ldapConn, LDAP_OPT_REFERRALS, 0);
     @ldap_bind($ldapConn, iconv('utf-8', $adInfo['ad_coding'], $adInfo['ad_test_user_name'] . $ldapUsrDom), $adInfo['ad_test_password']);
     //验证账号与密码
     $attrItems = array("ou", "dn", "mail", "telephonenumber", "displayname", "useraccountcontrol");
     $results = @ldap_search($ldapConn, $adInfo['ad_ldap_base_cn'], "(|(sn=*)(givenname=*))", $attrItems);
     $entries = @ldap_get_entries($ldapConn, $results);
     foreach ($entries as $entry) {
         $userData = array();
         $extend = array();
         if (!empty($entry['dn'])) {
             $userStatusNum = $entry['useraccountcontrol'][0];
             if ($userStatusNum == '66050') {
                 $userData['user_status'] = 0;
             } else {
                 $userData['user_status'] = 1;
             }
             $dn = $entry['dn'];
             $cn = explode(',', $dn)[0];
             $department = $this->getDepartment($dn);
             $userName = explode('=', $cn)[1];
             $userData['nick'] = $userName;
             $userData['name'] = $userName;
             if (!empty($entry['telephonenumber'])) {
                 $extend['phone'] = $entry['telephonenumber'][0];
             }
             if (!empty($entry['displayname'])) {
                 $extend['nick'] = $entry['displayname'][0];
             }
             if (!empty($entry['mail'])) {
                 $extend['email'] = $entry['mail'][0];
             }
             if (!empty($extend)) {
                 $userData['extend'] = $extend;
             }
         }
         if (!empty($userData)) {
             MiniUser::getInstance()->create($userData);
             if ($adInfo['ad_sync_department'] != 'false' && !empty($department)) {
                 $this->importDepartment($userName, $department);
             }
         }
     }
 }
Exemple #29
0
 /**
  * 停用插件
  * @param $id
  * @return array
  */
 public function disablePlugin($id)
 {
     $data = array();
     $value = MiniOption::getInstance()->getOptionValue("active_plugins");
     if ($value === NULL) {
         $data["success"] = false;
         return $data;
     }
     $list = (array) unserialize($value);
     //卸载插件
     unset($list[$id]);
     //将剩下的插件写入到db中
     MiniOption::getInstance()->setOptionValue("active_plugins", serialize($list));
     $data["success"] = true;
     return $data;
 }