예제 #1
0
 /**
  * @param array $params
  * @throws Exception
  */
 public function authenticate(array $params)
 {
     if (!isset($params['authtoken']) || empty($params['authtoken'])) {
         return new Response(Http::STATUS_FORBIDDEN, 'Invalid or empty authToken');
     }
     $authToken = ApiAuthenticationService::instance()->getAuthToken($params['authtoken']);
     if (empty($authToken)) {
         return new Response(Http::STATUS_FORBIDDEN, 'Auth token not found');
     }
     $user = UserService::instance()->getUserById($authToken['userId']);
     if (empty($user)) {
         return new Response(Http::STATUS_FORBIDDEN, 'User not found');
     }
     $credentials = new SessionCredentials($user);
     $credentials->setAuthProvider('API');
     $credentials->addRoles(UserRole::USER);
     $credentials->addFeatures(UserFeaturesService::instance()->getUserFeatures($authToken['userId']));
     $credentials->addRoles(UserService::instance()->getUserRolesByUserId($authToken['userId']));
     $subscription = SubscriptionsService::instance()->getUserActiveSubscription($authToken['userId']);
     if (!empty($subscription)) {
         $credentials->addRoles(UserRole::SUBSCRIBER);
         $credentials->addFeatures(UserFeature::SUBSCRIBER);
         if ($subscription['subscriptionTier'] == 2) {
             $credentials->addFeatures(UserFeature::SUBSCRIBERT2);
         }
         if ($subscription['subscriptionTier'] == 3) {
             $credentials->addFeatures(UserFeature::SUBSCRIBERT3);
         }
     }
     $response = new Response(Http::STATUS_OK, json_encode($credentials->getData()));
     $response->addHeader(Http::HEADER_CONTENTTYPE, MimeType::JSON);
     return $response;
 }
예제 #2
0
 /**
  * @param SessionCredentials $credentials
  */
 public function refreshChatUserSession(SessionCredentials $credentials)
 {
     $redis = Application::instance()->getRedis();
     $json = json_encode($credentials->getData());
     $redis->setOption(\Redis::OPT_SERIALIZER, \Redis::SERIALIZER_NONE);
     $redis->publish(sprintf('refreshuser-%s', Config::$a['redis']['database']), $json);
     $redis->setOption(\Redis::OPT_SERIALIZER, \Redis::SERIALIZER_PHP);
 }
예제 #3
0
 /**
  * Updates the session variables
  *
  * @param SessionCredentials $credentials
  */
 public static function updateCredentials(SessionCredentials $credentials)
 {
     $session = self::instance();
     $params = $credentials->getData();
     foreach ($params as $name => $value) {
         $session->set($name, $value);
     }
     $session->setCredentials($credentials);
 }