/**
  * Generates a new token value and saves it in session
  */
 private function setToken()
 {
     if ($this->getToken() === false) {
         $token = Rand::randStr(32);
         $this->writeTokenToSession($token);
     }
 }
 /**
  * Function to enable "Remember Me" functionality
  * 
  * @param type $userID
  * @param type $secure
  * @param type $httpOnly
  * @return boolean
  */
 public static function enableRememberMe($userID, $secure = TRUE, $httpOnly = TRUE)
 {
     $authID = Rand::randStr(128);
     $token = new Authtoken(array('userId' => $userID, 'token' => $authID));
     if ($token->validate()) {
         $token->save();
         if ($secure && $httpOnly) {
             \setcookie('AUTHID', $authID, time() + static::$rememberMeExpiryTime, null, null, TRUE, TRUE);
         } elseif (!$secure && !$httpOnly) {
             \setcookie('AUTHID', $authID, time() + static::$rememberMeExpiryTime, null, null, FALSE, FALSE);
         } elseif ($secure && !$httpOnly) {
             \setcookie('AUTHID', $authID, time() + static::$rememberMeExpiryTime, null, null, TRUE, FALSE);
         } elseif (!$secure && $httpOnly) {
             \setcookie('AUTHID', $authID, time() + static::$rememberMeExpiryTime, null, null, FALSE, TRUE);
         }
         return true;
     } else {
         return false;
     }
 }
 /**
  * Method generates 40-chars lenght salt for salting passwords
  * 
  * @return string
  */
 public static function createSalt()
 {
     $newSalt = Rand::randStr(40);
     $user = \App_Model_User::first(array('salt = ?' => $newSalt));
     if ($user === null) {
         return $newSalt;
     } else {
         for ($i = 0; $i < 100; $i++) {
             $newSalt = Rand::randStr(40);
             $user = \App_Model_User::first(array('salt = ?' => $newSalt));
             if ($i == 99) {
                 throw new Exception('Salt could not be created');
             }
             if ($user === null) {
                 return $newSalt;
             } else {
                 continue;
             }
         }
     }
 }