public function fromStudent(Student $student) { $this->setLogin($student->getLogin()); $this->setFirstname($student->getFirstName()); $this->setLastname($student->getLastName()); if (in_array('ROLE_ADMIN', $this->roles) || in_array('ROLE_SUPER_ADMIN', $this->roles)) { return; } if (($groups = $student->getInfo('groups')) != null) { foreach ($groups as $group) { if (isset($group['title'])) { if (preg_match('#^Lille$#', $group['title'])) { $this->roles[] = 'ROLE_STUDENT_LILLE'; } } } } }
/** * @Security("has_role('ROLE_SUPER_ADMIN')") * @Template() */ public function editAction(Request $request) { // Shortcuts $em = $this->getDoctrine()->getManager(); $csrf = $this->get('form.csrf_provider'); $post = $request->request->all(); $admin_logger = $this->get('after_epi.admin.logger'); if ($request->isMethod('POST')) { $errors = array(); if (!array_key_exists('csrf_token', $post) || !$csrf->isCsrfTokenValid('user_edit', $post['csrf_token'])) { $errors[0][] = 'La vérification du jeton de sécurité a échoué.'; } if ($request->query->has('id')) { if (($user = $em->getRepository('AfterEpiUserBundle:User')->find($request->query->get('id'))) == null) { throw $this->createNotFoundException('User not found'); } if (!array_key_exists('roles', $post) || !is_array($post['roles']) || count($post['roles']) == 0) { $errors[0][] = 'Vous devez mettre au moins 1 droit.'; } if (count($errors) > 0) { return array('user' => $user, 'errors' => $errors, 'post' => $post); } $user->setRoles($post['roles']); $em->persist($user); $em->flush(); $admin_logger->log("Edition de l'utlisateur [" . $user->getId() . "] [" . $user->getLogin() . "]"); $this->get('session')->getFlashBag()->add('success', "L'utilisateur [" . $user->getLogin() . "] a été modifié."); return $this->redirect($this->generateUrl($request->get('_route'), $request->query->all())); } if (!array_key_exists('login', $post) || empty($post['login'])) { $errors['login'] = '******'; } if (!array_key_exists('password', $post) || empty($post['password'])) { $errors['password'] = '******'; } if (count($errors) > 0) { return array('errors' => $errors, 'post' => $post); } if (($user = $em->getRepository('AfterEpiUserBundle:User')->findOneBy(array('login' => $post['login']))) != null) { $this->get('session')->getFlashBag()->add('info', "Utilisateur [" . $user->getLogin() . "] existe déjà."); return $this->redirect($this->generateUrl('afterepi_user_admin_view', array('id' => $user->getId()))); } $connector = new Connector($this->getUser()->getLogin(), $post['password']); if (!$connector->isSignedIn()) { $this->get('session')->getFlashBag()->add('alert', "Connexion impossible à l'intranet."); return $this->redirect($this->generateUrl($request->get('_route'))); } $student = new Student($connector, $request->get('login', null)); if ($student->getLogin() == null || $student->getFirstName() == null || $student->getLastName() == null) { $this->get('session')->getFlashBag()->add('alert', "L'utilisateur [" . $request->get('login', null) . "] est invalide."); return $this->redirect($this->generateUrl($request->get('_route'))); } $user = new User(); $user->fromStudent($student); $user->setAccount(new Account()); $em->persist($user); $em->flush(); $admin_logger->log("Edition de l'utlisateur [" . $user->getId() . "] [" . $user->getLogin() . "]"); $this->get('session')->getFlashBag()->add('success', "L'utilisateur [" . $user->getLogin() . "] a été ajouté."); return $this->redirect($this->generateUrl('afterepi_user_admin_view', array('id' => $user->getId()))); } else { if ($request->query->has('id')) { if (($user = $em->getRepository('AfterEpiUserBundle:User')->find($request->query->get('id'))) == null) { throw $this->createNotFoundException('User not found'); } return array('user' => $user); } } return array(); }