Change the way to define algorithm for hashing url

This commit is contained in:
Jeremy Benoist 2019-05-24 15:15:12 +02:00
parent 4a5516376b
commit 0132ccd2a2
No known key found for this signature in database
GPG key ID: BCA73962457ACC3C
3 changed files with 12 additions and 12 deletions

View file

@ -66,9 +66,7 @@ class GenerateUrlHashesCommand extends ContainerAwareCommand
$i = 1;
foreach ($entries as $entry) {
$entry->setHashedUrl(
UrlHasher::hashUrl($entry->getUrl())
);
$entry->setHashedUrl(UrlHasher::hashUrl($entry->getUrl()));
$em->persist($entry);
if (0 === ($i % 20)) {
@ -87,7 +85,7 @@ class GenerateUrlHashesCommand extends ContainerAwareCommand
*
* @param string $username
*
* @return \Wallabag\UserBundle\Entity\User
* @return User
*/
private function getUser($username)
{

View file

@ -7,16 +7,17 @@ namespace Wallabag\CoreBundle\Helper;
*/
class UrlHasher
{
/** @var string */
const ALGORITHM = 'sha1';
/**
* @param string $url
* Hash the given url using the given algorithm.
* Hashed url are faster to be retrieved in the database than the real url.
*
* @return string hashed $url
* @param string $url
* @param string $algorithm
*
* @return string
*/
public static function hashUrl(string $url)
public static function hashUrl(string $url, $algorithm = 'sha1')
{
return hash(static::ALGORITHM, $url);
return hash($algorithm, urldecode($url));
}
}

View file

@ -351,7 +351,8 @@ class EntryRepository extends EntityRepository
{
return $this->findByHashedUrlAndUserId(
UrlHasher::hashUrl($url),
$userId);
$userId
);
}
/**