diff --git a/Controller/ApiController.php b/Controller/ApiController.php index e93467c..ac2119f 100644 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -212,7 +212,7 @@ final class ApiController extends Controller } $group = $this->createGroupFromRequest($request); - $this->createModel($request, $group, GroupMapper::class, 'group'); + $this->createModel($request->getHeader()->getAccount(), $group, GroupMapper::class, 'group'); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Group', 'Group successfully created', $group); } @@ -411,7 +411,7 @@ final class ApiController extends Controller } $account = $this->createAccountFromRequest($request); - $this->createModel($request, $account, AccountMapper::class, 'account'); + $this->createModel($request->getHeader()->getAccount(), $account, AccountMapper::class, 'account'); $this->createProfileForAccount($account, $request); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Account', 'Account successfully created', $account); } @@ -635,7 +635,7 @@ final class ApiController extends Controller return; } - $this->createModel($request, $permission, GroupPermissionMapper::class, 'group-permission'); + $this->createModel($request->getHeader()->getAccount(), $permission, GroupPermissionMapper::class, 'group-permission'); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Group', 'Group permission successfully created', $permission); } @@ -668,10 +668,27 @@ final class ApiController extends Controller return; } - $this->createModel($request, $permission, AccountPermissionMapper::class, 'account-permission'); + $this->createModel($request->getHeader()->getAccount(), $permission, AccountPermissionMapper::class, 'account-permission'); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Account', 'Account permission successfully created', $permission); } + /** + * Api method to add a permission to a account-model combination + * + * @param PermissionAbstract $permission Permission to create for account-model combination + * @param int $account Account creating this model + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function createAccountModelPermission(PermissionAbstract $permission, int $account) : void + { + $this->createModel($account, $permission, AccountPermissionMapper::class, 'account-permission'); + } + /** * Validate permission create request * diff --git a/Models/AccountPermission.php b/Models/AccountPermission.php index b0cbe8e..335c989 100644 --- a/Models/AccountPermission.php +++ b/Models/AccountPermission.php @@ -15,6 +15,7 @@ declare(strict_types=1); namespace Modules\Admin\Models; use phpOMS\Account\PermissionAbstract; +use phpOMS\Account\PermissionType; /** * Account permission class. @@ -39,13 +40,30 @@ class AccountPermission extends PermissionAbstract /** * Constructor. * - * @param int $account Group id + * @param int $account Group id + * @param null|int $unit Unit Unit to check (null if all are acceptable) + * @param null|string $app App App to check (null if all are acceptable) + * @param null|string $module Module Module to check (null if all are acceptable) + * @param null|int $type Type (e.g. customer) (null if all are acceptable) + * @param null|int $element (e.g. customer id) (null if all are acceptable) + * @param null|int $component (e.g. address) (null if all are acceptable) + * @param int $permission Permission to check * * @since 1.0.0 */ - public function __construct(int $account = 0) - { + public function __construct( + int $account = 0, + int $unit = null, + string $app = null, + string $module = null, + int $from = 0, + int $type = null, + int $element = null, + int $component = null, + int $permission = PermissionType::NONE + ) { $this->account = $account; + parent::__construct($unit, $app, $module, $from, $type, $element, $component, $permission); } /** diff --git a/Models/GroupPermission.php b/Models/GroupPermission.php index 6412e9b..48ba90e 100644 --- a/Models/GroupPermission.php +++ b/Models/GroupPermission.php @@ -15,6 +15,7 @@ declare(strict_types=1); namespace Modules\Admin\Models; use phpOMS\Account\PermissionAbstract; +use phpOMS\Account\PermissionType; /** * Group permission class. @@ -39,13 +40,30 @@ class GroupPermission extends PermissionAbstract /** * Constructor. * - * @param int $group Group id + * @param int $group Group id + * @param null|int $unit Unit Unit to check (null if all are acceptable) + * @param null|string $app App App to check (null if all are acceptable) + * @param null|string $module Module Module to check (null if all are acceptable) + * @param null|int $type Type (e.g. customer) (null if all are acceptable) + * @param null|int $element (e.g. customer id) (null if all are acceptable) + * @param null|int $component (e.g. address) (null if all are acceptable) + * @param int $permission Permission to check * * @since 1.0.0 */ - public function __construct(int $group = 0) - { + public function __construct( + int $group = 0, + int $unit = null, + string $app = null, + string $module = null, + int $from = 0, + int $type = null, + int $element = null, + int $component = null, + int $permission = PermissionType::NONE + ) { $this->group = $group; + parent::__construct($unit, $app, $module, $from, $type, $element, $component, $permission); } /**