X-Git-Url: https://git.rapsys.eu/airbundle/blobdiff_plain/d3c02a8c0ed29240c98bea074ff3c5ff230e30cd..HEAD:/Controller/DefaultController.php diff --git a/Controller/DefaultController.php b/Controller/DefaultController.php index 0cdea2e..1459096 100644 --- a/Controller/DefaultController.php +++ b/Controller/DefaultController.php @@ -20,7 +20,6 @@ use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\Mailer\Exception\TransportExceptionInterface; use Symfony\Component\Mime\Address; -use Symfony\Component\Security\Core\Authentication\Token\AnonymousToken; use Symfony\Component\Security\Core\Exception\AccessDeniedException; use Rapsys\AirBundle\Entity\Dance; @@ -28,6 +27,7 @@ use Rapsys\AirBundle\Entity\Location; use Rapsys\AirBundle\Entity\Session; use Rapsys\AirBundle\Entity\Snippet; use Rapsys\AirBundle\Entity\User; +use Rapsys\AirBundle\Token\AnonymousToken; /** * {@inheritdoc} @@ -36,14 +36,14 @@ class DefaultController extends AbstractController { /** * The about page * - * @desc Display the about informations + * Display the about informations * * @param Request $request The request instance * @return Response The rendered view */ public function about(Request $request): Response { //Set page - $this->context['title'] = $this->translator->trans('About'); + $this->context['title']['page'] = $this->translator->trans('About'); //Set description $this->context['description'] = $this->translator->trans('Libre Air about'); @@ -67,7 +67,7 @@ class DefaultController extends AbstractController { /** * The contact page * - * @desc Send a contact mail to configured contact + * Send a contact mail to configured contact * * @param Request $request The request instance * @@ -75,7 +75,7 @@ class DefaultController extends AbstractController { */ public function contact(Request $request): Response { //Set page - $this->context['title'] = $this->translator->trans('Contact'); + $this->context['title']['page'] = $this->translator->trans('Contact'); //Set description $this->context['description'] = $this->translator->trans('Contact Libre Air'); @@ -93,7 +93,7 @@ class DefaultController extends AbstractController { $data = []; //With user - if ($user = $this->getUser()) { + if ($user = $this->security->getUser()) { //Set data $data = [ 'name' => $user->getRecipientName(), @@ -103,8 +103,9 @@ class DefaultController extends AbstractController { //Create the form according to the FormType created previously. //And give the proper parameters - $form = $this->createForm('Rapsys\AirBundle\Form\ContactType', $data, [ - 'action' => $this->generateUrl('rapsys_air_contact'), + $form = $this->factory->create('Rapsys\AirBundle\Form\ContactType', $data, [ + 'action' => $this->generateUrl('rapsysair_contact'), + 'captcha' => true, 'method' => 'POST' ]); @@ -121,7 +122,7 @@ class DefaultController extends AbstractController { //Set sender ->from(new Address($data['mail'], $data['name'])) //Set recipient - ->to(new Address($this->context['contact']['mail'], $this->context['contact']['title'])) + ->to(new Address($this->context['contact']['address'], $this->context['contact']['name'])) //Set subject ->subject($data['subject']) @@ -149,10 +150,10 @@ class DefaultController extends AbstractController { } catch(TransportExceptionInterface $e) { if ($message = $e->getMessage()) { //Add error message mail unreachable - $form->get('mail')->addError(new FormError($this->translator->trans('Unable to contact: %mail%: %message%', ['%mail%' => $this->context['contact']['mail'], '%message%' => $this->translator->trans($message)]))); + $form->get('mail')->addError(new FormError($this->translator->trans('Unable to contact: %mail%: %message%', ['%mail%' => $this->context['contact']['address'], '%message%' => $this->translator->trans($message)]))); } else { //Add error message mail unreachable - $form->get('mail')->addError(new FormError($this->translator->trans('Unable to contact: %mail%', ['%mail%' => $this->context['contact']['mail']]))); + $form->get('mail')->addError(new FormError($this->translator->trans('Unable to contact: %mail%', ['%mail%' => $this->context['contact']['address']]))); } } } @@ -175,7 +176,7 @@ class DefaultController extends AbstractController { $this->context['cities'] = $this->doctrine->getRepository(Location::class)->findCitiesAsArray($this->period); //Add calendar - $this->context['calendar'] = $this->doctrine->getRepository(Session::class)->findAllByPeriodAsCalendarArray($this->period, !$this->isGranted('IS_AUTHENTICATED_REMEMBERED')); + $this->context['calendar'] = $this->doctrine->getRepository(Session::class)->findAllByPeriodAsCalendarArray($this->period, !$this->checker->isGranted('IS_AUTHENTICATED_REMEMBERED')); //Add dances $this->context['dances'] = $this->doctrine->getRepository(Dance::class)->findNamesAsArray(); @@ -187,7 +188,7 @@ class DefaultController extends AbstractController { $response = new Response(); //With logged user - if ($this->isGranted('IS_AUTHENTICATED_REMEMBERED')) { + if ($this->checker->isGranted('IS_AUTHENTICATED_REMEMBERED')) { //Set last modified $response->setLastModified(new \DateTime('-1 year')); @@ -265,7 +266,7 @@ class DefaultController extends AbstractController { $dances = implode($this->translator->trans(' and '), array_filter(array_merge([implode(', ', array_slice($dances, 0, -1))], array_slice($dances, -1)), 'strlen')); //Set title - $this->context['title'] = $this->translator->trans('%dances% %cities%', ['%dances%' => $dances, '%cities%' => $cities]); + $this->context['title']['page'] = $this->translator->trans('%dances% %cities%', ['%dances%' => $dances, '%cities%' => $cities]); //Set description //TODO: handle french translation when city start with a A, change à in en ! @@ -282,14 +283,14 @@ class DefaultController extends AbstractController { /** * The organizer regulation page * - * @desc Display the organizer regulation policy + * Display the organizer regulation policy * * @param Request $request The request instance * @return Response The rendered view */ public function organizerRegulation(Request $request): Response { //Set page - $this->context['title'] = $this->translator->trans('Organizer regulation'); + $this->context['title']['page'] = $this->translator->trans('Organizer regulation'); //Set description $this->context['description'] = $this->translator->trans('Libre Air organizer regulation'); @@ -315,14 +316,14 @@ class DefaultController extends AbstractController { /** * The terms of service page * - * @desc Display the terms of service policy + * Display the terms of service policy * * @param Request $request The request instance * @return Response The rendered view */ public function termsOfService(Request $request): Response { //Set page - $this->context['title'] = $this->translator->trans('Terms of service'); + $this->context['title']['page'] = $this->translator->trans('Terms of service'); //Set description $this->context['description'] = $this->translator->trans('Libre Air terms of service'); @@ -348,14 +349,14 @@ class DefaultController extends AbstractController { /** * The frequently asked questions page * - * @desc Display the frequently asked questions + * Display the frequently asked questions * * @param Request $request The request instance * @return Response The rendered view */ public function frequentlyAskedQuestions(Request $request): Response { //Set page - $this->context['title'] = $this->translator->trans('Frequently asked questions'); + $this->context['title']['page'] = $this->translator->trans('Frequently asked questions'); //Set description $this->context['description'] = $this->translator->trans('Libre Air frequently asked questions'); @@ -382,7 +383,7 @@ class DefaultController extends AbstractController { /** * List all users * - * @desc Display all user with a group listed as users + * Display all user with a group listed as users * * @param Request $request The request instance * @@ -390,19 +391,25 @@ class DefaultController extends AbstractController { */ public function userIndex(Request $request): Response { //With admin role - if ($this->isGranted('ROLE_ADMIN')) { + if ($this->checker->isGranted('ROLE_ADMIN')) { + //Set title + $this->context['title']['page'] = $this->translator->trans('Libre Air user list'); + //Set section - $section = $this->translator->trans('Libre Air users'); + $this->context['title']['section'] = $this->translator->trans('User'); //Set description - $this->context['description'] = $this->translator->trans('Libre Air user list'); + $this->context['description'] = $this->translator->trans('Lists Libre air users'); //Without admin role } else { + //Set title + $this->context['title']['page'] = $this->translator->trans('Libre Air organizer list'); + //Set section - $section = $this->translator->trans('Libre Air organizers'); + $this->context['title']['section'] = $this->translator->trans('Organizer'); //Set description - $this->context['description'] = $this->translator->trans('Libre Air organizers list'); + $this->context['description'] = $this->translator->trans('Lists Libre air organizers'); } //Set keywords @@ -413,14 +420,11 @@ class DefaultController extends AbstractController { $this->translator->trans('Libre Air') ]; - //Set title - $title = $this->translator->trans($this->config['site']['title']).' - '.$section; - //Fetch users $users = $this->doctrine->getRepository(User::class)->findIndexByGroupId(); //With admin role - if ($this->isGranted('ROLE_ADMIN')) { + if ($this->checker->isGranted('ROLE_ADMIN')) { //Display all users $this->context['groups'] = $users; //Without admin role @@ -430,13 +434,13 @@ class DefaultController extends AbstractController { } //Render the view - return $this->render('@RapsysAir/user/index.html.twig', ['title' => $title, 'section' => $section]+$this->context); + return $this->render('@RapsysAir/user/index.html.twig', $this->context); } /** * List all sessions for the user * - * @desc Display all sessions for the user with an application or login form + * Display all sessions for the user with an application or login form * * @param Request $request The request instance * @param int $id The user id @@ -451,10 +455,10 @@ class DefaultController extends AbstractController { } //Create token - $token = new AnonymousToken('', $this->context['user']['mail'], $this->context['user']['roles']); + $token = new AnonymousToken($this->context['user']['roles']); //Prevent access when not admin, user is not guest and not currently logged user - if (!($isAdmin = $this->isGranted('ROLE_ADMIN')) && !($isGuest = $this->decision->decide($token, ['ROLE_GUEST']))) { + if (!($isAdmin = $this->checker->isGranted('ROLE_ADMIN')) && !($isGuest = $this->decision->decide($token, ['ROLE_GUEST']))) { //Throw access denied throw new AccessDeniedException($this->translator->trans('Unable to access user: %id%', ['%id%' => $id])); } @@ -462,11 +466,11 @@ class DefaultController extends AbstractController { //With invalid user slug if ($this->context['user']['slug'] !== $user) { //Redirect to cleaned url - return $this->redirectToRoute('rapsys_air_user_view', ['id' => $id, 'user' => $this->context['user']['slug']]); + return $this->redirectToRoute('rapsysair_user_view', ['id' => $id, 'user' => $this->context['user']['slug']]); } //Fetch calendar - $this->context['calendar'] = $this->doctrine->getRepository(Session::class)->findAllByPeriodAsCalendarArray($this->period, !$this->isGranted('IS_AUTHENTICATED_REMEMBERED'), null, null, $id); + $this->context['calendar'] = $this->doctrine->getRepository(Session::class)->findAllByPeriodAsCalendarArray($this->period, !$this->checker->isGranted('IS_AUTHENTICATED_REMEMBERED'), null, null, $id); //Get locations at less than 2 km $this->context['locations'] = $this->doctrine->getRepository(Location::class)->findAllByUserIdAsArray($id, $this->period, 2); @@ -530,7 +534,7 @@ class DefaultController extends AbstractController { $response = new Response(); //With logged user - if ($this->isGranted('IS_AUTHENTICATED_REMEMBERED')) { + if ($this->checker->isGranted('IS_AUTHENTICATED_REMEMBERED')) { //Set last modified $response->setLastModified(new \DateTime('-1 year')); @@ -593,7 +597,10 @@ class DefaultController extends AbstractController { $ins = implode($this->translator->trans(' and '), array_filter(array_merge([implode(', ', array_slice($ins, 0, -1))], array_slice($ins, -1)), 'strlen')); //Set title - $this->context['title'] = $this->translator->trans('%pseudonym% organizer', ['%pseudonym%' => $this->context['user']['pseudonym']]); + $this->context['title']['page'] = $this->translator->trans('%pseudonym% organizer', ['%pseudonym%' => $this->context['user']['pseudonym']]); + + //Set section + $this->context['title']['section'] = $this->translator->trans('User'); //With locations if (!empty($locations)) { @@ -613,7 +620,7 @@ class DefaultController extends AbstractController { //Create snippet forms for role_guest //TODO: optimize this call - if ($isAdmin || $isGuest && $this->getUser() && $this->context['user']['id'] == $this->getUser()->getId()) { + if ($isAdmin || $isGuest && $this->security->getUser() && $this->context['user']['id'] == $this->security->getUser()->getId()) { //Fetch all user snippet $snippets = $this->doctrine->getRepository(Snippet::class)->findByUserIdLocaleIndexByLocationId($id, $this->locale); @@ -629,16 +636,7 @@ class DefaultController extends AbstractController { //Without existing snippet } else { //Init snippet - $current = new Snippet(); - - //Set default locale - $current->setLocale($this->locale); - - //Set default user - $current->setUser($user); - - //Set default location - $current->setLocation($this->doctrine->getRepository(Location::class)->findOneById($location['id'])); + $current = new Snippet($this->locale, $this->doctrine->getRepository(Location::class)->findOneById($location['id']), $user); } //Create SnippetType form @@ -670,7 +668,7 @@ class DefaultController extends AbstractController { $this->addFlash('notice', $this->translator->trans('Snippet for %user% %location% updated', ['%location%' => $location['at'], '%user%' => $this->context['user']['pseudonym']])); //Redirect to cleaned url - return $this->redirectToRoute('rapsys_air_user_view', ['id' => $id, 'user' => $this->context['user']['slug']]); + return $this->redirectToRoute('rapsysair_user_view', ['id' => $id, 'user' => $this->context['user']['slug']]); } //Add form to context @@ -721,7 +719,7 @@ class DefaultController extends AbstractController { $this->addFlash('notice', $this->translator->trans('Image for %user% %location% deleted', ['%location%' => $location['at'], '%user%' => $this->context['user']['pseudonym']])); //Redirect to cleaned url - return $this->redirectToRoute('rapsys_air_user_view', ['id' => $id, 'user' => $this->context['user']['slug']]); + return $this->redirectToRoute('rapsysair_user_view', ['id' => $id, 'user' => $this->context['user']['slug']]); } } @@ -761,7 +759,7 @@ class DefaultController extends AbstractController { $this->addFlash('notice', $this->translator->trans('Image for %user% %location% updated', ['%location%' => $location['at'], '%user%' => $this->context['user']['pseudonym']])); //Redirect to cleaned url - return $this->redirectToRoute('rapsys_air_user_view', ['id' => $id, 'user' => $this->context['user']['slug']]); + return $this->redirectToRoute('rapsysair_user_view', ['id' => $id, 'user' => $this->context['user']['slug']]); } }