public function onRequest(Request $request) { $session = $request->getSession(); list($id, $role) = $session->get('user', array(null, 'ROLE_ANONYMOUS')); if (null === $id && $request->cookies->has(Remember::REMEMBER_ME)) { if ($this->remember->check($request->cookies->get(Remember::REMEMBER_ME))) { list($id, $role) = $this->remember->getIt(); $session->set('user', array($id, $role)); } } $this->provider->setRole($role); if (!$this->provider->isAllowed($request->getPathInfo())) { throw new Exception\AccessDeniedException("Access denied to " . $request->getPathInfo()); } if (null !== $id) { // Ban check $clientIp = $request->getClientIp(); $ban = Ban::findActive($id, $clientIp); if (!empty($ban)) { throw new BannedException($ban[0], Response::HTTP_FORBIDDEN); } // User loading. $user = User::find($id); if (null !== $user) { $user->ip = $clientIp; $user->save(); $this->provider->setUser($user); $this->provider->setAuthenticated(true); } } }
public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('user', 'user', array('label' => 'User ID', 'required' => false)); $builder->add('ip', 'text', array('label' => 'IP', 'required' => false)); $builder->add('howLong', 'choice', array('label' => 'On how long', 'choices' => Ban::howLongChoices())); $builder->add('reason', 'textarea', array('label' => 'Reason', 'required' => false)); }
/** * @Route("/remove/{id}", name="remove_ban", requirements={"id": "\d+"}) */ public function removeBan($id) { if ($ban = Ban::find($id)) { $ban->delete(); $this->app->session()->getFlashBag()->add('success', $this->app->trans('Ban was deleted.')); } return $this->app->redirect($this->app->url('moderator_bans')); }