Skip to content
This repository was archived by the owner on Aug 27, 2024. It is now read-only.

Commit 7444001

Browse files
committed
Add dependency on saritasa/dingo-api-custom
1 parent aa8aa94 commit 7444001

File tree

6 files changed

+37
-81
lines changed

6 files changed

+37
-81
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@
22
package.xml
33
/vendor
44
.idea
5+
*.cache

CHANGES.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# Changes History
22

3+
4.0.0
4+
-----
5+
+ Add PageRequest, ChangePassword request
6+
+ Depend on [saritasa/laravel-fluent-validation](https://github.com/Saritasa/php-laravel-fluent-validation) and [saritasa/dingo-api-custom](https://github.com/Saritasa/php-dingo-api-custom)
7+
+ Remove ApiResourceRegistrar and WebResourceRegistrar (standard router is enough)
8+
39
3.3.5
410
-----
511
Require release tymon/jwt-auth version instead of RC

README.md

Lines changed: 22 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -33,23 +33,23 @@ Recommended to use as base controller for other API controllers.
3333

3434
#### Methods
3535
* function json($data, IDataTransformer $transformer = null): Response
36-
* function validate(Request $request, array $rules, array $messages = [], array $customAttributes = [])
3736

3837
**Example**:
3938
```php
4039
class UserApiController extends BaseApiController
4140
{
42-
public function __construct(UserTransformer $userTransformer)
43-
{
44-
parent::__construct($userTransformer);
45-
}
46-
public function editUserProfile(Request $request, User $user): Response
47-
{
48-
$this->validate($request, $user->getRuels());
49-
$user->fill($request->all());
50-
$user->save();
51-
return $this->json($user);
52-
}
41+
public function __construct(UserTransformer $userTransformer)
42+
{
43+
parent::__construct($userTransformer);
44+
}
45+
46+
public function editUserProfile(Request $request, User $user): Response
47+
{
48+
$this->validate($request, $user->getRuels());
49+
$user->fill($request->all());
50+
$user->save();
51+
return $this->json($user);
52+
}
5353
}
5454
```
5555
### JWTAuthApiController Authenticate API Controller. Uses JWT authentication
@@ -59,77 +59,23 @@ settings and underlying [tymon\jwt-auth](https://github.com/tymondesigns/jwt-aut
5959
**Example**: routes\api.php:
6060
```php
6161
app('api.router')->version(config('api.version'), ['namespace' => 'Saritasa\Laravel\Controllers\Api'],
62-
function (\Dingo\Api\Routing\Router $api) {
63-
// Authentication $api->post('auth', 'AuthController@login'); // Login $api->put('auth', 'AuthController@refreshToken'); // Refresh expired token
64-
$api->delete('auth', 'AuthController@logout')->middleware('api.auth'); // Logout
65-
});
62+
function (\Dingo\Api\Routing\Router $api) {
63+
// Authentication $api->post('auth', 'AuthController@login'); // Login $api->put('auth', 'AuthController@refreshToken'); // Refresh expired token
64+
$api->delete('auth', 'AuthController@logout')->middleware('api.auth'); // Logout
65+
});
6666
```
67-
### ResourceApiController
68-
Controller for typical CRUD operations when you don't need many additional logic.
69-
For using this functionality you can just create controller and set needed model class in property $modelClass
70-
**Example**:
71-
```php
72-
class CustomApiController extends ResourceApiController
73-
{
74-
/**
75-
* Define model class that is managed by this controller.
76-
*
77-
* @var string
78-
*/
79-
protected $modelClass = App\Models\User::class;
80-
}
81-
```
67+
8268
### ForgotPasswordApiController, ResetPasswordApiController These controllers are responsible for handling password reset emails.
8369
Utilize native Laravel password management without UI, in JSON API.
8470

8571
**Example**: routes\api.php:
8672
```php
87-
app('api.router')->version(config('api.version'), ['namespace' => 'Saritasa\Laravel\Controllers\Api'],
88-
function (\Dingo\Api\Routing\Router $api) { $api->post('auth/password/reset', 'ForgotPasswordApiController@sendResetLinkEmail'); $api->put('auth/password/reset', 'ResetPasswordApiController@reset');});
89-
```
90-
## Routes registration examples:
91-
### Simple route
92-
```php
93-
$registrar->get('users', ApiController::class, 'list');
73+
app('api.router')->version(config('api.version'), ['namespace' => 'Saritasa\Laravel\Controllers\Api'],
74+
function (\Dingo\Api\Routing\Router $api) {
75+
$api->post('auth/password/reset', 'ForgotPasswordApiController@sendResetLinkEmail');
76+
$api->put('auth/password/reset', 'ResetPasswordApiController@reset');
77+
});
9478
```
95-
In this case ApiController::list will be calling with default dependency injection.
96-
97-
### Route with parameters
98-
```php
99-
// Controller example
100-
class ApiController {
101-
public function show(int $id) {}
102-
}
103-
// Route example
104-
$registrar->get('users/{id}', ApiController::class, 'show');
105-
```
106-
In this case ApiController::show will receive directly parameter from url. Ex: /user/5
107-
108-
### Route with binding on controller side
109-
```php
110-
// Controller example
111-
class ApiController {
112-
public function show(User $user) {}
113-
}
114-
// Route example
115-
$registrar->get('users/{user}', ApiController::class, 'show');
116-
```
117-
In this case ApiController::show try to find Model user by id and if not exists throws ModelNotFoundException.
118-
119-
### Route with binding on route side
120-
```php
121-
// Controller example
122-
class ApiController {
123-
public function show(Model $user) {}
124-
}
125-
// Route example
126-
$registrar->get('users/{user}', ApiController::class, 'show', null, ['user' => User::class]);
127-
```
128-
In this case no matter what type hint in controller, container will be trying to give object of class that you pass in router registrar.
129-
So if method has type hinting of class which not a parent for given in router, TypeError will be thrown.
130-
131-
#### Note: In 2 last cases classes which uses for model bindings must implement Illuminate\Contracts\Routing\UrlRoutable otherwise this parameters
132-
will be ignored.
13379

13480
## Contributing
13581
1. Create fork, checkout it

composer.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,16 @@
1313
"require": {
1414
"php": ">=7.1",
1515
"ext-json": "*",
16-
"illuminate/support": "^5.7 || ^6.0",
17-
"saritasa/laravel-entity-services": "^1.3",
16+
"illuminate/http": "^5.7 | 6.*",
17+
"illuminate/support": "^5.7 | 6.*",
18+
"saritasa/dingo-api-custom": "^2.2",
1819
"saritasa/laravel-fluent-validation": "^1.2",
1920
"saritasa/transformers": "^1.0",
2021
"tymon/jwt-auth": "^1.0"
2122
},
2223
"require-dev": {
2324
"mockery/mockery": "^1.1",
24-
"phpunit/phpunit": "^7.5",
25+
"phpunit/phpunit": ">=6.0",
2526
"squizlabs/php_codesniffer": "^3.0"
2627
},
2728
"minimum-stability": "beta",

src/Requests/ChangePasswordRequest.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace Saritasa\LaravelControllers\Requests;
44

5+
use Illuminate\Foundation\Http\FormRequest;
56
use Saritasa\Laravel\Validation\Rules\ContainsLowercase;
67
use Saritasa\Laravel\Validation\Rules\ContainsNumeral;
78
use Saritasa\Laravel\Validation\Rules\ContainsUppercase;
@@ -12,7 +13,7 @@
1213
* @property-read string $oldPassword The old user password
1314
* @property-read string $newPassword The new password to set
1415
*/
15-
class ChangePasswordRequest extends Request
16+
class ChangePasswordRequest extends FormRequest
1617
{
1718
/**
1819
* Get the validation rules that apply to the request.

src/Requests/PageRequest.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace Saritasa\LaravelControllers\Requests;
44

5+
use Illuminate\Foundation\Http\FormRequest;
56
use Saritasa\DingoApi\Paging\PagingInfo;
67

78
/**
@@ -10,7 +11,7 @@
1011
* @property-read int $page
1112
* @property-read int $per_page
1213
*/
13-
class PageRequest extends Request
14+
class PageRequest extends FormRequest
1415
{
1516
public const PER_PAGE = 'per_page';
1617
public const PAGE = 'page';

0 commit comments

Comments
 (0)