Completed
Pull Request — develop (#54)
by Patrick
06:53 queued 05:07
created

PendingUserAPI::validateIsAdmin()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 12
Code Lines 6

Duplication

Lines 12
Ratio 100 %

Importance

Changes 0
Metric Value
cc 3
eloc 6
nc 3
nop 1
dl 12
loc 12
rs 9.4285
c 0
b 0
f 0
1
<?php
2
class PendingUserAPI extends ProfilesAdminAPI
3
{
4
    public function setup($app)
5
    {
6
        $app->get('[/]', array($this, 'listPendingUsers'));
7
        $app->get('/{hash}[/]', array($this, 'showPendingUser'));
8
        $app->delete('/{hash}[/]', array($this, 'deletePendingUser'));
9
        $app->map(['GET', 'POST'], '/{hash}/Actions/activate[/]', array($this, 'activatePendingUser'));
10
    }
11
12
    public function listPendingUsers($request, $response)
13
    {
14
        $this->validateIsAdmin($request);
15
        $odata = $request->getAttribute('odata', new \ODataParams(array()));
16
        $auth = AuthProvider::getInstance();
17
        $users = $auth->getPendingUsersByFilter($odata->filter, $odata->select, $odata->top, $odata->skip, 
18
                                                $odata->orderby);
19
        return $response->withJson($users);
20
    }
21
22
    public function showPendingUser($request, $response, $args)
23
    {
24
        $this->validateIsAdmin($request);
25
        $user = \AuthProvider::getInstance()->getPendingUsersByFilter(new \Data\Filter("hash eq '".$args['hash']."'"));
26
        if($user === false)
27
        {
28
            return $response->withStatus(404);
29
        }
30
        if(!is_object($user) && isset($user[0]))
31
        {
32
            $user = $user[0];
33
        }
34
        return $response->withJson($user);
35
    }
36
37
    public function deletePendingUser($request, $response, $args)
38
    {
39
        $this->validateIsAdmin($request);
40
        $auth = \AuthProvider::getInstance();
41
        $res = $auth->deletePendingUsersByFilter(new \Data\Filter("hash eq '".$args['hash']."'"));
42
        return $response->withJson($res);
43
    }
44
45
    public function activatePendingUser($request, $response, $args)
46
    {
47
        $hash = $args['hash'];
48
        $user = $request->getAttribute('user');
49
        if($user === false)
50
        {
51
            throw new Exception('Must be logged in', \Http\Rest\ACCESS_DENIED);
52
        }
53
        $auth = \AuthProvider::getInstance();
54
        $user = $auth->getPendingUsersByFilter(new \Data\Filter("hash eq '$hash'"));
55
        if($user === false || !isset($user[0]))
56
        {
57
            return $response->withStatus(404);
58
        }
59
        $res = $auth->activatePendingUser($user[0]);
60
        if($request->isGet())
61
        {
62
            $uri = '../../activate_error.php';
63
            if($res)
64
            {
65
                $uri = '../../';
66
            }
67
            return $response->withStatus(302)->withHeader('Location', $uri);
68
        }
69
        else
70
        {
71
            return $response->withJson($res);
72
        }
73
    }
74
}
75
/* vim: set tabstop=4 shiftwidth=4 expandtab: */
76