Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 6 |
CRAP | |
0.00% |
0 / 65 |
BanAdmin | |
0.00% |
0 / 1 |
|
0.00% |
0 / 6 |
110 | |
0.00% |
0 / 65 |
__construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
create | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
getFormId | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
buildForm | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 41 |
|||
validateForm | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 11 |
|||
submitForm | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 5 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\ban\Form\BanAdmin. | |
*/ | |
namespace Drupal\ban\Form; | |
use Drupal\Core\Form\FormBase; | |
use Drupal\ban\BanIpManagerInterface; | |
use Drupal\Core\Form\FormStateInterface; | |
use Drupal\Core\Url; | |
use Symfony\Component\DependencyInjection\ContainerInterface; | |
/** | |
* Displays banned IP addresses. | |
*/ | |
class BanAdmin extends FormBase { | |
/** | |
* @var \Drupal\ban\BanIpManagerInterface | |
*/ | |
protected $ipManager; | |
/** | |
* Constructs a new BanAdmin object. | |
* | |
* @param \Drupal\ban\BanIpManagerInterface $ip_manager | |
*/ | |
public function __construct(BanIpManagerInterface $ip_manager) { | |
$this->ipManager = $ip_manager; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public static function create(ContainerInterface $container) { | |
return new static( | |
$container->get('ban.ip_manager') | |
); | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function getFormId() { | |
return 'ban_ip_form'; | |
} | |
/** | |
* {@inheritdoc} | |
* | |
* @param string $default_ip | |
* (optional) IP address to be passed on to | |
* \Drupal::formBuilder()->getForm() for use as the default value of the IP | |
* address form field. | |
*/ | |
public function buildForm(array $form, FormStateInterface $form_state, $default_ip = '') { | |
$rows = array(); | |
$header = array($this->t('banned IP addresses'), $this->t('Operations')); | |
$result = $this->ipManager->findAll(); | |
foreach ($result as $ip) { | |
$row = array(); | |
$row[] = $ip->ip; | |
$links = array(); | |
$links['delete'] = array( | |
'title' => $this->t('Delete'), | |
'url' => Url::fromRoute('ban.delete', ['ban_id' => $ip->iid]), | |
); | |
$row[] = array( | |
'data' => array( | |
'#type' => 'operations', | |
'#links' => $links, | |
), | |
); | |
$rows[] = $row; | |
} | |
$form['ip'] = array( | |
'#title' => $this->t('IP address'), | |
'#type' => 'textfield', | |
'#size' => 48, | |
'#maxlength' => 40, | |
'#default_value' => $default_ip, | |
'#description' => $this->t('Enter a valid IP address.'), | |
); | |
$form['actions'] = array('#type' => 'actions'); | |
$form['actions']['submit'] = array( | |
'#type' => 'submit', | |
'#value' => $this->t('Add'), | |
); | |
$form['ban_ip_banning_table'] = array( | |
'#type' => 'table', | |
'#header' => $header, | |
'#rows' => $rows, | |
'#empty' => $this->t('No blocked IP addresses available.'), | |
'#weight' => 120, | |
); | |
return $form; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function validateForm(array &$form, FormStateInterface $form_state) { | |
$ip = trim($form_state->getValue('ip')); | |
if ($this->ipManager->isBanned($ip)) { | |
$form_state->setErrorByName('ip', $this->t('This IP address is already banned.')); | |
} | |
elseif ($ip == $this->getRequest()->getClientIP()) { | |
$form_state->setErrorByName('ip', $this->t('You may not ban your own IP address.')); | |
} | |
elseif (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE) == FALSE) { | |
$form_state->setErrorByName('ip', $this->t('Enter a valid IP address.')); | |
} | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function submitForm(array &$form, FormStateInterface $form_state) { | |
$ip = trim($form_state->getValue('ip')); | |
$this->ipManager->banIp($ip); | |
drupal_set_message($this->t('The IP address %ip has been banned.', array('%ip' => $ip))); | |
$form_state->setRedirect('ban.admin_page'); | |
} | |
} |