Acl::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 46
Code Lines 37

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 38
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 37
dl 0
loc 46
ccs 38
cts 38
cp 1
rs 9.328
c 1
b 0
f 0
cc 1
nc 1
nop 0
crap 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Application\Acl;
6
7
use Application\Model\Comment;
8
use Application\Model\Configuration;
9
use Application\Model\Country;
10
use Application\Model\Event;
11
use Application\Model\FacilitatorDocument;
12
use Application\Model\File;
13
use Application\Model\Image;
14
use Application\Model\Message;
15
use Application\Model\News;
16
use Application\Model\Order;
17
use Application\Model\OrderLine;
18
use Application\Model\Organization;
19
use Application\Model\Product;
20
use Application\Model\ProductTag;
21
use Application\Model\Session;
22
use Application\Model\Subscription;
23
use Application\Model\User;
24
use Ecodev\Felix\Acl\Assertion\IsMyself;
25
26
class Acl extends \Ecodev\Felix\Acl\Acl
27
{
28 20
    public function __construct()
29
    {
30 20
        parent::__construct();
31
32
        // Each role is strictly "stronger" than the last one
33 20
        $this->addRole(User::ROLE_ANONYMOUS);
34 20
        $this->addRole(User::ROLE_MEMBER, User::ROLE_ANONYMOUS);
35 20
        $this->addRole(User::ROLE_FACILITATOR, User::ROLE_MEMBER);
36 20
        $this->addRole(User::ROLE_ADMINISTRATOR, User::ROLE_FACILITATOR);
37
38 20
        $comment = $this->createModelResource(Comment::class);
39 20
        $configuration = $this->createModelResource(Configuration::class);
40 20
        $country = $this->createModelResource(Country::class);
41 20
        $event = $this->createModelResource(Event::class);
42 20
        $file = $this->createModelResource(File::class);
43 20
        $image = $this->createModelResource(Image::class);
44 20
        $message = $this->createModelResource(Message::class);
45 20
        $news = $this->createModelResource(News::class);
46 20
        $order = $this->createModelResource(Order::class);
47 20
        $orderLine = $this->createModelResource(OrderLine::class);
48 20
        $organization = $this->createModelResource(Organization::class);
49 20
        $product = $this->createModelResource(Product::class);
50 20
        $productTag = $this->createModelResource(ProductTag::class);
51 20
        $session = $this->createModelResource(Session::class);
52 20
        $subscription = $this->createModelResource(Subscription::class);
53 20
        $user = $this->createModelResource(User::class);
54 20
        $facilitatorDocument = $this->createModelResource(FacilitatorDocument::class);
55
56 20
        $this->allow(User::ROLE_ANONYMOUS, [$configuration, $event, $news, $session, $product, $subscription, $productTag, $image, $country, $comment], ['read']);
57
58 20
        $this->allow(User::ROLE_MEMBER, [$user], ['read']);
59 20
        $this->allow(User::ROLE_MEMBER, [$user], ['update'], new IsMyself());
60 20
        $this->allow(User::ROLE_MEMBER, [$file], ['read']);
61 20
        $this->allow(User::ROLE_MEMBER, [$message], ['read']);
62 20
        $this->allow(User::ROLE_MEMBER, [$order, $orderLine], ['read']);
63 20
        $this->allow(User::ROLE_MEMBER, [$order], ['create']);
64 20
        $this->allow(User::ROLE_MEMBER, [$comment], ['create']); // if grant update, care to GUI button that sends to admin
65
66 20
        $this->allow(User::ROLE_FACILITATOR, [$file], ['read', 'update']);
67 20
        $this->allow(User::ROLE_FACILITATOR, [$user], ['update']);
68 20
        $this->allow(User::ROLE_FACILITATOR, [$facilitatorDocument], ['read']);
69
70 20
        $this->allow(User::ROLE_ADMINISTRATOR, [$file, $event, $news, $session, $subscription, $product, $productTag, $country, $image, $comment, $facilitatorDocument], ['create', 'update', 'delete']);
71 20
        $this->allow(User::ROLE_ADMINISTRATOR, [$orderLine], ['update']);
72 20
        $this->allow(User::ROLE_ADMINISTRATOR, [$configuration, $organization], ['create']);
73 20
        $this->allow(User::ROLE_ADMINISTRATOR, [$user], ['create', 'delete']);
74
    }
75
}
76