FetchSchoolFromIdentity.php 954 Bytes
Newer Older
kanellov's avatar
kanellov committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
/**
 * gredu_labs.
 *
 * @link https://github.com/eellak/gredu_labs for the canonical source repository
 *
 * @copyright Copyright (c) 2008-2015 Greek Free/Open Source Software Society (https://gfoss.ellak.gr/)
 * @license GNU GPLv3 http://www.gnu.org/licenses/gpl-3.0-standalone.html
 */

namespace GrEduLabs\Schools\Middleware;

use RedBeanPHP\R;

class FetchSchoolFromIdentity
{
    protected $authService;

    public function __construct($authService)
    {
        $this->authService = $authService;
    }

    public function __invoke($req, $res, $next)
    {
        $identity = $this->authService->getIdentity();
        if (!$identity) {
            return $res->withStatus(403, 'No identity');
        }

        $user = R::load('user', $identity->id);
        if (!($school = $user->school)) {
            return $res->withStatus(403, 'No school');
        }

        return $next($req->withAttribute('school', $school), $res);
    }
}