/**
  * @param $token
  * @return null|int
  */
 public function getUserIdFromAccessToken($token)
 {
     $data = Query::select('oauth2_access_tokens', array('user_id'), array('access_token' => $token))->execute();
     if ($data) {
         return intval($data[0]['user_id']);
     }
     return null;
 }
 public function read($session_id)
 {
     if (!isset($this->sessions[$session_id])) {
         $data = Query::select('sessions', array('data'), array('id' => $session_id))->execute();
         if (count($data) > 0) {
             $this->sessions[$session_id] = $data[0]['data'];
         } else {
             $this->sessions[$session_id] = null;
         }
     }
     return $this->sessions[$session_id];
 }
 public function authorize($parameter = null)
 {
     // Check for reset
     if ($parameter == 'reset' || $this->request->input('reset')) {
         $this->request->getSession()->set('catlab-user-id', null);
         unset($_GET['reset']);
         return \Neuron\Net\Response::redirect(URLBuilder::getURL('oauth2/authorize', $_GET));
     }
     $display = 'mobile';
     $server = OAuth2Service::getInstance()->getServer();
     $request = OAuth2Service::getInstance()->translateRequest($this->request);
     $response = new Response();
     // Check for cancel parameter
     if ($this->request->input('cancel')) {
         $server->handleAuthorizeRequest($request, $response, false, null);
         $response->send();
         return;
     }
     // validate the authorize request
     if (!$server->validateAuthorizeRequest($request, $response)) {
         $response->send();
         die;
     }
     $clientid = $server->getAuthorizeController()->getClientId();
     $clientdata = $server->getStorage('client')->getClientDetails($clientid);
     // Check if we should log the user out (after a revoke)
     $this->checkForLogout($server);
     $layout = $clientdata['login_layout'];
     $skipAuthorization = $clientdata['skip_authorization'];
     if ($layout) {
         $display = $layout;
     }
     if (!($user = $this->request->getUser())) {
         //echo '<p>' . ('This page is only available for registered users.') . '</p>';
         $login = URLBuilder::getURL('account/login', array('return' => URLBuilder::getURL('oauth2/authorize', $_GET), 'cancel' => URLBuilder::getURL('oauth2/authorize', array_merge($_GET, array('cancel' => 1)))));
         return \Neuron\Net\Response::redirect($login);
     }
     $user_id = $user->getId();
     if (!$skipAuthorization) {
         $fields = array();
         $fields['client_id'] = $clientid;
         $fields['u_id'] = $user_id;
         // Check in the database if already approved
         $data = Query::select('oauth2_app_authorizations', array('*'), $fields)->execute();
         if (count($data) > 0) {
             $skipAuthorization = true;
         }
     }
     // Should we skip authorization?
     if ($skipAuthorization) {
         $response = $server->handleAuthorizeRequest($request, $response, true, $user_id);
         $this->storeAccessTokenInSession($response);
         $response->send();
         //return \Neuron\FrontController::getInstance()->getResponse ();
         return;
     }
     // display an authorization form
     if (empty($_POST)) {
         return $this->showAuthorizationDialog($clientdata);
     }
     // print the authorization code if the user has authorized your client
     $is_authorized = $_POST['authorized'] === 'yes';
     $response = $server->handleAuthorizeRequest($request, $response, $is_authorized, $user_id);
     if ($is_authorized) {
         $response = $server->handleAuthorizeRequest($request, $response, true, $user_id);
         $this->storeAccessTokenInSession($response);
         // this is only here so that you get to see your code in the cURL request. Otherwise, we'd redirect back to the client
         //$code = substr($response->getHttpHeader('Location'), strpos($response->getHttpHeader('Location'), 'code=')+5, 40);
         //exit("SUCCESS! Authorization Code: $code");
         // Also store this in our database
         $fields = array();
         $fields['client_id'] = $clientid;
         $fields['u_id'] = $user_id;
         $fields['authorization_date'] = array(time(), Query::PARAM_DATE);
         // Destroy the session
         //Session::getInstance ()->destroy ();
         Query::replace('oauth2_app_authorizations', $fields)->execute();
     }
     $response->send();
     return;
 }
 /**
  * @param User $user
  * @return User
  */
 public function update(User $user)
 {
     $data = $this->prepareFields($user);
     Query::update($this->table_users, $data, array('u_id' => $user->getId()))->execute();
 }
 public function create($clientid, $password, $redirect_url, $layout, $userid)
 {
     $data = array('client_id' => $clientid, 'client_secret' => $password, 'redirect_uri' => $redirect_url, 'login_layout' => $layout);
     Query::insert('oauth2_clients', $data)->execute();
 }
 public function create(DeligatedUser $user)
 {
     if (!$user->getUniqueId() || !$user->getType()) {
         throw new InvalidParameter("All DeligatedUsers must have types and unique ids.");
     }
     $set = $this->getDataToSet($user);
     $set['created_at'] = new DateTime();
     $id = Query::insert('neuron_users_deligated', $set)->execute();
     $user->setId(intval($id));
 }
 /**
  * @test
  */
 public function testNullInsert()
 {
     $query = Query::insert('tableName', array('id' => 1, 'name' => null))->getParsedQuery();
     $this->assertEquals('INSERT INTO `tableName` SET id = 1, name = NULL', $query);
 }
 /**
  * @param Email $email
  */
 public function create(Email $email)
 {
     $id = Query::insert('neuron_users_emails', array('u_id' => $email->getUser()->getId(), 'ue_email' => $email->getEmail(), 'ue_verified' => $email->isVerified() ? 1 : 0, 'ue_token' => $email->getToken(), 'ue_expires' => $email->getExpires()))->execute();
     $email->setId(intval($id));
 }