class LoginHistoryController in Login History 8
Controller routines for Login history routes.
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\login_history\Controller\LoginHistoryController
Expanded class hierarchy of LoginHistoryController
Deprecated
in login_history:8.x-1.1 and is removed from login_history:8.x-2.0. There is no replacement.
See also
https://www.drupal.org/project/login_history/issues/3185800
File
- src/
Controller/ LoginHistoryController.php, line 20
Namespace
Drupal\login_history\ControllerView source
class LoginHistoryController extends ControllerBase {
/**
* The date formatter.
*
* @var \Drupal\Core\Datetime\DateFormatterInterface
*/
protected $dateFormatter;
/**
* The database connection.
*
* @var \Drupal\Core\Database\Connection
*/
protected $database;
/**
* The entity type manager.
*
* @var \Drupal\Core\Entity\EntityTypeManagerInterface
*/
protected $entityTypeManager;
/**
* Constructs a LoginHistoryController object.
*
* @param \Drupal\Core\Datetime\DateFormatterInterface $date_formatter
* The date formatter service.
* @param \Drupal\Core\Database\Connection|null $database
* The database connection.
* @param \Drupal\Core\Entity\EntityTypeManagerInterface|null $entity_type_manager
* The entity type manager.
*/
public function __construct(DateFormatterInterface $date_formatter, Connection $database = NULL, EntityTypeManagerInterface $entity_type_manager = NULL) {
$this->dateFormatter = $date_formatter;
$this->database = $database ?: \Drupal::database();
$this->entityTypeManager = $entity_type_manager ?: \Drupal::entityTypeManager();
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static($container
->get('date.formatter'), $container
->get('database'), $container
->get('entity_type.manager'));
}
/**
* Displays a report of user logins.
*
* @param \Drupal\user\UserInterface|null $user
* (optional) The user to display for individual user reports.
*
* @return array
* A render array.
*
* @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException
* @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException
*/
public function report(UserInterface $user = NULL) {
$header = [
[
'data' => $this
->t('Date'),
'field' => 'lh.login',
'sort' => 'desc',
],
[
'data' => $this
->t('Username'),
'field' => 'ufd.name',
],
[
'data' => $this
->t('IP Address'),
'field' => 'lh.hostname',
],
[
'data' => $this
->t('One-time login?'),
'field' => 'lh.one_time',
],
[
'data' => $this
->t('User Agent'),
],
];
$query = $this->database
->select('login_history', 'lh')
->extend('Drupal\\Core\\Database\\Query\\TableSortExtender')
->extend('Drupal\\Core\\Database\\Query\\PagerSelectExtender');
$query
->join('users', 'u', 'lh.uid = u.uid');
$query
->join('users_field_data', 'ufd', 'u.uid = ufd.uid');
if ($user) {
$query
->condition('lh.uid', $user
->id());
}
$result = $query
->fields('lh')
->fields('u', [
'uid',
])
->fields('ufd', [
'name',
])
->orderByHeader($header)
->limit(50)
->execute()
->fetchAll();
return $this
->generateReportTable($result, $header);
}
/**
* Renders login histories as a table.
*
* @param array $history
* A list of login history objects to output.
* @param array $header
* An array containing table header data.
*
* @return array
* A table render array.
*
* @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException
* @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException
*/
public function generateReportTable(array $history, array $header) {
// Load all users first.
$uids = [];
foreach ($history as $entry) {
$uids[] = $entry->uid;
}
/** @var \Drupal\user\Entity\User[] $users */
$users = $this->entityTypeManager
->getStorage('user')
->loadMultiple($uids);
$rows = [];
foreach ($history as $entry) {
$rows[] = [
$this->dateFormatter
->format($entry->login, 'short'),
$users[$entry->uid]
->getAccountName(),
$entry->hostname,
empty($entry->one_time) ? $this
->t('Regular login') : $this
->t('One-time login'),
$entry->user_agent,
];
}
$output['history'] = [
'#theme' => 'table',
'#header' => $header,
'#rows' => $rows,
'#empty' => $this
->t('No login history available.'),
];
$output['pager'] = [
'#type' => 'pager',
];
return $output;
}
/**
* Checks access for the user login report.
*
* @param \Drupal\user\UserInterface|null $user
* The user to check access for.
*
* @return \Drupal\Core\Access\AccessResult
* Returns Allowed or Neutral.
*/
public function checkUserReportAccess(UserInterface $user = NULL) {
// Allow access if the user is viewing their own report and has permission
// or if the user has permission to view all login history reports.
$access = $user
->id() == $this
->currentUser()
->id() && $this->currentUser
->hasPermission('view own login history') || $this->currentUser
->hasPermission('view all login histories');
return AccessResult::allowedIf($access);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ControllerBase:: |
protected | property | The configuration factory. | |
ControllerBase:: |
protected | property | The current user service. | 1 |
ControllerBase:: |
protected | property | The entity form builder. | |
ControllerBase:: |
protected | property | The entity manager. | |
ControllerBase:: |
protected | property | The form builder. | 2 |
ControllerBase:: |
protected | property | The key-value storage. | 1 |
ControllerBase:: |
protected | property | The language manager. | 1 |
ControllerBase:: |
protected | property | The module handler. | 2 |
ControllerBase:: |
protected | property | The state service. | |
ControllerBase:: |
protected | function | Returns the requested cache bin. | |
ControllerBase:: |
protected | function | Retrieves a configuration object. | |
ControllerBase:: |
private | function | Returns the service container. | |
ControllerBase:: |
protected | function | Returns the current user. | 1 |
ControllerBase:: |
protected | function | Retrieves the entity form builder. | |
ControllerBase:: |
protected | function | Retrieves the entity manager service. | |
ControllerBase:: |
protected | function | Retrieves the entity type manager. | |
ControllerBase:: |
protected | function | Returns the form builder service. | 2 |
ControllerBase:: |
protected | function | Returns a key/value storage collection. | 1 |
ControllerBase:: |
protected | function | Returns the language manager service. | 1 |
ControllerBase:: |
protected | function | Returns the module handler. | 2 |
ControllerBase:: |
protected | function |
Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait:: |
|
ControllerBase:: |
protected | function | Returns the state storage service. | |
LinkGeneratorTrait:: |
protected | property | The link generator. | 1 |
LinkGeneratorTrait:: |
protected | function | Returns the link generator. | |
LinkGeneratorTrait:: |
protected | function | Renders a link to a route given a route name and its parameters. | |
LinkGeneratorTrait:: |
public | function | Sets the link generator service. | |
LoggerChannelTrait:: |
protected | property | The logger channel factory service. | |
LoggerChannelTrait:: |
protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait:: |
public | function | Injects the logger channel factory. | |
LoginHistoryController:: |
protected | property | The database connection. | |
LoginHistoryController:: |
protected | property | The date formatter. | |
LoginHistoryController:: |
protected | property |
The entity type manager. Overrides ControllerBase:: |
|
LoginHistoryController:: |
public | function | Checks access for the user login report. | |
LoginHistoryController:: |
public static | function |
Instantiates a new instance of this class. Overrides ControllerBase:: |
|
LoginHistoryController:: |
public | function | Renders login histories as a table. | |
LoginHistoryController:: |
public | function | Displays a report of user logins. | |
LoginHistoryController:: |
public | function | Constructs a LoginHistoryController object. | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
UrlGeneratorTrait:: |
protected | property | The url generator. | |
UrlGeneratorTrait:: |
protected | function | Returns the URL generator service. | |
UrlGeneratorTrait:: |
public | function | Sets the URL generator service. | |
UrlGeneratorTrait:: |
protected | function | Generates a URL or path for a specific route based on the given parameters. |