diff --git a/src/Controller/RoleController.php b/src/Controller/RoleController.php index 49c03bc5..3d34eb50 100644 --- a/src/Controller/RoleController.php +++ b/src/Controller/RoleController.php @@ -9,6 +9,7 @@ use Doctrine\ORM\Query; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Validator\Validator\ValidatorInterface; +use Doctrine\DBAL\Exception\ForeignKeyConstraintViolationException; use App\Menu\Generator as MenuGenerator; use App\Access\Generator as ACLGenerator; @@ -275,7 +276,19 @@ class RoleController extends BaseController ], 422); } else { // validated! save the entity - $em->flush(); + // catch the exception in case user updated the id + try + { + $em->flush(); + } + catch(ForeignKeyConstraintViolationException $e) + { + $error_array['id'] = 'Role has already been assigned to user/s and id cannot be updated'; + return $this->json([ + 'success' => false, + 'errors' => $error_array + ], 403); + } // return successful response return $this->json([ diff --git a/templates/role/form.html.twig b/templates/role/form.html.twig index 7d86d28e..700356d3 100644 --- a/templates/role/form.html.twig +++ b/templates/role/form.html.twig @@ -116,7 +116,8 @@ } }); }).fail(function(response) { - if (response.status == 422) { + console.log(response.status); + if (response.status == 422 || response.status == 403) { var errors = response.responseJSON.errors; var firstfield = false;