Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 4 |
CRAP | |
0.00% |
0 / 49 |
UserLoginBlock | |
0.00% |
0 / 1 |
|
0.00% |
0 / 4 |
56 | |
0.00% |
0 / 49 |
__construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
create | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 7 |
|||
blockAccess | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 7 |
|||
build | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 32 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\user\Plugin\Block\UserLoginBlock. | |
*/ | |
namespace Drupal\user\Plugin\Block; | |
use Drupal\Core\Access\AccessResult; | |
use Drupal\Core\Plugin\ContainerFactoryPluginInterface; | |
use Drupal\Core\Routing\RedirectDestinationTrait; | |
use Drupal\Core\Routing\RouteMatchInterface; | |
use Drupal\Core\Routing\UrlGeneratorTrait; | |
use Drupal\Core\Url; | |
use Drupal\Core\Session\AccountInterface; | |
use Drupal\Core\Block\BlockBase; | |
use Symfony\Component\DependencyInjection\ContainerInterface; | |
/** | |
* Provides a 'User login' block. | |
* | |
* @Block( | |
* id = "user_login_block", | |
* admin_label = @Translation("User login"), | |
* category = @Translation("Forms") | |
* ) | |
*/ | |
class UserLoginBlock extends BlockBase implements ContainerFactoryPluginInterface { | |
use UrlGeneratorTrait; | |
use RedirectDestinationTrait; | |
/** | |
* The route match. | |
* | |
* @var \Drupal\Core\Routing\RouteMatchInterface | |
*/ | |
protected $routeMatch; | |
/** | |
* Constructs a new UserLoginBlock instance. | |
* | |
* @param array $configuration | |
* The plugin configuration, i.e. an array with configuration values keyed | |
* by configuration option name. The special key 'context' may be used to | |
* initialize the defined contexts by setting it to an array of context | |
* values keyed by context names. | |
* @param string $plugin_id | |
* The plugin_id for the plugin instance. | |
* @param mixed $plugin_definition | |
* The plugin implementation definition. | |
* @param \Drupal\Core\Routing\RouteMatchInterface $route_match | |
* The route match. | |
*/ | |
public function __construct(array $configuration, $plugin_id, $plugin_definition, RouteMatchInterface $route_match) { | |
parent::__construct($configuration, $plugin_id, $plugin_definition); | |
$this->routeMatch = $route_match; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { | |
return new static( | |
$configuration, | |
$plugin_id, | |
$plugin_definition, | |
$container->get('current_route_match') | |
); | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
protected function blockAccess(AccountInterface $account) { | |
$route_name = $this->routeMatch->getRouteName(); | |
if ($account->isAnonymous() && !in_array($route_name, array('user.login', 'user.logout'))) { | |
return AccessResult::allowed() | |
->addCacheContexts(['route.name', 'user.roles:anonymous']); | |
} | |
return AccessResult::forbidden(); | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function build() { | |
$form = \Drupal::formBuilder()->getForm('Drupal\user\Form\UserLoginForm'); | |
unset($form['name']['#attributes']['autofocus']); | |
// When unsetting field descriptions, also unset aria-describedby attributes | |
// to avoid introducing an accessibility bug. | |
// @todo Do this automatically in https://www.drupal.org/node/2547063. | |
unset($form['name']['#description']); | |
unset($form['name']['#attributes']['aria-describedby']); | |
unset($form['pass']['#description']); | |
unset($form['pass']['#attributes']['aria-describedby']); | |
$form['name']['#size'] = 15; | |
$form['pass']['#size'] = 15; | |
$form['#action'] = $this->url('<current>', [], ['query' => $this->getDestinationArray(), 'external' => FALSE]); | |
// Build action links. | |
$items = array(); | |
if (\Drupal::config('user.settings')->get('register') != USER_REGISTER_ADMINISTRATORS_ONLY) { | |
$items['create_account'] = \Drupal::l($this->t('Create new account'), new Url('user.register', array(), array( | |
'attributes' => array( | |
'title' => $this->t('Create a new user account.'), | |
'class' => array('create-account-link'), | |
), | |
))); | |
} | |
$items['request_password'] = \Drupal::l($this->t('Reset your password'), new Url('user.pass', array(), array( | |
'attributes' => array( | |
'title' => $this->t('Send password reset instructions via email.'), | |
'class' => array('request-password-link'), | |
), | |
))); | |
return array( | |
'user_login_form' => $form, | |
'user_links' => array( | |
'#theme' => 'item_list', | |
'#items' => $items, | |
), | |
); | |
} | |
} |