/** * 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; } } } }