name('User') ->model(User::class) ->expectsJsonData() ->transformer(UserTransformer::class) ->itemKey('user') ->collectionKey('users') ->handler(UserController::class) ->deny(AclRoles::ALL_ROLES) /** -------------------- [GET] users -------------------------------- **/ ->endpoint(ApiEndpoint::all() ->name('all') ->description('Возвращает всех зарегистрированных пользователей') ->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" ] ] ]) ) /** ----------------------------------------------------------------- **/ /** -------------------- [GET] users/me ----------------------------- **/ ->endpoint(ApiEndpoint::factory('/me', HttpMethods::GET, 'meAction') ->name('me') ->description('Возвращает текущего залогиненного пользователя') ->allow( AclRoles::ADMINISTRATOR, AclRoles::USER, AclRoles::EDITOR, AclRoles::AUTHOR ) ) /** ----------------------------------------------------------------- **/ /** -------------------- [PUT] users/{id} -------------------------- **/ ->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" ] ]) ) /** ----------------------------------------------------------------- **/ /** -------------------- [DELETE] users/{id} ------------------------ **/ ->endpoint(ApiEndpoint::factory('/{id}', HttpMethods::DELETE, 'removeAction') ->name('remove') ->description('Удаление пользователя') ->allow( AclRoles::ADMINISTRATOR, AclRoles::USER, AclRoles::EDITOR, AclRoles::AUTHOR ) ->exampleResponse([ "result" => "OK" ]) ) /** ----------------------------------------------------------------- **/ /** -------------------- [POST] users/authenticate ------------------ **/ ->endpoint(ApiEndpoint::factory('/authenticate', HttpMethods::POST, 'authenticateAction') ->name('authenticate') ->description('Авторизация пользователя через BasicAuth и возвращает токен доступа') ->allow(AclRoles::UNAUTHORIZED) ->exampleResponse([ '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 ] ] ]) ) /** ----------------------------------------------------------------- **/ /** -------------------- [POST] users ------------------------------- **/ ->endpoint(ApiEndpoint::factory('/', HttpMethods::POST, 'registerAction') ->name('register') ->description('Регистрация нового пользователя') ->allow(AclRoles::UNAUTHORIZED) ->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" ] ]) ) /** ----------------------------------------------------------------- **/ /** -------------------- [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" ] ]) ) /** ----------------------------------------------------------------- **/ ; } }