Пример #1
0
 public function run(Request $request)
 {
     $token = $this->session->get(self::TOKEN_SESSION_KEY);
     $userId = $this->session->get(self::USER_ID_SESSION_KEY);
     if (!$token instanceof AccessToken) {
         return new RedirectResponse($this->router->generate('authenticate'));
     }
     $apiClient = new ApiClient($token->getToken());
     $selectedUsers = [];
     $message = '';
     $errors = [];
     if ($request->isMethod('POST')) {
         $selectedUsers = $request->request->get('users');
         $message = $request->request->get('message');
         $errors = $this->validate($selectedUsers, $message);
         if (count($errors) < 1) {
             $secretDispatcher = new SecretDispatcher($apiClient);
             $result = $secretDispatcher->dispatchTo($selectedUsers, $message, $userId);
             $request->getSession()->set($this->getResultSessionKey($result->getHash()), $result);
             return new RedirectResponse($this->router->generate('finish', ['hash' => $result->getHash()]));
         }
     }
     try {
         $userExtractor = new UserExtractor($apiClient);
         $users = $userExtractor->extractAll();
         $content = $this->twig->render('run.html.twig', ['users' => $users, 'selectedUsers' => $selectedUsers, 'message' => $message, 'errors' => $errors]);
         return new Response($content);
     } catch (\RuntimeException $e) {
         return new RedirectResponse($this->router->generate('authenticate'));
     }
 }