From 4ad40aac0417bad7bd0eabed2f5c7158c131acc2 Mon Sep 17 00:00:00 2001 From: Eduard Lupacescu Date: Wed, 22 Jul 2020 09:40:46 +0300 Subject: [PATCH 1/7] Prefixing --- src/Http/Middleware/RestifyInjector.php | 11 +++++--- src/Repositories/Repository.php | 23 +++++++++++++++++ src/RestifyServiceProvider.php | 25 +++++++++++++++++-- tests/IntegrationTest.php | 2 +- .../RepositoryCustomPrefixTest.php | 24 ++++++++++++++++++ 5 files changed, 78 insertions(+), 7 deletions(-) create mode 100644 tests/Repositories/RepositoryCustomPrefixTest.php diff --git a/src/Http/Middleware/RestifyInjector.php b/src/Http/Middleware/RestifyInjector.php index 0a5f555aa..50992c90a 100644 --- a/src/Http/Middleware/RestifyInjector.php +++ b/src/Http/Middleware/RestifyInjector.php @@ -17,8 +17,8 @@ class RestifyInjector /** * Handle an incoming request. * - * @param \Illuminate\Http\Request $request - * @param \Closure $next + * @param \Illuminate\Http\Request $request + * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) @@ -26,8 +26,11 @@ public function handle($request, Closure $next) $path = trim(Restify::path(), '/') ?: '/'; $isRestify = $request->is($path) || - $request->is(trim($path.'/*', '/')) || - $request->is('restify-api/*'); + $request->is(trim($path . '/*', '/')) || + $request->is('restify-api/*') || + collect(Restify::$repositories) + ->filter(fn($repository) => $repository::prefix()) + ->some(fn($repository) => $request->is($repository::prefix() . '/*')); app()->register(RestifyCustomRoutesProvider::class); diff --git a/src/Repositories/Repository.php b/src/Repositories/Repository.php index bab6812ca..dab90d74d 100644 --- a/src/Repositories/Repository.php +++ b/src/Repositories/Repository.php @@ -25,6 +25,7 @@ use Illuminate\Support\Facades\DB; use Illuminate\Support\Str; use JsonSerializable; +use phpDocumentor\Reflection\Types\Static_; /** * This class serve as repository collection and repository single model @@ -121,6 +122,13 @@ abstract class Repository implements RestifySearchable, JsonSerializable */ public static $with = []; + /** + * The repository routes default prefix. + * + * @var string + */ + public static $prefix; + public function __construct() { $this->bootIfNotBooted(); @@ -874,4 +882,19 @@ public static function getAttachers(): array { return static::$attachers; } + + public static function prefix(): ?string + { + $prefix = static::$prefix; + + if ($prefix && Str::startsWith($prefix, '/')) { + $prefix = Str::replaceFirst('/', '', $prefix); + } + + if ($prefix && Str::endsWith($prefix, '/')) { + $prefix = Str::replaceLast('/', '', $prefix); + } + + return $prefix; + } } diff --git a/src/RestifyServiceProvider.php b/src/RestifyServiceProvider.php index 4309cd415..38c5a0541 100644 --- a/src/RestifyServiceProvider.php +++ b/src/RestifyServiceProvider.php @@ -2,6 +2,8 @@ namespace Binaryk\LaravelRestify; +use Binaryk\LaravelRestify\Http\Controllers\RepositoryIndexController; +use Binaryk\LaravelRestify\Repositories\Repository; use Illuminate\Contracts\Debug\ExceptionHandler; use Illuminate\Support\Facades\Route; use Illuminate\Support\ServiceProvider; @@ -35,7 +37,8 @@ protected function registerRoutes() 'middleware' => config('restify.middleware', []), ]; - $this->defaultRoutes($config); + $this->defaultRoutes($config) + ->registerPrefixed($config); } /** @@ -45,12 +48,30 @@ protected function registerRoutes() public function defaultRoutes($config) { Route::group($config, function () { - $this->loadRoutesFrom(__DIR__.'/../routes/api.php'); + $this->loadRoutesFrom(__DIR__ . '/../routes/api.php'); }); return $this; } + /** + * @param $config + * @return $this + */ + public function registerPrefixed($config) + { + collect(Restify::$repositories) + ->filter(fn($repository) => $repository::prefix()) + ->each(function ($repository) use ($config) { + $config['prefix'] = $repository::prefix(); + Route::group($config, function () { + $this->loadRoutesFrom(__DIR__ . '/../routes/api.php'); + }); + }); + + return $this; + } + /** * Register Restify's custom exception handler. * diff --git a/tests/IntegrationTest.php b/tests/IntegrationTest.php index 3c4a4d59f..4fd44e7c1 100644 --- a/tests/IntegrationTest.php +++ b/tests/IntegrationTest.php @@ -42,6 +42,7 @@ abstract class IntegrationTest extends TestCase protected function setUp(): void { + $this->loadRepositories(); parent::setUp(); DB::enableQueryLog(); @@ -52,7 +53,6 @@ protected function setUp(): void $this->loadRoutes(); $this->withFactories(__DIR__.'/Factories'); $this->injectTranslator(); - $this->loadRepositories(); $this->app->bind(ExceptionHandler::class, RestifyHandler::class); } diff --git a/tests/Repositories/RepositoryCustomPrefixTest.php b/tests/Repositories/RepositoryCustomPrefixTest.php new file mode 100644 index 000000000..0fe46fe33 --- /dev/null +++ b/tests/Repositories/RepositoryCustomPrefixTest.php @@ -0,0 +1,24 @@ +getJson('api/restify-api/v1/' . PostRepository::uriKey()) + ->dump() + ->assertSuccessful(); + + } +} From 4ec97423e8e58759ca022309309675d9f60a198f Mon Sep 17 00:00:00 2001 From: Lupacescu Eduard Date: Wed, 22 Jul 2020 09:41:10 +0300 Subject: [PATCH 2/7] Apply fixes from StyleCI (#239) --- src/Http/Middleware/RestifyInjector.php | 6 +++--- src/Repositories/Repository.php | 1 - src/RestifyServiceProvider.php | 8 +++----- tests/Repositories/RepositoryCustomPrefixTest.php | 3 +-- 4 files changed, 7 insertions(+), 11 deletions(-) diff --git a/src/Http/Middleware/RestifyInjector.php b/src/Http/Middleware/RestifyInjector.php index 50992c90a..1e31bb5c7 100644 --- a/src/Http/Middleware/RestifyInjector.php +++ b/src/Http/Middleware/RestifyInjector.php @@ -26,11 +26,11 @@ public function handle($request, Closure $next) $path = trim(Restify::path(), '/') ?: '/'; $isRestify = $request->is($path) || - $request->is(trim($path . '/*', '/')) || + $request->is(trim($path.'/*', '/')) || $request->is('restify-api/*') || collect(Restify::$repositories) - ->filter(fn($repository) => $repository::prefix()) - ->some(fn($repository) => $request->is($repository::prefix() . '/*')); + ->filter(fn ($repository) => $repository::prefix()) + ->some(fn ($repository) => $request->is($repository::prefix().'/*')); app()->register(RestifyCustomRoutesProvider::class); diff --git a/src/Repositories/Repository.php b/src/Repositories/Repository.php index dab90d74d..658e014ec 100644 --- a/src/Repositories/Repository.php +++ b/src/Repositories/Repository.php @@ -25,7 +25,6 @@ use Illuminate\Support\Facades\DB; use Illuminate\Support\Str; use JsonSerializable; -use phpDocumentor\Reflection\Types\Static_; /** * This class serve as repository collection and repository single model diff --git a/src/RestifyServiceProvider.php b/src/RestifyServiceProvider.php index 38c5a0541..7d65d2938 100644 --- a/src/RestifyServiceProvider.php +++ b/src/RestifyServiceProvider.php @@ -2,8 +2,6 @@ namespace Binaryk\LaravelRestify; -use Binaryk\LaravelRestify\Http\Controllers\RepositoryIndexController; -use Binaryk\LaravelRestify\Repositories\Repository; use Illuminate\Contracts\Debug\ExceptionHandler; use Illuminate\Support\Facades\Route; use Illuminate\Support\ServiceProvider; @@ -48,7 +46,7 @@ protected function registerRoutes() public function defaultRoutes($config) { Route::group($config, function () { - $this->loadRoutesFrom(__DIR__ . '/../routes/api.php'); + $this->loadRoutesFrom(__DIR__.'/../routes/api.php'); }); return $this; @@ -61,11 +59,11 @@ public function defaultRoutes($config) public function registerPrefixed($config) { collect(Restify::$repositories) - ->filter(fn($repository) => $repository::prefix()) + ->filter(fn ($repository) => $repository::prefix()) ->each(function ($repository) use ($config) { $config['prefix'] = $repository::prefix(); Route::group($config, function () { - $this->loadRoutesFrom(__DIR__ . '/../routes/api.php'); + $this->loadRoutesFrom(__DIR__.'/../routes/api.php'); }); }); diff --git a/tests/Repositories/RepositoryCustomPrefixTest.php b/tests/Repositories/RepositoryCustomPrefixTest.php index 0fe46fe33..4523b8365 100644 --- a/tests/Repositories/RepositoryCustomPrefixTest.php +++ b/tests/Repositories/RepositoryCustomPrefixTest.php @@ -16,9 +16,8 @@ protected function setUp(): void public function test_repository_can_have_custom_prefix() { - $this->getJson('api/restify-api/v1/' . PostRepository::uriKey()) + $this->getJson('api/restify-api/v1/'.PostRepository::uriKey()) ->dump() ->assertSuccessful(); - } } From c3b1d56a2c1c08505c9ba9ec966185871fb41fba Mon Sep 17 00:00:00 2001 From: Eduard Lupacescu Date: Wed, 22 Jul 2020 13:04:24 +0300 Subject: [PATCH 3/7] Blocking default request if prefix --- .../repository-pattern/repository-pattern.md | 34 ++++++++ src/Http/Middleware/RestifyInjector.php | 5 +- .../Requests/InteractWithRepositories.php | 8 +- src/Repositories/Repository.php | 25 +----- src/Repositories/WithRoutePrefix.php | 79 +++++++++++++++++++ src/RestifyServiceProvider.php | 17 +++- tests/Fixtures/User/UserRepository.php | 5 +- 7 files changed, 144 insertions(+), 29 deletions(-) create mode 100644 src/Repositories/WithRoutePrefix.php diff --git a/docs/docs/3.0/repository-pattern/repository-pattern.md b/docs/docs/3.0/repository-pattern/repository-pattern.md index 359d5e81f..030f131b7 100644 --- a/docs/docs/3.0/repository-pattern/repository-pattern.md +++ b/docs/docs/3.0/repository-pattern/repository-pattern.md @@ -94,6 +94,38 @@ class Post extends Repository ::: +## Repository prefix + +Restify generates the URI for the repository in the following way: + +```php +config('restify.base') . '/' . UserRepository::uriKey() . '/' +``` + +For example, let's assume we have the `restify.base` equal with: `api/restify`, the default URI generated for the UserRepository is: + +```http request +GET: /api/restify/users +``` + +However, you can prefix the repository with your own: + +```php +// UserRepository +public static $prefix = 'api/v1'; +``` + +Now, the generated URI will look like this: + +```http request +GET: /api/v1/users +``` + +:::tip +For the rest of the repositories the prefix will stay as it is, the default one. + +Keep in mind that this custom prefix, will be used for all the endpoints related to the user repository. +::: ## Repository middleware @@ -712,3 +744,5 @@ You can handle the repository boot, by using the `booted` static method: ```` + + diff --git a/src/Http/Middleware/RestifyInjector.php b/src/Http/Middleware/RestifyInjector.php index 50992c90a..73ff998d8 100644 --- a/src/Http/Middleware/RestifyInjector.php +++ b/src/Http/Middleware/RestifyInjector.php @@ -30,7 +30,10 @@ public function handle($request, Closure $next) $request->is('restify-api/*') || collect(Restify::$repositories) ->filter(fn($repository) => $repository::prefix()) - ->some(fn($repository) => $request->is($repository::prefix() . '/*')); + ->some(fn($repository) => $request->is($repository::prefix() . '/*')) || + collect(Restify::$repositories) + ->filter(fn($repository) => $repository::indexPrefix()) + ->some(fn($repository) => $request->is($repository::indexPrefix() . '/*')); app()->register(RestifyCustomRoutesProvider::class); diff --git a/src/Http/Requests/InteractWithRepositories.php b/src/Http/Requests/InteractWithRepositories.php index f632c3818..466c0163e 100644 --- a/src/Http/Requests/InteractWithRepositories.php +++ b/src/Http/Requests/InteractWithRepositories.php @@ -46,11 +46,17 @@ public function repository($key = null): ?Repository } if (! $repository::authorizedToUseRepository($this)) { - throw new UnauthorizedException(__('Unauthorized to view repository :name. See "allowRestify" policy.', [ + throw new UnauthorizedException(__('Unauthorized to view repository :name. Check "allowRestify" policy.', [ 'name' => $repository, ]), 403); } + if (! $repository::authorizedToUseRoute($this)) { + throw new UnauthorizedException(__('Unauthorized to use the route :name. Check prefix.', [ + 'name' => $this->getRequestUri() + ]), 403); + } + app(Pipeline::class) ->send($this) ->through(optional($repository::collectMiddlewares($this))->toArray()) diff --git a/src/Repositories/Repository.php b/src/Repositories/Repository.php index dab90d74d..da5b491c3 100644 --- a/src/Repositories/Repository.php +++ b/src/Repositories/Repository.php @@ -41,7 +41,8 @@ abstract class Repository implements RestifySearchable, JsonSerializable ConditionallyLoadsAttributes, DelegatesToResource, ResolvesActions, - RepositoryEvents; + RepositoryEvents, + WithRoutePrefix; /** * This is named `resource` because of the forwarding properties from DelegatesToResource trait. @@ -122,13 +123,6 @@ abstract class Repository implements RestifySearchable, JsonSerializable */ public static $with = []; - /** - * The repository routes default prefix. - * - * @var string - */ - public static $prefix; - public function __construct() { $this->bootIfNotBooted(); @@ -882,19 +876,4 @@ public static function getAttachers(): array { return static::$attachers; } - - public static function prefix(): ?string - { - $prefix = static::$prefix; - - if ($prefix && Str::startsWith($prefix, '/')) { - $prefix = Str::replaceFirst('/', '', $prefix); - } - - if ($prefix && Str::endsWith($prefix, '/')) { - $prefix = Str::replaceLast('/', '', $prefix); - } - - return $prefix; - } } diff --git a/src/Repositories/WithRoutePrefix.php b/src/Repositories/WithRoutePrefix.php new file mode 100644 index 000000000..f00c7b043 --- /dev/null +++ b/src/Repositories/WithRoutePrefix.php @@ -0,0 +1,79 @@ +isForRepositoryRequest()) { + // index + if (! static::indexPrefix()) { + return true; + } + + return $request->is(static::indexPrefix() . '/*'); + } else { + // the rest + return $request->is(static::prefix() . '/*'); + } + + } + + protected static function shouldAuthorizeRouteUsage(): bool + { + return collect([ + static::prefix(), + static::indexPrefix(), + ])->some(fn($prefix) => (bool) $prefix); + } +} diff --git a/src/RestifyServiceProvider.php b/src/RestifyServiceProvider.php index 38c5a0541..b442b0bff 100644 --- a/src/RestifyServiceProvider.php +++ b/src/RestifyServiceProvider.php @@ -38,7 +38,8 @@ protected function registerRoutes() ]; $this->defaultRoutes($config) - ->registerPrefixed($config); + ->registerPrefixed($config) + ->registerIndexPrefixed($config); } /** @@ -72,6 +73,20 @@ public function registerPrefixed($config) return $this; } + public function registerIndexPrefixed($config) + { + collect(Restify::$repositories) + ->filter(fn($repository) => $repository::indexPrefix()) + ->each(function ($repository) use ($config) { + $config['prefix'] = $repository::indexPrefix(); + Route::group($config, function () { + Route::get('/{repository}', '\\'.RepositoryIndexController::class); + }); + }); + + return $this; + } + /** * Register Restify's custom exception handler. * diff --git a/tests/Fixtures/User/UserRepository.php b/tests/Fixtures/User/UserRepository.php index 45bef9a5a..8f3f550bc 100644 --- a/tests/Fixtures/User/UserRepository.php +++ b/tests/Fixtures/User/UserRepository.php @@ -8,13 +8,12 @@ use Binaryk\LaravelRestify\Repositories\Repository; use Binaryk\LaravelRestify\Repositories\UserProfile; -/** - * @author Eduard Lupacescu - */ class UserRepository extends Repository { use UserProfile; + public static $prefix = 'api/v1'; + public static $model = User::class; public static $wasBooted = false; From 0679dfbbd9ef2ea189598e00307021fc12d2b544 Mon Sep 17 00:00:00 2001 From: Lupacescu Eduard Date: Wed, 22 Jul 2020 13:05:15 +0300 Subject: [PATCH 4/7] Apply fixes from StyleCI (#240) --- src/Http/Middleware/RestifyInjector.php | 8 ++++---- src/Http/Requests/InteractWithRepositories.php | 2 +- src/Repositories/WithRoutePrefix.php | 9 +++------ src/RestifyServiceProvider.php | 2 +- 4 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/Http/Middleware/RestifyInjector.php b/src/Http/Middleware/RestifyInjector.php index bb8b0e421..f6b450ce9 100644 --- a/src/Http/Middleware/RestifyInjector.php +++ b/src/Http/Middleware/RestifyInjector.php @@ -29,11 +29,11 @@ public function handle($request, Closure $next) $request->is(trim($path.'/*', '/')) || $request->is('restify-api/*') || collect(Restify::$repositories) - ->filter(fn($repository) => $repository::prefix()) - ->some(fn($repository) => $request->is($repository::prefix() . '/*')) || + ->filter(fn ($repository) => $repository::prefix()) + ->some(fn ($repository) => $request->is($repository::prefix().'/*')) || collect(Restify::$repositories) - ->filter(fn($repository) => $repository::indexPrefix()) - ->some(fn($repository) => $request->is($repository::indexPrefix() . '/*')); + ->filter(fn ($repository) => $repository::indexPrefix()) + ->some(fn ($repository) => $request->is($repository::indexPrefix().'/*')); app()->register(RestifyCustomRoutesProvider::class); diff --git a/src/Http/Requests/InteractWithRepositories.php b/src/Http/Requests/InteractWithRepositories.php index 466c0163e..4ae055fda 100644 --- a/src/Http/Requests/InteractWithRepositories.php +++ b/src/Http/Requests/InteractWithRepositories.php @@ -53,7 +53,7 @@ public function repository($key = null): ?Repository if (! $repository::authorizedToUseRoute($this)) { throw new UnauthorizedException(__('Unauthorized to use the route :name. Check prefix.', [ - 'name' => $this->getRequestUri() + 'name' => $this->getRequestUri(), ]), 403); } diff --git a/src/Repositories/WithRoutePrefix.php b/src/Repositories/WithRoutePrefix.php index f00c7b043..237203031 100644 --- a/src/Repositories/WithRoutePrefix.php +++ b/src/Repositories/WithRoutePrefix.php @@ -1,9 +1,7 @@ is(static::indexPrefix() . '/*'); + return $request->is(static::indexPrefix().'/*'); } else { // the rest - return $request->is(static::prefix() . '/*'); + return $request->is(static::prefix().'/*'); } - } protected static function shouldAuthorizeRouteUsage(): bool @@ -74,6 +71,6 @@ protected static function shouldAuthorizeRouteUsage(): bool return collect([ static::prefix(), static::indexPrefix(), - ])->some(fn($prefix) => (bool) $prefix); + ])->some(fn ($prefix) => (bool) $prefix); } } diff --git a/src/RestifyServiceProvider.php b/src/RestifyServiceProvider.php index d9b678523..a0dc833e7 100644 --- a/src/RestifyServiceProvider.php +++ b/src/RestifyServiceProvider.php @@ -74,7 +74,7 @@ public function registerPrefixed($config) public function registerIndexPrefixed($config) { collect(Restify::$repositories) - ->filter(fn($repository) => $repository::indexPrefix()) + ->filter(fn ($repository) => $repository::indexPrefix()) ->each(function ($repository) use ($config) { $config['prefix'] = $repository::indexPrefix(); Route::group($config, function () { From aec223610e6e48c70d2a6484e7b83517df42daea Mon Sep 17 00:00:00 2001 From: Eduard Lupacescu Date: Wed, 22 Jul 2020 13:17:05 +0300 Subject: [PATCH 5/7] Add tests --- src/Http/Requests/InteractWithRepositories.php | 4 ++-- src/Repositories/WithRoutePrefix.php | 8 +++++--- src/RestifyServiceProvider.php | 1 + tests/Fixtures/User/UserRepository.php | 2 -- .../Repositories/RepositoryCustomPrefixTest.php | 16 +++++++++++++++- 5 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/Http/Requests/InteractWithRepositories.php b/src/Http/Requests/InteractWithRepositories.php index 466c0163e..f184ee275 100644 --- a/src/Http/Requests/InteractWithRepositories.php +++ b/src/Http/Requests/InteractWithRepositories.php @@ -52,9 +52,9 @@ public function repository($key = null): ?Repository } if (! $repository::authorizedToUseRoute($this)) { - throw new UnauthorizedException(__('Unauthorized to use the route :name. Check prefix.', [ + abort(403, __('Unauthorized to use the route :name. Check prefix.', [ 'name' => $this->getRequestUri() - ]), 403); + ])); } app(Pipeline::class) diff --git a/src/Repositories/WithRoutePrefix.php b/src/Repositories/WithRoutePrefix.php index f00c7b043..7fc13f9ec 100644 --- a/src/Repositories/WithRoutePrefix.php +++ b/src/Repositories/WithRoutePrefix.php @@ -57,11 +57,13 @@ public static function authorizedToUseRoute(RestifyRequest $request): bool if ($request->isForRepositoryRequest()) { // index - if (! static::indexPrefix()) { - return true; + if (static::indexPrefix()) { + return $request->is(static::indexPrefix() . '/*'); } - return $request->is(static::indexPrefix() . '/*'); + if (static::prefix()) { + return $request->is(static::prefix() . '/*'); + } } else { // the rest return $request->is(static::prefix() . '/*'); diff --git a/src/RestifyServiceProvider.php b/src/RestifyServiceProvider.php index d9b678523..98ec86101 100644 --- a/src/RestifyServiceProvider.php +++ b/src/RestifyServiceProvider.php @@ -2,6 +2,7 @@ namespace Binaryk\LaravelRestify; +use Binaryk\LaravelRestify\Http\Controllers\RepositoryIndexController; use Illuminate\Contracts\Debug\ExceptionHandler; use Illuminate\Support\Facades\Route; use Illuminate\Support\ServiceProvider; diff --git a/tests/Fixtures/User/UserRepository.php b/tests/Fixtures/User/UserRepository.php index 8f3f550bc..8819b2fc9 100644 --- a/tests/Fixtures/User/UserRepository.php +++ b/tests/Fixtures/User/UserRepository.php @@ -12,8 +12,6 @@ class UserRepository extends Repository { use UserProfile; - public static $prefix = 'api/v1'; - public static $model = User::class; public static $wasBooted = false; diff --git a/tests/Repositories/RepositoryCustomPrefixTest.php b/tests/Repositories/RepositoryCustomPrefixTest.php index 4523b8365..e50980678 100644 --- a/tests/Repositories/RepositoryCustomPrefixTest.php +++ b/tests/Repositories/RepositoryCustomPrefixTest.php @@ -2,6 +2,7 @@ namespace Binaryk\LaravelRestify\Tests\Repositories; +use Binaryk\LaravelRestify\Restify; use Binaryk\LaravelRestify\Tests\Fixtures\Post\PostRepository; use Binaryk\LaravelRestify\Tests\IntegrationTest; @@ -11,13 +12,26 @@ protected function setUp(): void { PostRepository::$prefix = 'api/restify-api/v1'; + PostRepository::$indexPrefix = 'api/restify-api/index'; + parent::setUp(); } public function test_repository_can_have_custom_prefix() { $this->getJson('api/restify-api/v1/'.PostRepository::uriKey()) - ->dump() ->assertSuccessful(); } + + public function test_repository_prefix_block_default_route() + { + $this->getJson('/restify-api/'.PostRepository::uriKey()) + ->assertForbidden(); + + $this->getJson('api/restify-api/index/'.PostRepository::uriKey()) + ->assertSuccessful(); + + $this->postJson('/restify-api/'.PostRepository::uriKey()) + ->assertForbidden(); + } } From e7e769fab2df81aa240bfcedf534a2152c348f4a Mon Sep 17 00:00:00 2001 From: Lupacescu Eduard Date: Wed, 22 Jul 2020 14:11:58 +0300 Subject: [PATCH 6/7] Apply fixes from StyleCI (#242) --- src/Http/Requests/InteractWithRepositories.php | 2 +- src/Repositories/WithRoutePrefix.php | 11 ++++------- tests/Repositories/RepositoryCustomPrefixTest.php | 1 - 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/Http/Requests/InteractWithRepositories.php b/src/Http/Requests/InteractWithRepositories.php index f184ee275..210e4dbe0 100644 --- a/src/Http/Requests/InteractWithRepositories.php +++ b/src/Http/Requests/InteractWithRepositories.php @@ -53,7 +53,7 @@ public function repository($key = null): ?Repository if (! $repository::authorizedToUseRoute($this)) { abort(403, __('Unauthorized to use the route :name. Check prefix.', [ - 'name' => $this->getRequestUri() + 'name' => $this->getRequestUri(), ])); } diff --git a/src/Repositories/WithRoutePrefix.php b/src/Repositories/WithRoutePrefix.php index 7fc13f9ec..959f5b19d 100644 --- a/src/Repositories/WithRoutePrefix.php +++ b/src/Repositories/WithRoutePrefix.php @@ -1,9 +1,7 @@ isForRepositoryRequest()) { // index if (static::indexPrefix()) { - return $request->is(static::indexPrefix() . '/*'); + return $request->is(static::indexPrefix().'/*'); } if (static::prefix()) { - return $request->is(static::prefix() . '/*'); + return $request->is(static::prefix().'/*'); } } else { // the rest - return $request->is(static::prefix() . '/*'); + return $request->is(static::prefix().'/*'); } - } protected static function shouldAuthorizeRouteUsage(): bool @@ -76,6 +73,6 @@ protected static function shouldAuthorizeRouteUsage(): bool return collect([ static::prefix(), static::indexPrefix(), - ])->some(fn($prefix) => (bool) $prefix); + ])->some(fn ($prefix) => (bool) $prefix); } } diff --git a/tests/Repositories/RepositoryCustomPrefixTest.php b/tests/Repositories/RepositoryCustomPrefixTest.php index e50980678..7c337e04b 100644 --- a/tests/Repositories/RepositoryCustomPrefixTest.php +++ b/tests/Repositories/RepositoryCustomPrefixTest.php @@ -2,7 +2,6 @@ namespace Binaryk\LaravelRestify\Tests\Repositories; -use Binaryk\LaravelRestify\Restify; use Binaryk\LaravelRestify\Tests\Fixtures\Post\PostRepository; use Binaryk\LaravelRestify\Tests\IntegrationTest; From 5abf32eb97dab15c6294e2a16506016b5baf64a6 Mon Sep 17 00:00:00 2001 From: Eduard Lupacescu Date: Wed, 22 Jul 2020 14:12:27 +0300 Subject: [PATCH 7/7] wip --- tests/Repositories/RepositoryCustomPrefixTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Repositories/RepositoryCustomPrefixTest.php b/tests/Repositories/RepositoryCustomPrefixTest.php index e50980678..dd9366297 100644 --- a/tests/Repositories/RepositoryCustomPrefixTest.php +++ b/tests/Repositories/RepositoryCustomPrefixTest.php @@ -19,7 +19,7 @@ protected function setUp(): void public function test_repository_can_have_custom_prefix() { - $this->getJson('api/restify-api/v1/'.PostRepository::uriKey()) + $this->getJson('api/restify-api/index/'.PostRepository::uriKey()) ->assertSuccessful(); }