]>
Commit | Line | Data |
---|---|---|
1 | <?php | |
2 | ||
3 | namespace Wallabag\CoreBundle\Repository; | |
4 | ||
5 | use Wallabag\CoreBundle\Helper\CryptoProxy; | |
6 | ||
7 | /** | |
8 | * SiteCredentialRepository. | |
9 | */ | |
10 | class SiteCredentialRepository extends \Doctrine\ORM\EntityRepository | |
11 | { | |
12 | private $cryptoProxy; | |
13 | ||
14 | public function setCrypto(CryptoProxy $cryptoProxy) | |
15 | { | |
16 | $this->cryptoProxy = $cryptoProxy; | |
17 | } | |
18 | ||
19 | /** | |
20 | * Retrieve one username/password for the given host and userId. | |
21 | * | |
22 | * @param string $host | |
23 | * @param int $userId | |
24 | * | |
25 | * @return null|array | |
26 | */ | |
27 | public function findOneByHostAndUser($host, $userId) | |
28 | { | |
29 | $res = $this->createQueryBuilder('s') | |
30 | ->select('s.username', 's.password') | |
31 | ->where('s.host = :hostname')->setParameter('hostname', $host) | |
32 | ->andWhere('s.user = :userId')->setParameter('userId', $userId) | |
33 | ->setMaxResults(1) | |
34 | ->getQuery() | |
35 | ->getOneOrNullResult(); | |
36 | ||
37 | if (null === $res) { | |
38 | return; | |
39 | } | |
40 | ||
41 | // decrypt user & password before returning them | |
42 | $res['username'] = $this->cryptoProxy->decrypt($res['username']); | |
43 | $res['password'] = $this->cryptoProxy->decrypt($res['password']); | |
44 | ||
45 | return $res; | |
46 | } | |
47 | } |