diff -u b/src/Plugin/monitoring/SensorPlugin/UserIntegritySensorPlugin.php b/src/Plugin/monitoring/SensorPlugin/UserIntegritySensorPlugin.php --- b/src/Plugin/monitoring/SensorPlugin/UserIntegritySensorPlugin.php +++ b/src/Plugin/monitoring/SensorPlugin/UserIntegritySensorPlugin.php @@ -224,6 +224,8 @@ $processed_users[$id]['password'] = hash('sha256', $user->getPassword()); $processed_users[$id]['changed'] = $user->getChangedTime(); $processed_users[$id]['last_accessed'] = $user->getLastAccessedTime(); + $processed_users[$id]['created'] = $user->getCreatedTime(); + $processed_users[$id]['roles'] = implode(", ", $user->getRoles()); } return $processed_users; } @@ -286,18 +288,6 @@ } } - // Create rows for privileged users. - foreach ($current_users as $user) { - $user_name = array( - '#theme' => 'username', - '#account' => User::load($user['id']), - ); - $row_privileged['id'] = ['#markup' => $user['id']]; - $row_privileged['user'] = $user_name; - $row_privileged['last_accessed'] = ['#markup' => $user['last_accessed'] != 0 ? date("Y-m-d H:i:s", $user['last_accessed']) : 'never']; - $rows_privileged[] = $row_privileged; - } - if (count($rows) > 0) { $output['message'] = array( '#type' => 'item', @@ -317,20 +307,38 @@ ) + $rows; } - $output['message_privileges'] = array( - '#type' => 'item', - '#title' => t('Users with privileged access.'), - ); - $header_privileges = []; - $header_privileges['id'] = t('Id'); - $header_privileges['user'] = t('User'); - $header_privileges['last_accessed'] = t('Last accessed'); - - $output['users_privileged'] = array( - '#type' => 'table', - '#header' => $header_privileges, - ) + $rows_privileged; + // Create rows for privileged users. + foreach ($current_users as $user) { + $created = $user['changed']; + $user_name = array( + '#theme' => 'username', + '#account' => User::load($user['id']), + ); + $row_privileged['id'] = ['#markup' => $user['id']]; + $row_privileged['user'] = $user_name; + $row_privileged['created'] = ['#markup' => date("Y-m-d H:i:s", $created)]; + $row_privileged['last_accessed'] = ['#markup' => $user['last_accessed'] != 0 ? date("Y-m-d H:i:s", $user['last_accessed']) : 'never']; + $row_privileged['roles'] = ['#markup' => $user['roles']]; + $rows_privileged[] = $row_privileged; + } + if (count($rows_privileged) > 0) { + $output['message_privileges'] = array( + '#type' => 'item', + '#title' => t('Users with privileged access.'), + ); + $header_privileges = []; + $header_privileges['id'] = t('Id'); + $header_privileges['user'] = t('User'); + $header_privileges['created'] = t('Created'); + $header_privileges['last_accessed'] = t('Last accessed'); + $header_privileges['roles'] = t('Roles'); + + $output['users_privileged'] = array( + '#type' => 'table', + '#header' => $header_privileges, + ) + $rows_privileged; + } return $output; } only in patch2: unchanged: --- a/src/Tests/MonitoringUITest.php +++ b/src/Tests/MonitoringUITest.php @@ -568,6 +568,29 @@ class MonitoringUITest extends MonitoringTestBase { $this->assertText('2 privileged user(s), 1 new user(s)'); // Run the sensor to check verbose output. $this->drupalPostForm(NULL, array(), t('Run now')); + + // Check table of users with privileged access. + $expected_header = [ + 'Id', + 'User', + 'Created', + 'Last accessed', + 'Roles', + ]; + $xpath = $this->xpath('//table[@id="edit-users-privileged"]'); + $header = (array) $xpath[0]->thead->tr->th; + $body = (array) $xpath[0]->tbody; + $first_row = (array) $body['tr'][0]->td; + $second_row = (array) $body['tr'][1]->td; + + $this->assertText('Users with privileged access.'); + $this->assertEqual(count($body['tr']), 2); + $this->assertEqual($expected_header, $header); + + // Assert roles are listed on the table. + $this->assertEqual($first_row[4], implode(", ", $test_user->getRoles())); + $this->assertEqual($second_row[4], implode(", ", $account->getRoles())); + // Check the new user name in verbose output. $this->assertText('test_user'); // Reset the user data and run the sensor again.