/**
  * SessionData class' constructor
  *
  * @param string $a_id
  *        Session Identifier
  */
 public function __construct($a_id = null)
 {
     if ($a_id != null) {
         $this->session_id = $a_id;
     } else {
         if (Cookie::get('apine_session') != null) {
             $this->session_id = Cookie::get('apine_session');
         } else {
             $this->session_id = Encryption::token();
         }
     }
     $this->_initialize('apine_sessions', $this->session_id);
 }
 /**
  * Log a user in
  * 
  * Look up in database for a matching row with a username and a
  * password
  *
  * @param string $a_user_name
  *        Username of the user
  * @param string $a_password
  *        Password of the user
  * @return boolean
  */
 public function login($a_user_name, $a_password)
 {
     if (!$this->is_logged_in()) {
         if (Apine\User\Factory\UserFactory::is_name_exist($a_user_name) || Apine\User\Factory\UserFactory::is_email_exist($a_user_name)) {
             $encode_pass = Apine\Core\Encryption::hash_password($a_password);
         } else {
             return false;
         }
         $user_id = Apine\User\Factory\UserFactory::authentication($a_user_name, $encode_pass);
         $request_server = Apine\Core\Request::server();
         if ($user_id) {
             $referer = isset($request_server['REMOTE_ADDR']) ? $request_server['REMOTE_ADDR'] : '';
             $agent = isset($request_server['HTTP_USER_AGENT']) ? $request_server['HTTP_USER_AGENT'] : '';
             $creation_time = time();
             $new_user_token = new Apine\User\UserToken();
             $new_user_token->set_user($user_id);
             $new_user_token->set_token(Apine\Core\Encryption::hash_api_user_token($a_user_name, $a_password, $creation_time));
             $new_user_token->set_origin($referer . $agent);
             $new_user_token->set_creation_date($creation_time);
             $new_user_token->save();
             $this->token = $new_user_token;
             $this->set_session_type($this->token->get_user()->get_type());
             $this->logged_in = true;
             return true;
         } else {
             return false;
         }
     } else {
         return false;
     }
 }
 /**
  * Log a user in
  * Look up in database for a matching row with a username and a
  * password
  *
  * @param string $user_name
  *        Username of the user
  * @param string $password
  *        Password of the user
  * @param string[] $options
  *        Login Options
  * @return boolean
  */
 public function login($user_name, $password, $options = array())
 {
     if (!$this->is_logged_in()) {
         if (UserFactory::is_name_exist($user_name) || UserFactory::is_email_exist($user_name)) {
             $encode_pass = Encryption::hash_password($password);
         } else {
             return false;
         }
         $user_id = UserFactory::authentication($user_name, $encode_pass);
         if ($user_id) {
             $this->user_id = $user_id;
             $this->logged_in = true;
             $new_user = $this->get_user();
             $this->set_session_type($new_user->get_type());
             $this->session->set_var('apine_user_id', $user_id);
             $this->session->set_var('apine_user_type', $new_user->get_type());
             if (isset($options["remember"]) && $options["remember"] === true) {
                 $this->session->set_var('apine_session_permanent', true);
             }
             return true;
         } else {
             return false;
         }
     } else {
         return false;
     }
 }