CachedUserManager::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 2
dl 0
loc 5
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types = 1);
4
5
namespace Eziat\PermissionBundle\Manager;
6
7
use Eziat\PermissionBundle\Model\UserManagerAbstract;
8
use Eziat\PermissionBundle\Model\UserManagerInterface;
9
use Eziat\PermissionBundle\Model\UserPermissionInterface;
10
use Eziat\PermissionBundle\Utils\CacheHelperInterface;
11
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
12
13
/**
14
 * @author Tomas Jakl <[email protected]>
15
 */
16
class CachedUserManager extends UserManagerAbstract implements UserManagerInterface
17
{
18
    /**
19
     * @var CacheHelperInterface
20
     */
21
    private $cacheHelper;
22
23
    /**
24
     * @var string
25
     */
26
    private $cachePrefix;
27
28
    public function __construct(CacheHelperInterface $cacheHelper, string $cachePrefix )
29
    {
30
        $this->cacheHelper = $cacheHelper;
31
        $this->cachePrefix = $cachePrefix;
32
    }
33
34
    /**
35
     * {@inheritdoc}
36
     */
37
    public function getPermissions(UserPermissionInterface $user) : array
38
    {
39
        $cacheID = $this->cachePrefix.$user->getId();
40
        $permissions = $this->cacheHelper->get($cacheID);
41
        if ($permissions === null) {
42
            $permissions = $this->getUserPermissions($user);
43
            if ( $permissions !== [] ){
44
                $this->cacheHelper->save($cacheID, $permissions);
45
            }
46
        }
47
48
        return $permissions;
49
    }
50
51
    /**
52
     * {@inheritdoc}
53
     */
54
    public function invalidatePermissions(UserPermissionInterface $user) : void
55
    {
56
        $cacheID = $this->cachePrefix.$user->getId();
57
        $this->cacheHelper->delete($cacheID);
58
    }
59
}