Source of file RecentLoginsReport.php
Size: 3,685 Bytes - Last Modified: 2021-12-23T10:11:16+00:00
/var/www/docs.ssmods.com/process/src/code/reports/RecentLoginsReport.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 | <?php namespace PurpleSpider; use SilverStripe\ORM\DataList; use SilverStripe\Reports\Report; use SilverStripe\Forms\FormField; use SilverStripe\Security\Member; use SilverStripe\Control\Director; use SilverStripe\Security\Security; use SilverStripe\Security\Permission; use SilverStripe\Forms\GridField\GridField; use SilverStripe\SessionManager\Models\LoginSession; use SilverStripe\Forms\GridField\GridFieldPrintButton; use SilverStripe\Forms\GridField\GridFieldExportButton; use SilverStripe\SecurityReport\Forms\GridFieldPrintReportButton; use SilverStripe\SecurityReport\Forms\GridFieldExportReportButton; class RecentLoginsReport extends Report { /** * Columns in the report * * @var array * @config */ private static $columns = array( // 'ID' => 'User ID', // 'LastLoggedIn' => 'Last Logged In', 'LastAccessed.Ago' => 'Last Activity', 'Member.FirstName' => 'First Name', 'Member.Surname' => 'Surname', 'Member.Email' => 'Email', 'Member.Created' => 'Date Created', 'LastAccessed' => 'Last Activity', ); protected $dataClass = Member::class; /** * Returns the report title * * @return string */ public function title() { return 'Recent Active Users'; } /** * Builds a report description which is the current hostname with the current date and time * * @return string e.g. localhost/sitename - 21/12/2112 */ public function description() { return str_replace( array('http://', 'https://'), '', Director::protocolAndHost() . ' - ' . date('d/m/Y H:i:s') ); } /** * Returns the column names of the report * * @return array */ public function columns() { $columns = self::config()->columns; // if (!Security::config()->get('login_recording')) { // unset($columns['LastLoggedIn']); // } return $columns; } /** * Alias of columns(), to support the export to csv action * in {@link GridFieldExportButton} generateExportFileData method. * @return array */ public function getColumns() { return $this->columns(); } /** * @return array */ public function summaryFields() { return $this->columns(); } /** * Defines the sortable columns on the report gridfield * * @return array */ public function sortColumns() { return array_keys($this->columns()); } /** * Get the source records for the report gridfield * * @return DataList */ public function sourceRecords() { // Get members sorted by ID return LoginSession::get()->sort('LastAccessed DESC'); } /** * Restrict access to this report to users with security admin access * * @param Member $member * @return boolean */ public function canView($member = null) { return (bool)Permission::checkMember($member, "CMS_ACCESS_SecurityAdmin"); } /** * Return a field, such as a {@link GridField} that is * used to show and manipulate data relating to this report. * * @return FormField subclass */ public function getReportField() { /** @var GridField $gridField */ $gridField = parent::getReportField(); $gridField->setModelClass(self::class); $gridConfig = $gridField->getConfig(); $gridConfig->removeComponentsByType([GridFieldPrintButton::class, GridFieldExportButton::class]); return $gridField; } } |