Completed
Pull Request — develop (#280)
by
unknown
08:37
created

ApplicationAccessAssertion   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 30
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 6
c 1
b 0
f 0
lcom 0
cbo 2
dl 0
loc 30
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
B assert() 0 20 6
1
<?php
2
/**
3
 * YAWIK
4
 *
5
 * @filesource
6
 * @copyright (c) 2013 - 2016 Cross Solution (http://cross-solution.de)
7
 * @license   MIT
8
 */
9
10
/** */
11
namespace Applications\Acl;
12
13
use Zend\Permissions\Acl\Assertion\AssertionInterface;
14
use Zend\Permissions\Acl\Acl;
15
use Zend\Permissions\Acl\Resource\ResourceInterface;
16
use Zend\Permissions\Acl\Role\RoleInterface;
17
use Applications\Entity\ApplicationInterface;
18
use Auth\Entity\UserInterface;
19
use Core\Entity\PermissionsInterface;
20
21
/**
22
 * Checks permission on attachments
23
 *
24
 * @author Mathias Gelhausen <[email protected]>
25
 * @author Carsten Bleek <[email protected]>
26
 * @author Miroslav Fedeleš <[email protected]>
27
 */
28
class ApplicationAccessAssertion implements AssertionInterface
29
{
30
    /**
31
     * Checks permissions based on resources' permissions.
32
     *
33
     * {@inheritDoc}
34
     *
35
     * @see \Zend\Permissions\Acl\Assertion\AssertionInterface::assert()
36
     */
37
    public function assert(
38
        Acl $acl,
39
        RoleInterface $role = null,
40
        ResourceInterface $resource = null,
41
        $privilege = null
42
    ) {
43
        if (!$role instanceof UserInterface || !$resource instanceof ApplicationInterface) {
44
            return false;
45
        }
46
        /* @var $resource ApplicationInterface */
47
        $permissions = $resource->getPermissions();
48
        
49
        if (ApplicationInterface::PERMISSION_SUBSEQUENT_ATTACHMENT_UPLOAD == $privilege) {
50
            // only applicant is allowed to upload subsequent attachments
51
            return $permissions->isAssigned($role) && $permissions->isGranted($role, PermissionsInterface::PERMISSION_VIEW);
52
        }
53
        
54
        $permission = 'read' == $privilege ? PermissionsInterface::PERMISSION_VIEW : PermissionsInterface::PERMISSION_CHANGE;
55
        return $permissions->isGranted($role, $permission);
56
    }
57
}
58