示例#1
0
文件: User.php 项目: bjtenao/tudu-web
 /**
  * 创建用户
  */
 public function create(array $params)
 {
     $isImport = !empty($params['import']) ? true : false;
     // 组织ID必须有
     if (empty($params['orgid'])) {
         require_once 'Model/User/Exception.php';
         throw new Model_User_Exception('Missing or invalid value of parameter "orgid"', self::CODE_INVALID_ORGID);
     }
     $orgId = $params['orgid'];
     /* @var $daoOrg Dao_Md_Org_Org */
     $daoOrg = Tudu_Dao_Manager::getDao('Dao_Md_Org_Org', Tudu_Dao_Manager::DB_MD);
     /* @var $daoUser Dao_Md_User_User */
     $daoUser = Tudu_Dao_Manager::getDao('Dao_Md_User_User', Tudu_Dao_Manager::DB_MD);
     if ($isImport) {
         if (!empty($params['exist-parentid'])) {
             require_once 'Model/User/Exception.php';
             throw new Model_User_Exception('Parent dept is not exists', self::CODE_DEPT_PARENT_NOTEXISTS);
         }
         if (!empty($params['deptid']) && $params['deptid'] == '^new') {
             require_once 'Model/User/Exception.php';
             throw new Model_User_Exception('Create dept failed', self::CODE_SAVE_DEPT_FAILED);
         }
     }
     // 读取组织信息
     $org = $daoOrg->getOrg(array('orgid' => $orgId));
     if ($isImport) {
         $params['password'] = $org->defaultPassword;
     }
     // 组织用户是否已达到上限
     if ($org->maxUsers && $org->maxUsers <= $daoOrg->getUserCount($orgId)) {
         require_once 'Model/User/Exception.php';
         throw new Model_User_Exception('This organization is too much users', self::CODE_TOO_MUCH_USER);
     }
     // 用户名
     if (empty($params['userid'])) {
         require_once 'Model/User/Exception.php';
         throw new Model_User_Exception('Missing the value of parameter "userid"', self::CODE_MISSING_UID);
     }
     $userId = $params['userid'];
     $address = $userId . '@' . $orgId;
     $uniqueId = Dao_Md_User_User::getUniqueId($orgId, $userId);
     // 用户名格式验证
     if (!Oray_Function::isDomainStr($userId)) {
         require_once 'Model/User/Exception.php';
         throw new Model_User_Exception('Invalid value of parameter "userid"', self::CODE_INVALID_UID);
     }
     // 密码
     if (empty($params['password'])) {
         require_once 'Model/User/Exception.php';
         throw new Model_User_Exception('Missing or invalid value of parameter "password"', self::CODE_INVALID_PWD);
     }
     // 用户真实姓名
     if (empty($params['truename'])) {
         require_once 'Model/User/Exception.php';
         throw new Model_User_Exception('Missing or invalid value of parameter "truename"', self::CODE_INVALID_USERNAME);
     }
     // 邮箱格式有误
     if (!empty($params['email']) && !Oray_Function::isEmail($params['email'])) {
         require_once 'Model/User/Exception.php';
         throw new Model_User_Exception('Invalid value of parameter "email"', self::CODE_INVALID_EMAIL);
     }
     // 用户已存在
     if ($daoUser->existsUser($orgId, $userId)) {
         require_once 'Model/User/Exception.php';
         throw new Model_User_Exception('User is exists in this organization', self::CODE_USER_EXISTS);
     }
     // 准备用户参数
     $user = array('orgid' => $orgId, 'userid' => $userId, 'uniqueid' => $uniqueId, 'status' => isset($params['status']) ? (int) $params['status'] : 1, 'deptid' => isset($params['deptid']) ? $params['deptid'] : null, 'isshow' => !empty($params['isshow']) ? 1 : 0, 'ordernum' => isset($params['ordernum']) ? (int) $params['ordernum'] : 0, 'initpassword' => 1, 'lastupdatetime' => time());
     $userInfo = array('orgid' => $orgId, 'userid' => $userId, 'truename' => $params['truename'], 'password' => $params['password'], 'gender' => (int) $params['gender']);
     if (isset($params['position'])) {
         $userInfo['position'] = $params['position'];
     }
     if (isset($params['tel'])) {
         $userInfo['tel'] = $params['tel'];
     }
     if (isset($params['mobile'])) {
         $userInfo['mobile'] = $params['mobile'];
     }
     if (isset($params['email'])) {
         $userInfo['email'] = $params['email'];
     }
     // 网盘空间
     if (!empty($params['maxndquota'])) {
         if ($params['maxndquota'] > 1000) {
             require_once 'Model/User/Exception.php';
             throw new Model_User_Exception('You can not set exceed 1000MB netdisk space', self::CODE_EXCEED_MAX_NDSPACE);
         }
         $user['maxndquota'] = (double) $params['maxndquota'] * 1000000;
     }
     // 无效的出生日期
     if (!empty($params['birthday'])) {
         if (false === $params['birthday']) {
             require_once 'Model/User/Exception.php';
             throw new Model_User_Exception('Missing or invalid value of parameter "birthday"', self::CODE_INVALID_BIRTHDAY);
         }
         $userInfo['birthday'] = $params['birthday'];
     }
     if (!Oray_Function::isByte($params['truename'])) {
         require_once 'Tudu/Pinyin.php';
         $userInfo['pinyin'] = Tudu_Pinyin::parse($params['truename'], true);
     }
     if (!empty($params['idnumber'])) {
         $userInfo['idnumber'] = $params['idnumber'];
     }
     if (!empty($params['nick'])) {
         $userInfo['nick'] = $params['nick'];
     }
     // 创建用户
     if (!$daoUser->createUser($user)) {
         require_once 'Model/User/Exception.php';
         throw new Model_User_Exception('Create user failed', self::CODE_SAVE_FAILED);
     }
     // 创建用户数据
     if (!$daoUser->createUserInfo($userInfo)) {
         require_once 'Model/User/Exception.php';
         throw new Model_User_Exception('Create user info failed', self::CODE_SAVE_FAILED);
     }
     // 群组
     /* @var $daoGroup Dao_Md_User_Group */
     $daoGroup = Tudu_Dao_Manager::getDao('Dao_Md_User_Group', Tudu_Dao_Manager::DB_MD);
     $groups = !empty($params['groupid']) ? $params['groupid'] : array();
     foreach ($groups as $groupId) {
         $daoGroup->addUser($orgId, $groupId, $userId);
     }
     /* @var $daoRole Dao_Md_User_Role */
     $daoRole = Tudu_Dao_Manager::getDao('Dao_Md_User_Role', Tudu_Dao_Manager::DB_MD);
     $roles = !empty($params['roleid']) ? $params['roleid'] : array();
     // 权限组
     foreach ($roles as $roleId) {
         $daoRole->addUsers($orgId, $roleId, $userId);
     }
     /* @var $daoCast Dao_Md_User_Cast */
     $daoCast = Tudu_Dao_Manager::getDao('Dao_Md_User_Cast', Tudu_Dao_Manager::DB_MD);
     $castDepts = !empty($params['castdept']) ? $params['castdept'] : array();
     $castUsers = !empty($params['castuser']) ? $params['castuser'] : array();
     // 添加不可见部门
     foreach ($castDepts as $deptId) {
         if (!trim($deptId) || $deptId == '^root') {
             continue;
         }
         $daoCast->hideDepartment($orgId, $userId, $deptId);
     }
     // 添加不可见用户
     foreach ($castUsers as $uId) {
         if (!trim($uId) || $uId == $userId) {
             continue;
         }
         $daoCast->hideUser($orgId, $userId, $uId);
     }
     $daoCast->updateDepartment($orgId, $userId, $user['deptid']);
     // 修改企业默认密码
     if ($org->defaultPassword != $params['password']) {
         $daoOrg->updateOrg($orgId, array('defaultpassword' => $params['password']));
     }
     // 发送通知,插入消息队列
     if (Tudu_Model::hasResource(Tudu_Model::RESOURCE_CONFIG)) {
         $config = Tudu_Model::getResource(Tudu_Model::RESOURCE_CONFIG);
         if ($config['httpsqs']) {
             $options = $config['httpsqs'];
             $httpsqs = new Oray_Httpsqs($options['host'], $options['port'], $options['charset'], $options['name']);
             $data = implode(' ', array(Dao_Md_Log_Oplog::MODULE_DEPT, Dao_Md_Log_Oplog::OPERATION_CREATE, 'user', implode(':', array($orgId, $address, $uniqueId, $params['truename']))));
             $httpsqs->put($data);
         }
     }
     // 添加后台操作日志
     if (!empty($params['operator']) && !empty($params['clientip'])) {
         $params['local'] = empty($params['local']) ? null : $params['local'];
         $this->_createLog(Dao_Md_Log_Oplog::MODULE_USER, Dao_Md_Log_Oplog::OPERATION_CREATE, null, array('orgid' => $orgId, 'operator' => $params['operator'], 'clientip' => $params['clientip'], 'local' => $params['local']), implode(':', array($orgId, $address, $uniqueId)), array('truename' => $params['truename'], 'account' => $address));
     }
 }
示例#2
0
文件: Org.php 项目: bjtenao/tudu-web
 /**
  * 创建组织超级管理员
  *
  * @param array $params
  */
 public function createAdmin(array $params)
 {
     //echo 'create admin', "\n";
     /* @var $daoUser Dao_Md_User_User */
     $daoUser = Tudu_Dao_Manager::getDao('Dao_Md_User_User', Tudu_Dao_Manager::DB_MD);
     if (empty($params['userid'])) {
         require_once 'Model/Org/Exception.php';
         throw new Model_Org_Exception('Missing or invalid value of parameter "uid"', self::CODE_INVALID_UID);
     }
     if (empty($params['orgid'])) {
         require_once 'Model/Org/Exception.php';
         throw new Model_Org_Exception('Missing or invalid value of parameter "orgid"', self::CODE_INVALID_ORGID);
     }
     if (empty($params['password'])) {
         require_once 'Model/Org/Exception.php';
         throw new Model_Org_Exception('Missing or invalid value of parameter "password"', self::CODE_INVALID_PWD);
     }
     $orgId = $params['orgid'];
     $userId = $params['userid'];
     $password = $params['password'];
     $trueName = $params['truename'];
     $uniqueId = Dao_Md_User_User::getUniqueId($orgId, $userId);
     /* @var $daoUser Dao_Md_User_User */
     $daoUser = Tudu_Dao_Manager::getDao('Dao_Md_User_User', Tudu_Dao_Manager::DB_MD);
     /* @var $daoGroup Dao_Md_User_Group */
     $daoGroup = Tudu_Dao_Manager::getDao('Dao_Md_User_Group', Tudu_Dao_Manager::DB_MD);
     /* @var $daoRole Dao_Md_User_Role */
     $daoRole = Tudu_Dao_Manager::getDao('Dao_Md_User_Role', Tudu_Dao_Manager::DB_MD);
     /* @var $daoOrg Dao_Md_Org_Org*/
     $daoOrg = Tudu_Dao_Manager::getDao('Dao_Md_Org_Org', Tudu_Dao_Manager::DB_MD);
     $org = $daoOrg->getOrgById($orgId);
     if (!$org) {
         require_once 'Model/Org/Exception.php';
         throw new Model_Org_Exception('Org id "' . $orgId . '" not exists', self::CODE_ORG_NOTEXISTS);
     }
     // 创建超级管理员用户
     $user = array('orgid' => $orgId, 'userid' => $userId, 'uniqueid' => $uniqueId, 'status' => 1, 'isshow' => 1);
     $userInfo = array('orgid' => $orgId, 'userid' => $userId, 'truename' => $trueName, 'ismd5' => true, 'password' => $password);
     $ret = $daoUser->createUser($user);
     if (!$ret) {
         require_once 'Model/Org/Exception.php';
         throw new Model_Org_Exception('Create user data failed', self::CODE_SAVE_FAILED);
     }
     $ret = $daoUser->createUserInfo($userInfo);
     if (!$ret) {
         require_once 'Model/Org/Exception.php';
         throw new Model_Org_Exception('Create user info failed', self::CODE_SAVE_FAILED);
     }
     // 添加群组 - 全体员工
     $daoGroup->addUser($orgId, '^all', $userId);
     // 添加权限 - 管理员
     $daoRole->addUsers($orgId, '^admin', $userId);
     // 添加管理员
     $daoOrg->addAdmin($orgId, $userId, 'SA', 3);
     if (!empty($params['email'])) {
         // 绑定邮箱
         $daoUser->createEmail(array('orgid' => $orgId, 'userid' => $userId, 'email' => $params['email']));
     }
     /* @var $daoCast Dao_Md_User_Cast */
     $daoCast = Tudu_Dao_Manager::getDao('Dao_Md_User_Cast', Tudu_Dao_Manager::DB_MD);
     // 看到自己
     $daoCast->addUser($orgId, $userId, $userId);
     // 看到根部门
     $daoCast->addDepartment($orgId, $userId, '^root');
     // 创建欢迎公告
     try {
         $config = Tudu_Model::getResource('config');
         if (!empty($config['path']['data']) || !empty($config['data']['path'])) {
             $tplFile = !empty($config['path']['data']) ? $config['path']['data'] : $config['data']['path'];
             $content = @file_get_contents($tplFile . '/templates/tudu/welcome.tpl');
             if (!empty($content)) {
                 require_once 'Tudu/Deliver.php';
                 $deliver = new Tudu_Deliver(Tudu_Dao_Manager::getDb(Tudu_Dao_Manager::DB_TS));
                 $tudu = array('orgid' => $orgId, 'tuduid' => md5($orgId . '-welcome'), 'boardid' => '^system', 'uniqueid' => '^system', 'type' => 'notice', 'subject' => '欢迎使用图度工作管理系统!!', 'email' => '*****@*****.**', 'from' => '^system 图度系统', 'to' => null, 'cc' => null, 'priority' => 0, 'privacy' => 0, 'issend' => 1, 'status' => Dao_Td_Tudu_Tudu::STATUS_UNSTART, 'content' => $content, 'poster' => '图度系统', 'posterinfo' => '', 'lastposter' => '图度系统', 'lastposttime' => time(), 'createtime' => time(), 'attachment' => array());
                 $deliver->createTudu($tudu);
                 $deliver->sendTudu($tudu['tuduid'], array());
                 if (!empty($uniqueId)) {
                     $deliver->addRecipient($tudu['tuduid'], $uniqueId);
                     $deliver->addLabel($tudu['tuduid'], $uniqueId, '^all');
                     $deliver->addLabel($tudu['tuduid'], $uniqueId, '^i');
                     $deliver->addLabel($tudu['tuduid'], $uniqueId, '^n');
                 }
             }
         }
     } catch (Exception $e) {
     }
 }