From 9482487addbb745f849d0c1de731e596e4cab0f6 Mon Sep 17 00:00:00 2001 From: Sam Poyigi <6567634+sampoyigi@users.noreply.github.com> Date: Sun, 14 Jan 2024 01:26:58 +0000 Subject: [PATCH] Refactor code to use parameter, return type hints Signed-off-by: Sam Poyigi <6567634+sampoyigi@users.noreply.github.com> --- src/ApiResources/Categories.php | 2 +- src/ApiResources/Currencies.php | 2 +- src/ApiResources/Customers.php | 2 +- src/ApiResources/DiningTables.php | 2 +- src/ApiResources/Locations.php | 2 +- src/ApiResources/MenuItemOptions.php | 2 +- src/ApiResources/MenuOptions.php | 2 +- src/ApiResources/Menus.php | 2 +- src/ApiResources/Orders.php | 2 +- src/ApiResources/Reservations.php | 2 +- src/ApiResources/Reviews.php | 2 +- src/Classes/ApiController.php | 36 ++++++++++++++++++++++++++-- src/Console/stubs/controller.stub | 2 +- src/Extension.php | 4 ++-- src/Http/Actions/RestController.php | 2 +- src/Http/Controllers/Resources.php | 8 +++---- src/Http/Controllers/Tokens.php | 6 ++--- 17 files changed, 56 insertions(+), 24 deletions(-) diff --git a/src/ApiResources/Categories.php b/src/ApiResources/Categories.php index ccb0cd2..ad9760f 100644 --- a/src/ApiResources/Categories.php +++ b/src/ApiResources/Categories.php @@ -9,7 +9,7 @@ */ class Categories extends ApiController { - public $implement = [\Igniter\Api\Http\Actions\RestController::class]; + public array $implement = [\Igniter\Api\Http\Actions\RestController::class]; public $restConfig = [ 'actions' => [ diff --git a/src/ApiResources/Currencies.php b/src/ApiResources/Currencies.php index e684079..3ba60e8 100644 --- a/src/ApiResources/Currencies.php +++ b/src/ApiResources/Currencies.php @@ -9,7 +9,7 @@ */ class Currencies extends ApiController { - public $implement = [\Igniter\Api\Http\Actions\RestController::class]; + public array $implement = [\Igniter\Api\Http\Actions\RestController::class]; public $restConfig = [ 'actions' => [ diff --git a/src/ApiResources/Customers.php b/src/ApiResources/Customers.php index 11e4337..7c36163 100644 --- a/src/ApiResources/Customers.php +++ b/src/ApiResources/Customers.php @@ -10,7 +10,7 @@ */ class Customers extends ApiController { - public $implement = [\Igniter\Api\Http\Actions\RestController::class]; + public array $implement = [\Igniter\Api\Http\Actions\RestController::class]; public $restConfig = [ 'actions' => [ diff --git a/src/ApiResources/DiningTables.php b/src/ApiResources/DiningTables.php index 06e8571..e7cce2e 100644 --- a/src/ApiResources/DiningTables.php +++ b/src/ApiResources/DiningTables.php @@ -9,7 +9,7 @@ */ class DiningTables extends ApiController { - public $implement = [\Igniter\Api\Http\Actions\RestController::class]; + public array $implement = [\Igniter\Api\Http\Actions\RestController::class]; public $restConfig = [ 'actions' => [ diff --git a/src/ApiResources/Locations.php b/src/ApiResources/Locations.php index cf4ca29..3c33f9a 100644 --- a/src/ApiResources/Locations.php +++ b/src/ApiResources/Locations.php @@ -9,7 +9,7 @@ */ class Locations extends ApiController { - public $implement = [\Igniter\Api\Http\Actions\RestController::class]; + public array $implement = [\Igniter\Api\Http\Actions\RestController::class]; public $restConfig = [ 'actions' => [ diff --git a/src/ApiResources/MenuItemOptions.php b/src/ApiResources/MenuItemOptions.php index bbcf385..92d218b 100644 --- a/src/ApiResources/MenuItemOptions.php +++ b/src/ApiResources/MenuItemOptions.php @@ -9,7 +9,7 @@ */ class MenuItemOptions extends ApiController { - public $implement = [\Igniter\Api\Http\Actions\RestController::class]; + public array $implement = [\Igniter\Api\Http\Actions\RestController::class]; public $restConfig = [ 'actions' => [ diff --git a/src/ApiResources/MenuOptions.php b/src/ApiResources/MenuOptions.php index f8bec93..29b2fc5 100644 --- a/src/ApiResources/MenuOptions.php +++ b/src/ApiResources/MenuOptions.php @@ -9,7 +9,7 @@ */ class MenuOptions extends ApiController { - public $implement = [\Igniter\Api\Http\Actions\RestController::class]; + public array $implement = [\Igniter\Api\Http\Actions\RestController::class]; public $restConfig = [ 'actions' => [ diff --git a/src/ApiResources/Menus.php b/src/ApiResources/Menus.php index 0ff8c9b..bbc443a 100644 --- a/src/ApiResources/Menus.php +++ b/src/ApiResources/Menus.php @@ -9,7 +9,7 @@ */ class Menus extends ApiController { - public $implement = [\Igniter\Api\Http\Actions\RestController::class]; + public array $implement = [\Igniter\Api\Http\Actions\RestController::class]; public $restConfig = [ 'actions' => [ diff --git a/src/ApiResources/Orders.php b/src/ApiResources/Orders.php index 5727ba4..9839f69 100644 --- a/src/ApiResources/Orders.php +++ b/src/ApiResources/Orders.php @@ -9,7 +9,7 @@ */ class Orders extends ApiController { - public $implement = [\Igniter\Api\Http\Actions\RestController::class]; + public array $implement = [\Igniter\Api\Http\Actions\RestController::class]; public $restConfig = [ 'actions' => [ diff --git a/src/ApiResources/Reservations.php b/src/ApiResources/Reservations.php index 6d27022..e7e6833 100644 --- a/src/ApiResources/Reservations.php +++ b/src/ApiResources/Reservations.php @@ -9,7 +9,7 @@ */ class Reservations extends ApiController { - public $implement = [\Igniter\Api\Http\Actions\RestController::class]; + public array $implement = [\Igniter\Api\Http\Actions\RestController::class]; public $restConfig = [ 'actions' => [ diff --git a/src/ApiResources/Reviews.php b/src/ApiResources/Reviews.php index 0df2d5e..cebefb8 100644 --- a/src/ApiResources/Reviews.php +++ b/src/ApiResources/Reviews.php @@ -9,7 +9,7 @@ */ class Reviews extends ApiController { - public $implement = [\Igniter\Api\Http\Actions\RestController::class]; + public array $implement = [\Igniter\Api\Http\Actions\RestController::class]; public $restConfig = [ 'actions' => [ diff --git a/src/Classes/ApiController.php b/src/Classes/ApiController.php index 4800159..fc4c247 100644 --- a/src/Classes/ApiController.php +++ b/src/Classes/ApiController.php @@ -5,18 +5,30 @@ use Igniter\Admin\Traits\ValidatesForm; use Igniter\Api\Traits\AuthorizesRequest; use Igniter\Api\Traits\CreatesResponse; +use Igniter\Flame\Support\Extendable; +use Igniter\Flame\Traits\EventEmitter; use Igniter\System\Classes\BaseController; use Illuminate\Contracts\Support\Responsable; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; -class ApiController extends BaseController +class ApiController extends Extendable { use AuthorizesRequest; use CreatesResponse; use ValidatesForm; + use EventEmitter; - public $allowedActions = []; + public array $allowedActions = []; + + /** + * @var array Default actions which cannot be called as actions. + */ + public $hiddenActions = [ + 'checkAction', + 'execPageAction', + 'handleError', + ]; /** * @var array Token abilities required to access methods on this controller. @@ -24,6 +36,21 @@ class ApiController extends BaseController */ protected $requiredAbilities; + /** + * @var int Response status code + */ + protected $statusCode = 200; + + /** + * Class constructor + */ + public function __construct() + { + $this->extendableConstruct(); + + $this->fireSystemEvent('api.controller.beforeConstructor', [$this]); + } + public function getAbilities() { return $this->requiredAbilities; @@ -67,6 +94,11 @@ public function checkAction($action) return $methodExists; } + public function setStatusCode($code) + { + $this->statusCode = $code; + } + protected function authorizeToken() { if (!$ability = $this->getAbilities()) { diff --git a/src/Console/stubs/controller.stub b/src/Console/stubs/controller.stub index fc6d48d..f201782 100644 --- a/src/Console/stubs/controller.stub +++ b/src/Console/stubs/controller.stub @@ -7,7 +7,7 @@ use Igniter\Api\Classes\ApiController; */ class {{studly_name}} extends ApiController { - public $implement = [ + public array $implement = [ \Igniter\Api\Http\Actions\RestController::class ]; diff --git a/src/Extension.php b/src/Extension.php index 056e76d..5711956 100755 --- a/src/Extension.php +++ b/src/Extension.php @@ -59,7 +59,7 @@ public function boot() $this->sanctumConfigureMiddleware(); } - public function registerNavigation() + public function registerNavigation(): array { return [ 'tools' => [ @@ -76,7 +76,7 @@ public function registerNavigation() ]; } - public function registerPermissions() + public function registerPermissions(): array { return [ 'Igniter.Api.Manage' => [ diff --git a/src/Http/Actions/RestController.php b/src/Http/Actions/RestController.php index 701bec5..401aee7 100644 --- a/src/Http/Actions/RestController.php +++ b/src/Http/Actions/RestController.php @@ -30,7 +30,7 @@ class RestController extends ControllerAction /** * {@inheritdoc} */ - protected $requiredProperties = ['restConfig']; + protected array $requiredProperties = ['restConfig']; /** * @var array Configuration values that must exist when applying the primary config file. diff --git a/src/Http/Controllers/Resources.php b/src/Http/Controllers/Resources.php index 125e06a..5e7c0fb 100755 --- a/src/Http/Controllers/Resources.php +++ b/src/Http/Controllers/Resources.php @@ -9,12 +9,12 @@ */ class Resources extends \Igniter\Admin\Classes\AdminController { - public $implement = [ + public array $implement = [ \Igniter\Admin\Http\Actions\FormController::class, \Igniter\Admin\Http\Actions\ListController::class, ]; - public $listConfig = [ + public array $listConfig = [ 'list' => [ 'model' => \Igniter\Api\Models\Resource::class, 'title' => 'APIs', @@ -24,7 +24,7 @@ class Resources extends \Igniter\Admin\Classes\AdminController ], ]; - public $formConfig = [ + public array $formConfig = [ 'name' => 'APIs', 'model' => \Igniter\Api\Models\Resource::class, 'request' => \Igniter\Api\Requests\ResourceRequest::class, @@ -43,7 +43,7 @@ class Resources extends \Igniter\Admin\Classes\AdminController 'configFile' => 'resource', ]; - protected $requiredPermissions = 'Igniter.Api.*'; + protected null|string|array $requiredPermissions = 'Igniter.Api.*'; public function __construct() { diff --git a/src/Http/Controllers/Tokens.php b/src/Http/Controllers/Tokens.php index 4db8d8c..fae4176 100644 --- a/src/Http/Controllers/Tokens.php +++ b/src/Http/Controllers/Tokens.php @@ -12,11 +12,11 @@ */ class Tokens extends \Igniter\Admin\Classes\AdminController { - public $implement = [ + public array $implement = [ \Igniter\Admin\Http\Actions\ListController::class, ]; - public $listConfig = [ + public array $listConfig = [ 'list' => [ 'model' => \Igniter\Api\Models\Token::class, 'title' => 'igniter.api::default.text_tokens_title', @@ -27,7 +27,7 @@ class Tokens extends \Igniter\Admin\Classes\AdminController ], ]; - protected $requiredPermissions = 'Igniter.Api.*'; + protected null|string|array $requiredPermissions = 'Igniter.Api.*'; public function __construct() {