GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Passed
Push — master ( 37b02e...ebbbe1 )
by James
08:59
created

app/Api/V1/Controllers/UserController.php (1 issue)

Labels
Severity
1
<?php
2
declare(strict_types=1);
3
/**
4
 * UserController.php
5
 * Copyright (c) 2018 [email protected]
6
 *
7
 * This file is part of Firefly III.
8
 *
9
 * Firefly III is free software: you can redistribute it and/or modify
10
 * it under the terms of the GNU General Public License as published by
11
 * the Free Software Foundation, either version 3 of the License, or
12
 * (at your option) any later version.
13
 *
14
 * Firefly III is distributed in the hope that it will be useful,
15
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
 * GNU General Public License for more details.
18
 *
19
 * You should have received a copy of the GNU General Public License
20
 * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
21
 */
22
23
24
namespace FireflyIII\Api\V1\Controllers;
25
26
use FireflyIII\Api\V1\Requests\UserRequest;
27
use FireflyIII\Repositories\User\UserRepositoryInterface;
28
use FireflyIII\Transformers\UserTransformer;
29
use FireflyIII\User;
30
use Illuminate\Http\Request;
31
use Illuminate\Pagination\LengthAwarePaginator;
32
use League\Fractal\Manager;
33
use League\Fractal\Pagination\IlluminatePaginatorAdapter;
34
use League\Fractal\Resource\Collection as FractalCollection;
35
use League\Fractal\Resource\Item;
36
use League\Fractal\Serializer\JsonApiSerializer;
37
use Preferences;
38
use Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException;
39
40
/**
41
 * Class UserController
42
 */
43
class UserController extends Controller
44
{
45
46
    /** @var UserRepositoryInterface */
47
    private $repository;
48
49
    /**
50
     * UserController constructor.
51
     *
52
     * @throws \FireflyIII\Exceptions\FireflyException
53
     */
54
    public function __construct()
55
    {
56
        parent::__construct();
57
        $this->middleware(
58
            function ($request, $next) {
59
                /** @var UserRepositoryInterface repository */
60
                $this->repository = app(UserRepositoryInterface::class);
61
62
                return $next($request);
63
            }
64
        );
65
    }
66
67
    /**
68
     * Remove the specified resource from storage.
69
     *
70
     * @param  \FireflyIII\User $user
71
     *
72
     * @return \Illuminate\Http\Response
73
     * @throws \Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException
74
     */
75
    public function delete(User $user)
76
    {
77
        if (auth()->user()->hasRole('owner')) {
78
            $this->repository->destroy($user);
79
80
            return response()->json([], 204);
81
        }
82
        throw new AccessDeniedException(''); // @codeCoverageIgnore
83
    }
84
85
    /**
86
     * Display a listing of the resource.
87
     *
88
     * @param Request $request
89
     *
90
     * @return \Illuminate\Http\JsonResponse
91
     */
92
    public function index(Request $request)
93
    {
94
        // user preferences
95
        $pageSize = (int)Preferences::getForUser(auth()->user(), 'listPageSize', 50)->data;
0 ignored issues
show
The method getForUser() does not exist on FireflyIII\Support\Facades\Preferences. Since you implemented __callStatic, consider adding a @method annotation. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

95
        $pageSize = (int)Preferences::/** @scrutinizer ignore-call */ getForUser(auth()->user(), 'listPageSize', 50)->data;
Loading history...
96
97
        // make manager
98
        $manager = new Manager();
99
        $baseUrl = $request->getSchemeAndHttpHost() . '/api/v1';
100
        $manager->setSerializer(new JsonApiSerializer($baseUrl));
101
102
        // build collection
103
        $collection = $this->repository->all();
104
        $count      = $collection->count();
105
        $users      = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
106
107
        // make paginator:
108
        $paginator = new LengthAwarePaginator($users, $count, $pageSize, $this->parameters->get('page'));
109
        $paginator->setPath(route('api.v1.users.index') . $this->buildParams());
110
111
        // make resource
112
        $resource = new FractalCollection($users, new UserTransformer($this->parameters), 'users');
113
        $resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
114
115
        return response()->json($manager->createData($resource)->toArray())->header('Content-Type', 'application/vnd.api+json');
116
    }
117
118
    /**
119
     * @param Request $request
120
     * @param User    $user
121
     *
122
     * @return \Illuminate\Http\JsonResponse
123
     */
124
    public function show(Request $request, User $user)
125
    {
126
        // make manager
127
        $manager = new Manager();
128
        $baseUrl = $request->getSchemeAndHttpHost() . '/api/v1';
129
        $manager->setSerializer(new JsonApiSerializer($baseUrl));
130
131
        // add include parameter:
132
        $include = $request->get('include') ?? '';
133
        $manager->parseIncludes($include);
134
135
        // make resource
136
        $resource = new Item($user, new UserTransformer($this->parameters), 'users');
137
138
        return response()->json($manager->createData($resource)->toArray())->header('Content-Type', 'application/vnd.api+json');
139
    }
140
141
    /**
142
     * @param UserRequest $request
143
     *
144
     * @return \Illuminate\Http\JsonResponse
145
     */
146
    public function store(UserRequest $request)
147
    {
148
        $data = $request->getAll();
149
        $user = $this->repository->store($data);
150
151
        // make manager
152
        $manager = new Manager();
153
        $baseUrl = $request->getSchemeAndHttpHost() . '/api/v1';
154
        $manager->setSerializer(new JsonApiSerializer($baseUrl));
155
156
        // add include parameter:
157
        $include = $request->get('include') ?? '';
158
        $manager->parseIncludes($include);
159
160
        // make resource
161
        $resource = new Item($user, new UserTransformer($this->parameters), 'users');
162
163
        return response()->json($manager->createData($resource)->toArray())->header('Content-Type', 'application/vnd.api+json');
164
    }
165
166
    /**
167
     * @param UserRequest $request
168
     * @param User        $user
169
     *
170
     * @return \Illuminate\Http\JsonResponse
171
     */
172
    public function update(UserRequest $request, User $user)
173
    {
174
        $data = $request->getAll();
175
        $user = $this->repository->update($user, $data);
176
177
        // make manager
178
        $manager = new Manager();
179
        $baseUrl = $request->getSchemeAndHttpHost() . '/api/v1';
180
        $manager->setSerializer(new JsonApiSerializer($baseUrl));
181
182
        // add include parameter:
183
        $include = $request->get('include') ?? '';
184
        $manager->parseIncludes($include);
185
186
        // make resource
187
        $resource = new Item($user, new UserTransformer($this->parameters), 'users');
188
189
        return response()->json($manager->createData($resource)->toArray())->header('Content-Type', 'application/vnd.api+json');
190
191
    }
192
193
}
194