/** * Delegate base right * * @GroupSecurity("user_can('delegate')", group="permission.getGroup()", strict_expression=true) * * @Route("/delegate/{group}/{user}", name="adh_user_group_delegate") * @Method({"GET", "POST"}) * * @ParamConverter("permission", options={"repository_method": "findOneByGroupAndUser", "mapping": {"group": "group", "user": "******"}, "map_method_signature": true}) * * @param Request $request * @param Group $group */ public function delegateAction(Request $request, GroupUserPermission $permission) { $groupSecurityChecker = $this->get("adh_user.group_security_checker"); $userPermission = $groupSecurityChecker->getUserPermission($permission->getGroup()); $delegateBaseRight = new DelegateBaseRight($permission); $form = $this->createForm(new DelegateBaseRightType($userPermission), $delegateBaseRight); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $entityManager = $this->getDoctrine()->getManager(); $permission->setAddMemberRight($delegateBaseRight->hasAddMemberRight()); $permission->setRemoveMemberRight($delegateBaseRight->hasRemoveMemberRight()); $permission->setChangeStatusRight($delegateBaseRight->hasChangeStatusRight()); $entityManager->flush(); return $this->redirectToRoute("adh_user_group_member_list", array("group" => $permission->getGroup()->getShortRole())); } return $this->render("ADHUserBundle:Group/Right:delegate.html.twig", array("user" => $permission->getUser(), "group" => $permission->getGroup(), "form" => $form->createView())); }