Completed
Push — master ( f65d8f...4f3de5 )
by Pavel
04:14 queued 01:54
created

UserSchema::getId()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 4
Ratio 100 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 1
dl 4
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
namespace App\Schema;
3
4
use \Carbon\Carbon;
5
6
/**
7
 * @api {get} /user Список пользователей
8
 * @apiName GetUsers
9
 * @apiGroup User
10
 *
11
 * @apiDescription Метод для получения списка пользователей.
12
 *
13
 * @apiPermission user
14
 *
15
 * @apiHeader {String} Authorization Токен.
16
 *
17
 * @apiSuccessExample {json} Успешно (200)
18
 *     HTTP/1.1 200 OK
19
 *     {
20
 *       "data": [
21
 *         {
22
 *           "type": "user",
23
 *           "id": "1",
24
 *           "attributes": {
25
 *             "full_name": "Тестовый пользователь",
26
 *             "email": "[email protected]",
27
 *             "role_id": 1,
28
 *             "created_at": "2016-10-17T07:38:21+0000",
29
 *             "updated_at": "2016-10-17T07:38:21+0000",
30
 *             "created_by": 0,
31
 *             "updated_by": null,
32
 *             "status": 1,
33
 *           },
34
 *           "relationships": {
35
 *             "role": {
36
 *               "data": {
37
 *                 "type": "role",
38
 *                 "id": "1"
39
 *               }
40
 *             }
41
 *           },
42
 *           "links": {
43
 *             "self": "http://bootstrapi.dev/api/user/1"
44
 *           }
45
 *         }
46
 *       ]
47
 *     }
48
 *
49
 * @apiUse StandardErrors
50
 * @apiUse UnauthorizedError
51
 */
52
53
/**
54
 * @api {get} /user/:id?include=role&fields[role]=name Получить пользователя
55
 * @apiName GetUser
56
 * @apiGroup User
57
 *
58
 * @apiDescription Метод для получения пользователя.
59
 *
60
 * @apiPermission user
61
 *
62
 * @apiParam {Number} id Id пользователя
63
 *
64
 * @apiHeader {String} Authorization Токен.
65
 *
66
 * @apiSuccessExample {json} Успешно (200)
67
 *     HTTP/1.1 200 OK
68
 *     {
69
 *       "data": {
70
 *         "type": "user",
71
 *         "id": "1",
72
 *         "attributes": {
73
 *           "full_name": "Тестовый пользователь",
74
 *           "email": "[email protected]",
75
 *           "role_id": 1,
76
 *           "created_at": "2016-10-17T07:38:21+0000",
77
 *           "updated_at": "2016-10-17T07:38:21+0000",
78
 *           "created_by": 0,
79
 *           "updated_by": null,
80
 *           "status": 1,
81
 *         },
82
 *         "relationships": {
83
 *           "role": {
84
 *             "data": {
85
 *               "type": "role",
86
 *               "id": "1"
87
 *             }
88
 *           }
89
 *         },
90
 *         "links": {
91
 *           "self": "http://bootstrapi.dev/api/user/1"
92
 *         }
93
 *       }
94
 *     }
95
 *
96
 * @apiUse StandardErrors
97
 * @apiUse UnauthorizedError
98
 * @apiUse NotFoundError
99
 */
100
101
/**
102
 * @api {delete} /user/:id Удаление пользователя
103
 * @apiName DeleteUser
104
 * @apiGroup User
105
 *
106
 * @apiDescription Метод для удаления пользователя.
107
 *
108
 * @apiPermission admin
109
 *
110
 * @apiParam {Number} id Id пользователя
111
 *
112
 * @apiHeader {String} Authorization Токен.
113
 *
114
 * @apiSuccessExample {json} Успешно (204)
115
 *     HTTP/1.1 204 OK
116
 *
117
 * @apiUse UnauthorizedError
118
 * @apiUse StandardErrors
119
 * @apiUse NotFoundError
120
 */
121
122
/**
123
 * @api {post} /user Создание пользователя
124
 * @apiName CreateUser
125
 * @apiGroup User
126
 *
127
 * @apiDescription Метод для создания нового пользователя.
128
 *
129
 * @apiPermission admin
130
 *
131
 * @apiParam {String} full_name Полное имя пользователя
132
 * @apiParam {String} email Email пользователя (уникальный)
133
 * @apiParam {String} password Пароль
134
 * @apiParam {Number} role_id Id роли пользователя
135
 *
136
 * @apiParamExample {json} Пример запроса:
137
 *    {
138
 *      "data":{
139
 *        "attributes":{
140
 *          "full_name":"Тестовый пользователь",
141
 *          "email": "[email protected]",
142
 *          "password": "qwerty",
143
 *          "role_id": 1,
144
 *          "status": 1
145
 *        }
146
 *      }
147
 *    }
148
 *
149
 * @apiHeader {String} Authorization Токен.
150
 *
151
 * @apiSuccessExample {json} Успешно (200)
152
 *     HTTP/1.1 200 OK
153
 *     {
154
 *       "data": {
155
 *         "type": "user",
156
 *         "id": "2",
157
 *         "attributes": {
158
 *           "full_name": "Тестовый пользователь",
159
 *           "email": "[email protected]",
160
 *           "role_id": 1,
161
 *           "created_at": "2016-10-17T07:38:21+0000",
162
 *           "updated_at": "2016-10-17T07:38:21+0000",
163
 *           "created_by": 1,
164
 *           "updated_by": null,
165
 *           "status": 1,
166
 *         },
167
 *         "relationships": {
168
 *            "role": {
169
 *             "data": {
170
 *               "type": "role",
171
 *               "id": "1"
172
 *             }
173
 *           }
174
 *         },
175
 *         "links": {
176
 *           "self": "http://bootstrapi.dev/api/user/2"
177
 *         }
178
 *       }
179
 *     }
180
 *
181
 * @apiUse StandardErrors
182
 * @apiUse UnauthorizedError
183
 */
184
185
/**
186
 * @api {patch} /user/:id Изменение пользователя
187
 * @apiName UpdateUser
188
 * @apiGroup User
189
 *
190
 * @apiDescription Метод для изменения пользователя.
191
 *
192
 * @apiPermission admin
193
 *
194
 * @apiParam {String} full_name Полное имя пользователя
195
 * @apiParam {String} email Email пользователя (уникальный)
196
 * @apiParam {String} password Пароль
197
 * @apiParam {Number} role_id Id роли пользователя
198
 *
199
 * @apiParamExample {json} Пример запроса:
200
 *    {
201
 *      "data":{
202
 *        "attributes":{
203
 *          "full_name":"Тестовый пользователь",
204
 *          "email": "[email protected]",
205
 *          "password": "qwerty",
206
 *          "role_id": 1
207
 *        }
208
 *      }
209
 *    }
210
 *
211
 * @apiSuccessExample {json} Успешно (200)
212
 *     HTTP/1.1 200 OK
213
 *     {
214
 *       "data": {
215
 *         "type": "user",
216
 *         "id": 2,
217
 *         "attributes": {
218
 *           "full_name": "Тестовый пользователь",
219
 *           "email": "[email protected]",
220
 *           "role_id": 1,
221
 *           "created_at": "2016-10-17T07:38:21+0000",
222
 *           "updated_at": "2016-10-17T07:38:21+0000",
223
 *           "created_by": null,
224
 *           "updated_by": null,
225
 *           "status": 1,
226
 *         },
227
 *         "relationships": {
228
 *           "role": {
229
 *             "data": {
230
 *               "type": "role",
231
 *               "id": "1"
232
 *             }
233
 *           }
234
 *         },
235
 *         "links": {
236
 *           "self": "http://bootstrapi.dev/api/user/2"
237
 *         }
238
 *       }
239
 *     }
240
 *
241
 * @apiHeader {String} Authorization Токен.
242
 *
243
 * @apiUse StandardErrors
244
 * @apiUse UnauthorizedError
245
 * @apiUse NotFoundError
246
 */
247
248
/**
249
 * @api {post} /user/request-password-reset Запрос на сброс пароля
250
 * @apiName RequestPasswordReset
251
 * @apiGroup User
252
 *
253
 * @apiDescription Метод высылающий на email пользователя письмо со ссылкой для изменения пароля.
254
 *
255
 * В ссылке отправляется токен для сброса пароля. Его нужно отправить в методе /user/reset-password
256
 *
257
 * @apiParam {String} email Email пользователя
258
 *
259
 * @apiParamExample {json} Пример запроса:
260
 *    {
261
 *      "data":{
262
 *        "attributes":{
263
 *          "email": "[email protected]"
264
 *        }
265
 *      }
266
 *    }
267
 *
268
 * @apiSuccessExample {json} Успешно (204)
269
 *     HTTP/1.1 204 OK
270
 *
271
 * @apiUse StandardErrors
272
 */
273
274
/**
275
 * @api {post} /user/reset-password Сброс пароля
276
 * @apiName ResetPassword
277
 * @apiGroup User
278
 *
279
 * @apiDescription Метод для изменения пароля.
280
 *
281
 * Вместе с паролем нужно отправить токен, который был отправлен пользователю на почту.
282
 *
283
 * @apiParam {String} email Email пользователя
284
 *
285
 * @apiParamExample {json} Пример запроса:
286
 *    {
287
 *      "data":{
288
 *        "attributes":{
289
 *          "token": "f35v3g7h3frw24yi58cawo2e2kqhy3i5_1466085622",
290
 *          "password": "qwerty"
291
 *        }
292
 *      }
293
 *    }
294
 *
295
 * @apiSuccessExample {json} Успешно (204)
296
 *     HTTP/1.1 204 OK
297
 *
298
 * @apiUse StandardErrors
299
 */
300
301 View Code Duplication
final class UserSchema extends BaseSchema
0 ignored issues
show
Duplication introduced by
This class seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
302
{
303
    protected $resourceType = 'user';
304
305
    public function getId($user)
306
    {
307
        return $user->id;
308
    }
309
310
    public function getAttributes($user)
311
    {
312
        return [
313
            'full_name'  => $user->full_name,
314
            'email'      => $user->email,
315
            'role_id'    => (int) $user->role_id,
316
            'created_at' => Carbon::parse($user->created_at)->setTimezone('UTC')->format(Carbon::ISO8601),
317
            'updated_at' => Carbon::parse($user->updated_at)->setTimezone('UTC')->format(Carbon::ISO8601),
318
            'created_by' => $user->created_by,
319
            'updated_by' => $user->updated_by,
320
            'status'     => $user->status,
321
        ];
322
    }
323
324
    public function getRelationships($user, $isPrimary, array $includeList)
325
    {
326
        return [
327
            'role' => [
328
                self::DATA => $user->role,
329
            ],
330
        ];
331
    }
332
}