/** * 将用户身份信息设置到Cookie中 * @param array $users * @param boolean $rememberMe * @return array */ public function setIdentity(array $users, $rememberMe = false) { $clusterName = self::CLUSTER_NAME; $config = Cfg::getApp($clusterName); $expiry = isset($config['expiry']) ? (int) $config['expiry'] : 0; $cookieName = isset($config['cookie_name']) ? trim($config['cookie_name']) : ''; $cooksetPassword = isset($config['cookset_password']) ? (bool) $config['cookset_password'] : false; $cooksetRoleNames = isset($config['cookset_rolenames']) ? (bool) $config['cookset_rolenames'] : false; $cooksetAppNames = isset($config['cookset_appnames']) ? (bool) $config['cookset_appnames'] : false; if ($cookieName === '') { $errNo = DataAccount::ERROR_LOGIN_FAILED; Log::warning(sprintf('Account cookie name must be string and not empty, cluster_name "%s"', $clusterName), $errNo, __METHOD__); return array('err_no' => $errNo, 'data' => array()); } $userId = isset($users['user_id']) ? (int) $users['user_id'] : 0; $loginName = isset($users['login_name']) ? $users['login_name'] : ''; $nickname = isset($users['user_name']) ? $users['user_name'] : ''; $password = isset($users['password']) ? $users['password'] : ''; $groupIds = isset($users['group_ids']) ? (array) $users['group_ids'] : array(); $appNames = $this->getAppNames($groupIds); if ($userId <= 0 || $loginName === '') { $errNo = DataAccount::ERROR_LOGIN_FAILED; Log::warning(sprintf('Account user_id and login_name must be not empty, cluster_name "%s", cookie_name "%s", user_id "%d", login_name "%s"', $clusterName, $cookieName, $userId, $loginName), $errNo, __METHOD__); return array('err_no' => $errNo, 'data' => array()); } $roleNames = array(); if ($cooksetRoleNames) { foreach ($groupIds as $groupId) { if (($groupId = (int) $groupId) > 0) { $roleNames[] = $groupId; } } $roleNames = array_unique($roleNames); } $extends = ''; if ($cooksetAppNames) { $extends .= implode(',', $appNames); } $rememberMe || ($expiry = 0); $cooksetPassword || ($password = ''); $authentica = new Authentica($clusterName); $ret = $authentica->setIdentity($userId, $loginName, $password, $expiry, $nickname, $roleNames, $extends); if ($ret) { $errNo = DataAccount::SUCCESS_LOGIN_NUM; return array('err_no' => $errNo, 'data' => $users); } $errNo = DataAccount::ERROR_LOGIN_FAILED; Log::warning(sprintf('Account set identity Failed, cluster_name "%s", cookie_name "%s", user_id "%d", login_name "%s"', $clusterName, $cookieName, $userId, $loginName), $errNo, __METHOD__); return array('err_no' => $errNo, 'data' => array()); }
/** * 将会员身份信息设置到Cookie中 * @param array $member * @param boolean $rememberMe * @return array */ public function setIdentity(array $member, $rememberMe = false) { $clusterName = self::CLUSTER_NAME; $config = Cfg::getApp($clusterName); $expiry = isset($config['expiry']) ? (int) $config['expiry'] : 0; $cookieName = isset($config['cookie_name']) ? trim($config['cookie_name']) : ''; $cooksetPassword = isset($config['cookset_password']) ? (bool) $config['cookset_password'] : false; if ($cookieName === '') { $errNo = DataAccount::ERROR_LOGIN_FAILED; Log::warning(sprintf('Account cookie name must be string and not empty, cluster_name "%s"', $clusterName), $errNo, __METHOD__); return array('err_no' => $errNo, 'data' => array()); } $memberId = isset($member['member_id']) ? (int) $member['member_id'] : 0; $loginName = isset($member['login_name']) ? $member['login_name'] : ''; $memberName = isset($member['member_name']) ? $member['member_name'] : ''; $password = isset($member['password']) ? $member['password'] : ''; $typeId = isset($member['type_id']) ? (int) $member['type_id'] : 0; $rankId = isset($member['rank_id']) ? (int) $member['rank_id'] : 0; if ($memberId <= 0 || $loginName === '') { $errNo = DataAccount::ERROR_LOGIN_FAILED; Log::warning(sprintf('Account member_id and login_name must be not empty, cluster_name "%s", cookie_name "%s", member_id "%d", login_name "%s"', $clusterName, $cookieName, $memberId, $loginName), $errNo, __METHOD__); return array('err_no' => $errNo, 'data' => array()); } $nickname = $this->maskName($memberName); $roleNames = array('type_id:' . $typeId, 'rank_id:' . $rankId); $extends = ''; $rememberMe || ($expiry = 0); $cooksetPassword || ($password = ''); $authentica = new Authentica($clusterName); $ret = $authentica->setIdentity($memberId, $loginName, $password, $expiry, $nickname, $roleNames, $extends); if ($ret) { $errNo = DataAccount::SUCCESS_LOGIN_NUM; return array('err_no' => $errNo, 'data' => $member); } $errNo = DataAccount::ERROR_LOGIN_FAILED; Log::warning(sprintf('Account set identity Failed, cluster_name "%s", cookie_name "%s", member_id "%d", login_name "%s"', $clusterName, $cookieName, $memberId, $loginName), $errNo, __METHOD__); return array('err_no' => $errNo, 'data' => array()); }