Пример #1
0
 /**
  * 将用户身份信息设置到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());
 }
Пример #2
0
 /**
  * 将会员身份信息设置到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());
 }