/** * 创建用户 */ 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)); } }
/** * 检查用户是否存在 */ public function checkAction() { $userId = trim($this->_request->getParam('userid')); if (!$userId) { return $this->_json(true, null); } $len = strlen($userId); if ($len < 2 || $len > 60) { return $this->json(false, '无效的帐号名'); } if (!Oray_Function::isDomainStr($userId)) { return $this->json(false, '无效的帐号名'); } $ret = $this->getDao('Dao_Md_User_User')->existsUser($this->_orgId, $userId); if ($ret) { return $this->json(false, '帐号已被使用'); } $this->json(true, '帐号可用'); }