1 | <?php |
||
39 | class RoleHandler |
||
40 | { |
||
41 | use AuthRequestAwareTrait; |
||
42 | use RoleRequestAwareTrait; |
||
43 | |||
44 | /** |
||
45 | * Role factory |
||
46 | * |
||
47 | * @var callable |
||
48 | * |
||
49 | * @access protected |
||
50 | */ |
||
51 | protected $roleFactory; |
||
52 | |||
53 | /** |
||
54 | * Create a RoleHandler |
||
55 | * |
||
56 | * @param callable $roleFactory factory to create role from request |
||
57 | * |
||
58 | * @access public |
||
59 | */ |
||
60 | 5 | public function __construct(callable $roleFactory = null) |
|
64 | |||
65 | /** |
||
66 | * Add Role object to Request |
||
67 | * |
||
68 | * @param Request $request PSR7 Request |
||
69 | * @param Response $response PSR7 Response |
||
70 | * @param callable $next next middleware |
||
71 | * |
||
72 | * @return Response |
||
73 | * |
||
74 | * @access public |
||
75 | */ |
||
76 | 4 | public function __invoke(Request $request, Response $response, callable $next) |
|
77 | { |
||
78 | 4 | $factory = $this->roleFactory; |
|
79 | |||
80 | 4 | $request = $request->withAttribute( |
|
81 | 4 | $this->roleAttribute, |
|
82 | 4 | $factory($request) |
|
83 | 3 | ); |
|
84 | |||
85 | 3 | return $next($request, $response); |
|
86 | } |
||
87 | |||
88 | /** |
||
89 | * Create a new Role from Auth stored in Request |
||
90 | * |
||
91 | * @param Request $request PSR7 Request |
||
92 | * |
||
93 | * @return Acl\Role |
||
94 | * |
||
95 | * @access protected |
||
96 | */ |
||
97 | 3 | protected function newRole(Request $request) |
|
105 | } |
||
106 |