protected function onSuccess(UserInterface $user, $confirmation) { $group = $this->groupManager->findGroupBy(array('id' => 2)); if (!empty($group)) { $role = new UserRole(); $role->setGroupe($group); $role->setUser($user); $role->setRole("usr"); $this->em->persist($role); $this->em->flush(); $user->addGroup($group); $user->setChosenGroup($group); } parent::onSuccess($user, $confirmation); $mainBotAccount = $this->userManager->findUserBy(array('id' => 20)); if ($this->registrationMessage->hasMessage()) { $content = $this->registrationMessage->getMessage(); } else { $content = ''; } if (!empty($mainBotAccount) && !empty($content)) { $salon = new Salon(); $salon->setName('Discussion privée'); $salon = $this->salonManager->createSalon($salon, array($user, $mainBotAccount), array($user), true); $message = $this->persistManager->buildMessage($mainBotAccount, $salon, $content, new \DateTime()); $this->persistManager->persistMessage($message); } }
public function addUserAction($id) { /* Récupération du groupe */ $em = $this->getDoctrine()->getManager(); $groupsRepository = $em->getRepository('TerAelisUserBundle:Group'); $group = $groupsRepository->findOneBy(array('id' => $id)); if ($group == null) { throw $this->createNotFoundException('Groupe inexistant (id = ' . $id . ')'); } /* Vérification de la permission */ /* Modérateurs */ $usersRepository = $em->getRepository('TerAelisUserBundle:User'); $mods = $usersRepository->findModsByGroup($id); $user = $this->getUser(); if (empty($user)) { throw new AccessDeniedException("Vous n'avez pas le droit de gérer les utilisateurs de ce groupe."); } if (!$user->hasRole('ROLE_ADMIN')) { $userId = $user->getId(); $allow = false; foreach ($mods as $m) { if ($m->getId() == $userId) { $allow = true; break; } } } else { $allow = true; } if (!$allow) { throw new AccessDeniedException("Vous n'avez pas le droit de gérer les utilisateurs de ce groupe."); } /* Ajout du groupe au rôle */ $role = new UserRole(); $role->setGroupe($group); $form = $this->createFormBuilder($role)->add('user', 'text')->getForm(); // Le formulaire est déjà envoyé $request = $this->getRequest(); if ($request->getMethod() == 'POST') { // On récupère les informations $form->bind($request); // On l'ajoute dans la BDD $em = $this->getDoctrine()->getManager(); $repositoryUser = $em->getRepository("TerAelisUserBundle:User"); $user = $repositoryUser->findOneByName($form["user"]->getData()); if (empty($user)) { $form->addError(new FormError('Cet utilisateur n\'existe pas.')); } // Gestion de la validation du formulaire if ($form->isValid()) { $role->setUser($user); $role->setRole("usr"); $em->persist($role); $em->flush(); $user->addGroup($group); $em->persist($user); $em->flush(); // On informe le user que c'est bon $this->get('session')->getFlashBag()->add('info', "L'utilisateur a été ajouté avec succes."); // Puis on redirige vers la page de visualisation de cet article return $this->redirect($this->generateUrl('group_view', array('id' => $id))); } } return $this->render('TerAelisUserBundle:Group:add.html.twig', array('group' => $group, 'form' => $form->createView(), 'submit' => 'Ajouter')); }