Blame view

app/library/App/Resources/UserResource.php 10.1 KB
15479603   Alex Savenko   initialize
1
2
3
4
  <?php
  
  namespace App\Resources;
  
c4e1ecec   Alex Savenko   delete action for...
5
  use PhalconApi\Constants\HttpMethods;
15479603   Alex Savenko   initialize
6
7
  use PhalconRest\Api\ApiResource;
  use PhalconRest\Api\ApiEndpoint;
0fc77352   Alex Savenko   registration
8
  use App\Model\User;
15479603   Alex Savenko   initialize
9
10
11
12
13
14
15
16
17
18
  use App\Transformers\UserTransformer;
  use App\Controllers\UserController;
  use App\Constants\AclRoles;
  
  class UserResource extends ApiResource {
  
      public function initialize()
      {
          $this
              ->name('User')
0fc77352   Alex Savenko   registration
19
              ->model(User::class)
15479603   Alex Savenko   initialize
20
21
              ->expectsJsonData()
              ->transformer(UserTransformer::class)
15479603   Alex Savenko   initialize
22
23
              ->itemKey('user')
              ->collectionKey('users')
8baf4948   Alex Savenko   UserResource pret...
24
              ->handler(UserController::class)
0b8d4ffc   Alex Savenko   Add Roles.
25
              ->deny(AclRoles::ALL_ROLES)
15479603   Alex Savenko   initialize
26
  
8baf4948   Alex Savenko   UserResource pret...
27
28
              /** -------------------- [GET] users -------------------------------- **/
                  ->endpoint(ApiEndpoint::all()
8baf4948   Alex Savenko   UserResource pret...
29
30
                      ->name('all')
                      ->description('Возвращает всех зарегистрированных пользователей')
0b8d4ffc   Alex Savenko   Add Roles.
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
                      ->allow(
                          AclRoles::ADMINISTRATOR
              )
                  )
              /** ----------------------------------------------------------------- **/
  
              /** -------------------- [GET] users/editors ------------------------ **/
                  ->endpoint(ApiEndpoint::factory('/editors', HttpMethods::GET, 'editorsAction')
                      ->name('all editors')
                      ->description('Возвращает всех зарегистрированных пользователей c ролью "'.AclRoles::EDITOR.'" по каждому проэкту')
                      ->allow(
                          AclRoles::ADMINISTRATOR,
                          AclRoles::USER
                      )
                      ->exampleResponse([
                          "68"    => [
                              [
                                  "id"        => 4,
                                  "username"  => "Tim2",
                                  "email"     => "timTEST2@awd.awd",
                                  "role"      => "Editor",
                                  "createdAt" => "2017-02-16 19:05:18",
                                  "updatedAt" => "2017-03-21 14:31:48"
                              ],
                              [
                                  "id"        => 5,
                                  "username"  => "Tim3",
                                  "email"     => "timTEST3@awd.awd",
                                  "role"      => "Editor",
                                  "createdAt" => "2017-02-16 19:05:18",
                                  "updatedAt" => "2017-03-21 14:31:48"
                              ]
                          ]
                      ])
                  )
              /** ----------------------------------------------------------------- **/
  
              /** -------------------- [GET] users/authors ------------------------ **/
                  ->endpoint(ApiEndpoint::factory('/authors', HttpMethods::GET, 'authorsAction')
                      ->name('all authors')
                      ->description('Возвращает всех зарегистрированных пользователей c ролью "'.AclRoles::AUTHOR.'" по каждому проэкту')
                      ->allow(
                          AclRoles::ADMINISTRATOR,
                          AclRoles::USER,
                          AclRoles::EDITOR
                      )
                      ->exampleResponse([
                          "68"    => [
                              [
                                  "id"        => 4,
                                  "username"  => "Tim2",
                                  "email"     => "timTEST2@awd.awd",
                                  "role"      => "Author",
                                  "createdAt" => "2017-02-16 19:05:18",
                                  "updatedAt" => "2017-03-21 14:31:48"
                              ],
                              [
                                  "id"        => 5,
                                  "username"  => "Tim3",
                                  "email"     => "timTEST3@awd.awd",
                                  "role"      => "Author",
                                  "createdAt" => "2017-02-16 19:05:18",
                                  "updatedAt" => "2017-03-21 14:31:48"
                              ]
                          ]
                      ])
8baf4948   Alex Savenko   UserResource pret...
97
98
                  )
              /** ----------------------------------------------------------------- **/
84125667   Alex Savenko   изменение пользов...
99
  
8baf4948   Alex Savenko   UserResource pret...
100
101
              /** -------------------- [GET] users/me ----------------------------- **/
                  ->endpoint(ApiEndpoint::factory('/me', HttpMethods::GET, 'meAction')
0b8d4ffc   Alex Savenko   Add Roles.
102
103
104
105
106
107
108
109
110
                      ->name('me')
                      ->description('Возвращает текущего залогиненного пользователя')
                      ->allow(
                          AclRoles::ADMINISTRATOR,
                          AclRoles::USER,
                          AclRoles::EDITOR,
                          AclRoles::AUTHOR
                      )
                  )
8baf4948   Alex Savenko   UserResource pret...
111
112
113
              /** ----------------------------------------------------------------- **/
  
              /** -------------------- [PUT] users/{id}  -------------------------- **/
0b8d4ffc   Alex Savenko   Add Roles.
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
                  ->endpoint(ApiEndpoint::factory('/{id}', HttpMethods::PUT, 'updateAction')
                      ->name('update')
                      ->description('Изменение данных пользователя')
                      ->allow(
                          AclRoles::ADMINISTRATOR,
                          AclRoles::USER,
                          AclRoles::EDITOR,
                          AclRoles::AUTHOR
                      )
                      ->exampleRequest([
                          'role' => 'User'
                      ])
                      ->exampleResponse([
                          "result"  => "OK",
                          "user"    => [
                              "id"        => 101,
                              "username"  => "qwerty",
                              "email"     => "1a23@awd.awd",
                              "role"      => "User",
                              "createdAt" => "2017-02-16 19:05:18",
                              "updatedAt" => "2017-03-21 14:31:48"
                          ]
                      ])
                  )
8baf4948   Alex Savenko   UserResource pret...
138
              /** ----------------------------------------------------------------- **/
84125667   Alex Savenko   изменение пользов...
139
  
8baf4948   Alex Savenko   UserResource pret...
140
              /** -------------------- [DELETE] users/{id} ------------------------ **/
0b8d4ffc   Alex Savenko   Add Roles.
141
                  ->endpoint(ApiEndpoint::factory('/{id}', HttpMethods::DELETE, 'removeAction')
8baf4948   Alex Savenko   UserResource pret...
142
143
                  ->name('remove')
                  ->description('Удаление пользователя')
0b8d4ffc   Alex Savenko   Add Roles.
144
145
146
147
148
149
                  ->allow(
                      AclRoles::ADMINISTRATOR,
                      AclRoles::USER,
                      AclRoles::EDITOR,
                      AclRoles::AUTHOR
                  )
8baf4948   Alex Savenko   UserResource pret...
150
151
152
153
154
                  ->exampleResponse([
                      "result"  => "OK"
                  ])
              )
              /** ----------------------------------------------------------------- **/
c4e1ecec   Alex Savenko   delete action for...
155
  
8baf4948   Alex Savenko   UserResource pret...
156
157
              /** -------------------- [POST] users/authenticate ------------------ **/
                  ->endpoint(ApiEndpoint::factory('/authenticate', HttpMethods::POST, 'authenticateAction')
c4e1ecec   Alex Savenko   delete action for...
158
159
                  ->name('authenticate')
                  ->description('Авторизация пользователя через BasicAuth и возвращает токен доступа')
15479603   Alex Savenko   initialize
160
                  ->allow(AclRoles::UNAUTHORIZED)
15479603   Alex Savenko   initialize
161
                  ->exampleResponse([
c4e1ecec   Alex Savenko   delete action for...
162
163
164
165
166
167
168
169
170
171
172
173
174
175
                      'data' => [
                          'token'     => 'co126bbm40wqp41i3bo7pj1gfsvt9lp6',
                          'expires'   => 1451139067,
                          "user"      =>
                          [
                              "id"        => 1,
                              "username"  => "demo",
                              "email"     => "test@example.com",
                              "role"      => "User",
                              "createdAt" => "2015-12-28 16:20:58",
                              "updatedAt" => null
                          ]
                      ]
  
15479603   Alex Savenko   initialize
176
                  ])
8baf4948   Alex Savenko   UserResource pret...
177
178
179
              )
              /** ----------------------------------------------------------------- **/
  
0b8d4ffc   Alex Savenko   Add Roles.
180
              /** -------------------- [POST] users ------------------------------- **/
8baf4948   Alex Savenko   UserResource pret...
181
                  ->endpoint(ApiEndpoint::factory('/', HttpMethods::POST, 'registerAction')
c4e1ecec   Alex Savenko   delete action for...
182
183
                  ->name('register')
                  ->description('Регистрация нового пользователя')
3582f649   Alex Savenko   registration
184
                  ->allow(AclRoles::UNAUTHORIZED)
a85cc509   Alex Savenko   registration
185
                  ->exampleResponse([
c4e1ecec   Alex Savenko   delete action for...
186
187
188
189
190
191
192
193
194
                      "result"  => "OK",
                      "user"    => [
                          "id"        => "95",
                          "username"  => "MyLogin",
                          "email"     => "myGmail@gmail.com",
                          "role"      => "User",
                          "createdAt" => "2017-02-16 17:57:52",
                          "updatedAt" => "2017-02-16 17:57:52"
                      ]
a85cc509   Alex Savenko   registration
195
                  ])
8baf4948   Alex Savenko   UserResource pret...
196
197
              )
              /** ----------------------------------------------------------------- **/
0b8d4ffc   Alex Savenko   Add Roles.
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
  
              /** -------------------- [POST] users/invite ------------------------ **/
                  ->endpoint(ApiEndpoint::factory('/invite', HttpMethods::POST, 'inviteAction')
                      ->name('invite')
                      ->description('Приглашение существующего пользователя в проэкт')
                      ->allow(
                          AclRoles::ADMINISTRATOR,
                          AclRoles::USER,
                          AclRoles::EDITOR
                      )
                      ->exampleResponse([
                          "result"  => "OK",
                          "user"    => [
                              "id"        => "95",
                              "username"  => "MyLogin",
                              "email"     => "myGmail@gmail.com",
                              "role"      => "User",
                              "createdAt" => "2017-02-16 17:57:52",
                              "updatedAt" => "2017-02-16 17:57:52"
                          ]
                      ])
                  )
              /** ----------------------------------------------------------------- **/
8baf4948   Alex Savenko   UserResource pret...
221
          ;
15479603   Alex Savenko   initialize
222
223
      }
  }