Passed
Pull Request — master (#7339)
by
unknown
09:20
created

ValidationTokenRepository   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 72
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 41
dl 0
loc 72
rs 10
c 0
b 0
f 0
wmc 9

7 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A deleteRememberMeTokenById() 0 10 1
A deleteRememberMeTokensForUser() 0 10 1
A remove() 0 6 2
A save() 0 6 2
A findRememberMeToken() 0 11 1
A deleteExpiredRememberMeTokens() 0 10 1
1
<?php
2
3
declare(strict_types=1);
4
5
/* For licensing terms, see /license.txt */
6
7
namespace Chamilo\CoreBundle\Repository;
8
9
use Chamilo\CoreBundle\Entity\ValidationToken;
10
use Chamilo\CoreBundle\Helpers\ValidationTokenHelper;
11
use DateTimeInterface;
12
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
13
use Doctrine\Persistence\ManagerRegistry;
14
15
class ValidationTokenRepository extends ServiceEntityRepository
16
{
17
    public function __construct(ManagerRegistry $registry)
18
    {
19
        parent::__construct($registry, ValidationToken::class);
20
    }
21
22
    public function save(ValidationToken $entity, bool $flush = false): void
23
    {
24
        $this->getEntityManager()->persist($entity);
25
26
        if ($flush) {
27
            $this->getEntityManager()->flush();
28
        }
29
    }
30
31
    public function remove(ValidationToken $entity, bool $flush = false): void
32
    {
33
        $this->getEntityManager()->remove($entity);
34
35
        if ($flush) {
36
            $this->getEntityManager()->flush();
37
        }
38
    }
39
40
    public function findRememberMeToken(int $userId, string $hash): ?ValidationToken
41
    {
42
        return $this->createQueryBuilder('t')
43
            ->andWhere('t.type = :type')
44
            ->andWhere('t.resourceId = :userId')
45
            ->andWhere('t.hash = :hash')
46
            ->setParameter('type', ValidationTokenHelper::TYPE_REMEMBER_ME)
47
            ->setParameter('userId', $userId)
48
            ->setParameter('hash', $hash)
49
            ->getQuery()
50
            ->getOneOrNullResult();
51
    }
52
53
    public function deleteExpiredRememberMeTokens(DateTimeInterface $cutoff): int
54
    {
55
        return $this->createQueryBuilder('t')
56
            ->delete()
57
            ->andWhere('t.type = :type')
58
            ->andWhere('t.createdAt < :cutoff')
59
            ->setParameter('type', ValidationTokenHelper::TYPE_REMEMBER_ME)
60
            ->setParameter('cutoff', $cutoff)
61
            ->getQuery()
62
            ->execute();
63
    }
64
65
    public function deleteRememberMeTokenById(int $id): int
66
    {
67
        return $this->createQueryBuilder('t')
68
            ->delete()
69
            ->andWhere('t.type = :type')
70
            ->andWhere('t.id = :id')
71
            ->setParameter('type', ValidationTokenHelper::TYPE_REMEMBER_ME)
72
            ->setParameter('id', $id)
73
            ->getQuery()
74
            ->execute();
75
    }
76
77
    public function deleteRememberMeTokensForUser(int $userId): int
78
    {
79
        return $this->createQueryBuilder('t')
80
            ->delete()
81
            ->andWhere('t.type = :type')
82
            ->andWhere('t.resourceId = :userId')
83
            ->setParameter('type', ValidationTokenHelper::TYPE_REMEMBER_ME)
84
            ->setParameter('userId', $userId)
85
            ->getQuery()
86
            ->execute();
87
    }
88
}
89