/** * Persist new app session to DB * @author zbrown * * @param ApiRequestObject $apiRequest * @param $applicationId * @return string */ public function persistNewAppSession(ApiRequestObject $apiRequest, $applicationId) { $publicKey = $apiRequest->getPublicKey(); $privateKey = $apiRequest->getPrivateKey(); $sessionToken = $this->generateSessionToken($applicationId); $session = new Session(); $session->setSession($sessionToken); $session->setPublic($publicKey); $session->setSecret($privateKey); $session->setAppid($applicationId); $now = new DateTime('now'); $session->setTimestamp($now); $this->getDoctrine()->getEntityManager()->persist($session); $this->getDoctrine()->getEntityManager()->flush(); return $sessionToken; }
/** * Validate ApiRequest * @author zbrown * * @param ApiRequestObject $apiRequest * @return bool|string */ public function validateRequest(ApiRequestObject $apiRequest, $endpoint) { if ($apiRequest->getSessionToken() == Config::API_STATUS_CHECK_SESSION_TOKEN || $apiRequest->getPublicKey() == Config::API_STATUS_CHECK_PUBLIC_KEY) { return 'status'; } $requiredConfig = Yaml::parse(file_get_contents($this->get('kernel')->locateResource(Config::API_REQUIRED_PARAMS_CONFIG))); $requiredParameters = $requiredConfig['required']['api'][$endpoint]; foreach ($requiredParameters as $key => $value) { if ($value === true) { $action = 'get' . $key; $res = $apiRequest->{$action}(); if (empty($res)) { return 'invalid'; break; } } } $app = $this->getDoctrine()->getRepository('YupItsZacFreeGeoBundle:Session')->findOneBy(array('session' => $apiRequest->getSessionToken())); return is_null($app) ? false : true; }
/** * Determine session type * @author zbrown * * @param ApiRequestObject $apiRequest * @return string */ public function getSessionType(ApiRequestObject $apiRequest) { //2 = Normal API requests, 1 = API Status Check if ($apiRequest->getSessionToken() == Config::API_STATUS_CHECK_SESSION_TOKEN || $apiRequest->getPublicKey() == Config::API_STATUS_CHECK_PUBLIC_KEY) { return '1'; } else { return '2'; } }