Example #1
0
 /**
  * get CREST API "access_token" from OAuth
  * @return bool|string
  */
 public function getAccessToken()
 {
     $accessToken = false;
     // check if there is already an "accessToken" for this user
     // check expire timer for stored "accessToken"
     if (!empty($this->crestAccessToken) && !empty($this->crestAccessTokenUpdated)) {
         $timezone = new \DateTimeZone($this->getF3()->get('TZ'));
         $tokenTime = \DateTime::createFromFormat('Y-m-d H:i:s', $this->crestAccessTokenUpdated, $timezone);
         // add expire time buffer for this "accessToken"
         // token should be marked as "deprecated" BEFORE it actually expires.
         $timeBuffer = 2 * 60;
         $tokenTime->add(new \DateInterval('PT' . (Sso::ACCESS_KEY_EXPIRE_TIME - $timeBuffer) . 'S'));
         $now = new \DateTime('now', $timezone);
         if ($tokenTime->getTimestamp() > $now->getTimestamp()) {
             $accessToken = $this->crestAccessToken;
         }
     }
     // if no "accessToken" was found -> get a fresh one by an existing "refreshToken"
     if (!$accessToken && !empty($this->crestRefreshToken)) {
         // no accessToken found OR token is deprecated
         $ssoController = new Sso();
         $accessData = $ssoController->refreshAccessToken($this->crestRefreshToken);
         if (isset($accessData->accessToken) && isset($accessData->refreshToken)) {
             $this->crestAccessToken = $accessData->accessToken;
             $this->save();
             $accessToken = $this->crestAccessToken;
         }
     }
     return $accessToken;
 }