path = $path; $this->suffix = $suffix; } /** * @param mixed $credential * @param string $token * @param string $persistentToken * @return int */ public function findTriplet($credential, $token, $persistentToken) { // Hash the tokens, because they can contain a salt and can be accessed in the file system $persistentToken = sha1($persistentToken); $token = sha1($token); $fn = $this->getFilename($credential, $persistentToken); if (!file_exists($fn)) { return self::TRIPLET_NOT_FOUND; } $fileToken = trim(file_get_contents($fn)); if ($fileToken == $token) { return self::TRIPLET_FOUND; } return self::TRIPLET_INVALID; } /** * @param mixed $credential * @param string $token * @param string $persistentToken * @param int $expire * @return $this */ public function storeTriplet($credential, $token, $persistentToken, $expire = 0) { // Hash the tokens, because they can contain a salt and can be accessed in the file system $persistentToken = sha1($persistentToken); $token = sha1($token); $fn = $this->getFilename($credential, $persistentToken); file_put_contents($fn, $token); return $this; } /** * @param mixed $credential * @param string $persistentToken */ public function cleanTriplet($credential, $persistentToken) { $persistentToken = sha1($persistentToken); $fn = $this->getFilename($credential, $persistentToken); if (file_exists($fn)) { unlink($fn); } } /** * Replace current token after successful authentication * @param $credential * @param $token * @param $persistentToken * @param int $expire */ public function replaceTriplet($credential, $token, $persistentToken, $expire = 0) { $this->cleanTriplet($credential, $persistentToken); $this->storeTriplet($credential, $token, $persistentToken, $expire); } /** * @param $credential */ public function cleanAllTriplets($credential) { foreach (glob($this->path . DIRECTORY_SEPARATOR . $credential . ".*" . $this->suffix) as $file) { unlink($file); } } /** * @param $credential * @param $persistentToken * @return string */ protected function getFilename($credential, $persistentToken) { return $this->path . DIRECTORY_SEPARATOR . $credential . "." . $persistentToken . $this->suffix; } }