Code Coverage
 
Lines
Branches
Paths
Functions and Methods
Classes and Traits
Total
90.00% covered (success)
90.00%
9 / 10
90.00% covered (success)
90.00%
9 / 10
57.14% covered (warning)
57.14%
4 / 7
66.67% covered (warning)
66.67%
2 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
ActionVoter
90.00% covered (success)
90.00%
9 / 10
90.00% covered (success)
90.00%
9 / 10
57.14% covered (warning)
57.14%
4 / 7
66.67% covered (warning)
66.67%
2 / 3
8.83
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 supports
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 voteOnAttribute
87.50% covered (warning)
87.50%
7 / 8
87.50% covered (warning)
87.50%
7 / 8
40.00% covered (danger)
40.00%
2 / 5
0.00% covered (danger)
0.00%
0 / 1
7.46
1<?php
2
3namespace App\Security;
4
5use Symfony\Bundle\SecurityBundle\Security;
6use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
7use Symfony\Component\Security\Core\Authorization\Voter\Voter;
8
9/**
10 * @extends Voter<string,mixed>
11 */
12class ActionVoter extends Voter
13{
14    protected const array AUTHORIZED = [
15        Action::HOMEPAGE => [Role::ALL],
16        Action::NAVBAR_ENVIRONNEMENT => [Role::ADMINISTRATEUR, Role::UTILISATEUR],
17        Action::ADMIN_PAGE => [Role::ADMINISTRATEUR],
18        Action::ADMIN_PARAMETER => [Role::ADMINISTRATEUR],
19        Action::ADMIN_PARAMETER_WRITE => [Role::ADMINISTRATEUR],
20        Action::ADMIN_MAIL_TEST => [Role::ADMINISTRATEUR],
21        Action::ADMIN_LOG => [Role::ADMINISTRATEUR],
22    ];
23    /*
24     * @var Security
25     */
26    private Security $security;
27
28    public function __construct(Security $security)
29    {
30        $this->security = $security;
31    }
32
33    /**
34     * Indicates whether an action (attribute) is handled by this voter.
35     */
36    protected function supports(string $attribute, mixed $subject): bool
37    {
38        return in_array($attribute, Action::getActions(), true);
39    }
40
41    /**
42     * Indicates whether the role grants the right to perform an action.
43     */
44    protected function voteOnAttribute(string $attribute, mixed $subject, TokenInterface $token): bool
45    {
46        $user = $token->getUser();
47
48        // the user must be logged in; if not, deny permission
49        if (!$user instanceof User) {
50            return false;
51        }
52        $authorized = self::AUTHORIZED[$attribute] ?? [];
53        foreach ($authorized as $authorization) {
54            if ($this->security->isGranted($authorization)) {
55                return true;
56            }
57        }
58
59        return false;
60    }
61}

Paths

Below are the source code lines that represent each code path as identified by Xdebug. Please note a path is not necessarily coterminous with a line, a line may contain multiple paths and therefore show up more than once. Please also be aware that some paths may include implicit rather than explicit branches, e.g. an if statement always has an else as part of its logical flow even if you didn't write one.

ActionVoter->__construct
28    public function __construct(Security $security)
29    {
30        $this->security = $security;
31    }
ActionVoter->supports
36    protected function supports(string $attribute, mixed $subject): bool
37    {
38        return in_array($attribute, Action::getActions(), true);
39    }
ActionVoter->voteOnAttribute
44    protected function voteOnAttribute(string $attribute, mixed $subject, TokenInterface $token): bool
45    {
46        $user = $token->getUser();
47
48        // the user must be logged in; if not, deny permission
49        if (!$user instanceof User) {
 
50            return false;
44    protected function voteOnAttribute(string $attribute, mixed $subject, TokenInterface $token): bool
45    {
46        $user = $token->getUser();
47
48        // the user must be logged in; if not, deny permission
49        if (!$user instanceof User) {
 
52        $authorized = self::AUTHORIZED[$attribute] ?? [];
53        foreach ($authorized as $authorization) {
 
53        foreach ($authorized as $authorization) {
 
54            if ($this->security->isGranted($authorization)) {
 
55                return true;
44    protected function voteOnAttribute(string $attribute, mixed $subject, TokenInterface $token): bool
45    {
46        $user = $token->getUser();
47
48        // the user must be logged in; if not, deny permission
49        if (!$user instanceof User) {
 
52        $authorized = self::AUTHORIZED[$attribute] ?? [];
53        foreach ($authorized as $authorization) {
 
53        foreach ($authorized as $authorization) {
 
54            if ($this->security->isGranted($authorization)) {
 
53        foreach ($authorized as $authorization) {
 
53        foreach ($authorized as $authorization) {
 
53        foreach ($authorized as $authorization) {
54            if ($this->security->isGranted($authorization)) {
55                return true;
56            }
57        }
58
59        return false;
60    }
44    protected function voteOnAttribute(string $attribute, mixed $subject, TokenInterface $token): bool
45    {
46        $user = $token->getUser();
47
48        // the user must be logged in; if not, deny permission
49        if (!$user instanceof User) {
 
52        $authorized = self::AUTHORIZED[$attribute] ?? [];
53        foreach ($authorized as $authorization) {
 
53        foreach ($authorized as $authorization) {
 
53        foreach ($authorized as $authorization) {
54            if ($this->security->isGranted($authorization)) {
55                return true;
56            }
57        }
58
59        return false;
60    }
44    protected function voteOnAttribute(string $attribute, mixed $subject, TokenInterface $token): bool
45    {
46        $user = $token->getUser();
47
48        // the user must be logged in; if not, deny permission
49        if (!$user instanceof User) {
 
52        $authorized = self::AUTHORIZED[$attribute] ?? [];
53        foreach ($authorized as $authorization) {
 
53        foreach ($authorized as $authorization) {
54            if ($this->security->isGranted($authorization)) {
55                return true;
56            }
57        }
58
59        return false;
60    }