Completed
Pull Request — develop (#280)
by
unknown
11:38
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
 */
27
class ApplicationAccessAssertion implements AssertionInterface
28
{
29
    /**
30
     * Checks permissions based on resources' permissions.
31
     *
32
     * {@inheritDoc}
33
     *
34
     * @see \Zend\Permissions\Acl\Assertion\AssertionInterface::assert()
35
     */
36
    public function assert(
37
        Acl $acl,
38
        RoleInterface $role = null,
39
        ResourceInterface $resource = null,
40
        $privilege = null
41
    ) {
42
        if (!$role instanceof UserInterface || !$resource instanceof ApplicationInterface) {
43
            return false;
44
        }
45
        /* @var $resource ApplicationInterface */
46
        $permissions = $resource->getPermissions();
47
        
48
        if (ApplicationInterface::PERMISSION_SUBSEQUENT_ATTACHMENT_UPLOAD == $privilege) {
49
            // only applicant is allowed to upload subsequent attachments
50
            return $permissions->isAssigned($role) && $permissions->isGranted($role, PermissionsInterface::PERMISSION_VIEW);
51
        }
52
        
53
        $permission = 'read' == $privilege ? PermissionsInterface::PERMISSION_VIEW : PermissionsInterface::PERMISSION_CHANGE;
54
        return $permissions->isGranted($role, $permission);
55
    }
56
}
57