diff --git a/src/Controller/Component/CRUDComponent.php b/src/Controller/Component/CRUDComponent.php index 24b7268..e7092a1 100644 --- a/src/Controller/Component/CRUDComponent.php +++ b/src/Controller/Component/CRUDComponent.php @@ -1165,6 +1165,7 @@ class CRUDComponent extends Component throw new NotFoundException(__('Could not save {0} due to the input failing to meet expectations. Your input is bad and you should feel bad.', $this->ObjectAlias)); } } catch (\Exception $e) { + $exceptionMessage = $e->getMessage(); $entity = false; } } @@ -1182,7 +1183,7 @@ class CRUDComponent extends Component $isBulk, __('{0} deleted.', $this->ObjectAlias), __('All selected {0} have been deleted.', Inflector::pluralize($this->ObjectAlias)), - __('Could not delete {0}.', $this->ObjectAlias), + $exceptionMessage ?? __('Could not delete {0}.', $this->ObjectAlias), __( '{0} / {1} {2} have been deleted.', $bulkSuccesses, diff --git a/src/Controller/RolesController.php b/src/Controller/RolesController.php index 9e909c1..e4c8705 100644 --- a/src/Controller/RolesController.php +++ b/src/Controller/RolesController.php @@ -78,7 +78,15 @@ class RolesController extends AppController public function delete($id) { - $this->CRUD->delete($id); + $this->CRUD->delete($id, [ + 'beforeSave' => function ($data) { + $userCount = $this->Roles->Users->find()->where(['role_id' => $data['id']])->count(); + if ($userCount > 0) { + throw new ForbiddenException(__('You cannot delete a role that has users assigned to it.')); + } + return true; + } + ]); $responsePayload = $this->CRUD->getResponsePayload(); if (!empty($responsePayload)) { return $responsePayload;