This commit is contained in:
Javier Casares 2026-03-28 10:06:01 +00:00
commit 231ef59bb9
15 changed files with 254 additions and 135 deletions

View file

@ -453,7 +453,7 @@ class Two_Factor_Extended_Settings {
</td>
<td>
<?php
$role_req_raw = $requirements[ $role_slug ] ?? array();
$role_req_raw = $requirements[ $role_slug ] ?? array();
$role_requirements = is_array( $role_req_raw ) ? $role_req_raw : array();
foreach ( $providers as $provider_class => $provider_name ) :
@ -537,16 +537,16 @@ class Two_Factor_Extended_Settings {
</td>
<td>
<?php
$role_vis_raw = $visibility[ $role_slug ] ?? array();
$role_req_raw = $requirements[ $role_slug ] ?? array();
$role_vis_raw = $visibility[ $role_slug ] ?? array();
$role_req_raw = $requirements[ $role_slug ] ?? array();
$role_visibility = is_array( $role_vis_raw ) ? $role_vis_raw : array();
$role_required = is_array( $role_req_raw ) ? $role_req_raw : array();
foreach ( $providers as $provider_class => $provider_name ) :
$checked = in_array( $provider_class, $role_visibility, true );
$is_required = in_array( $provider_class, $role_required, true );
$disabled = $is_required ? 'disabled' : '';
$checked = $checked || $is_required;
$disabled = $is_required ? 'disabled' : '';
$checked = $checked || $is_required;
?>
<label style="display: block; margin-bottom: 5px;">
<input
@ -989,7 +989,7 @@ class Two_Factor_Extended_Settings {
<h2 class="nav-tab-wrapper">
<?php foreach ( $tabs as $tab_key => $tab_label ) : ?>
<a href="<?php echo esc_url( add_query_arg( 'tab', $tab_key, admin_url( 'options-general.php?page=' . self::PAGE_SLUG ) ) ); ?>"
class="nav-tab <?php echo $current_tab === $tab_key ? 'nav-tab-active' : ''; ?>">
class="nav-tab <?php echo $current_tab === $tab_key ? 'nav-tab-active' : ''; ?>">
<?php echo esc_html( $tab_label ); ?>
</a>
<?php endforeach; ?>
@ -1106,7 +1106,7 @@ class Two_Factor_Extended_Settings {
wp_nonce_url(
add_query_arg(
array(
'tab' => 'audit-log',
'tab' => 'audit-log',
'action' => 'export',
)
),
@ -1133,11 +1133,11 @@ class Two_Factor_Extended_Settings {
<?php if ( ! empty( $logs ) ) : ?>
<?php foreach ( array_slice( $logs, 0, 50 ) as $log ) : ?>
<?php
$log_ts = isset( $log['timestamp'] ) && is_int( $log['timestamp'] ) ? $log['timestamp'] : null;
$log_action = isset( $log['action'] ) && is_string( $log['action'] ) ? $log['action'] : '';
$log_desc = isset( $log['description'] ) && is_string( $log['description'] ) ? $log['description'] : '';
$log_actor_id = isset( $log['actor_id'] ) && is_int( $log['actor_id'] ) ? $log['actor_id'] : 0;
$log_ip = isset( $log['ip_address'] ) && is_string( $log['ip_address'] ) ? $log['ip_address'] : '-';
$log_ts = isset( $log['timestamp'] ) && is_int( $log['timestamp'] ) ? $log['timestamp'] : null;
$log_action = isset( $log['action'] ) && is_string( $log['action'] ) ? $log['action'] : '';
$log_desc = isset( $log['description'] ) && is_string( $log['description'] ) ? $log['description'] : '';
$log_actor_id = isset( $log['actor_id'] ) && is_int( $log['actor_id'] ) ? $log['actor_id'] : 0;
$log_ip = isset( $log['ip_address'] ) && is_string( $log['ip_address'] ) ? $log['ip_address'] : '-';
?>
<tr>
<td><?php echo esc_html( gmdate( 'Y-m-d H:i:s', $log_ts ) ); ?></td>
@ -1200,8 +1200,8 @@ class Two_Factor_Extended_Settings {
exit;
}
$stats = $compliance->get_compliance_stats();
$non_compliant = $compliance->get_non_compliant_users();
$stats = $compliance->get_compliance_stats();
$non_compliant = $compliance->get_non_compliant_users();
?>
<div class="card">
@ -1265,7 +1265,7 @@ class Two_Factor_Extended_Settings {
wp_nonce_url(
add_query_arg(
array(
'tab' => 'compliance',
'tab' => 'compliance',
'action' => 'export',
)
),
@ -1292,16 +1292,16 @@ class Two_Factor_Extended_Settings {
<?php if ( ! empty( $non_compliant ) ) : ?>
<?php foreach ( $non_compliant as $user_data ) : ?>
<?php
$user_id_val = isset( $user_data['user_id'] ) && is_int( $user_data['user_id'] ) ? $user_data['user_id'] : 0;
$user_login_val = isset( $user_data['user_login'] ) && is_string( $user_data['user_login'] ) ? $user_data['user_login'] : '';
$user_email_val = isset( $user_data['user_email'] ) && is_string( $user_data['user_email'] ) ? $user_data['user_email'] : '';
$roles_raw = isset( $user_data['roles'] ) && is_array( $user_data['roles'] ) ? $user_data['roles'] : array();
$missing_raw = isset( $user_data['missing_providers'] ) && is_array( $user_data['missing_providers'] ) ? $user_data['missing_providers'] : array();
$in_grace = ! empty( $user_data['in_grace_period'] );
$grace_remaining = isset( $user_data['grace_remaining'] ) && is_numeric( $user_data['grace_remaining'] ) ? (int) $user_data['grace_remaining'] : 0;
$user_id_val = isset( $user_data['user_id'] ) && is_int( $user_data['user_id'] ) ? $user_data['user_id'] : 0;
$user_login_val = isset( $user_data['user_login'] ) && is_string( $user_data['user_login'] ) ? $user_data['user_login'] : '';
$user_email_val = isset( $user_data['user_email'] ) && is_string( $user_data['user_email'] ) ? $user_data['user_email'] : '';
$roles_raw = isset( $user_data['roles'] ) && is_array( $user_data['roles'] ) ? $user_data['roles'] : array();
$missing_raw = isset( $user_data['missing_providers'] ) && is_array( $user_data['missing_providers'] ) ? $user_data['missing_providers'] : array();
$in_grace = ! empty( $user_data['in_grace_period'] );
$grace_remaining = isset( $user_data['grace_remaining'] ) && is_numeric( $user_data['grace_remaining'] ) ? (int) $user_data['grace_remaining'] : 0;
// Get user object for display name.
$user = $user_id_val ? get_userdata( $user_id_val ) : null;
$roles_display = array_map(
$user = $user_id_val ? get_userdata( $user_id_val ) : null;
$roles_display = array_map(
function ( $role_slug ) {
if ( ! is_string( $role_slug ) ) {
return '';
@ -1401,7 +1401,7 @@ class Two_Factor_Extended_Settings {
echo '<div class="notice notice-success"><p>' . esc_html__( 'Audit logs cleared successfully.', 'two-factor-extended' ) . '</p></div>';
}
$logs = $audit_log->get_logs();
$logs = $audit_log->get_logs();
$stats = $audit_log->get_statistics();
?>
@ -1448,12 +1448,12 @@ class Two_Factor_Extended_Settings {
<?php else : ?>
<?php foreach ( array_slice( $logs, 0, 50 ) as $log ) : ?>
<?php
$log_user_id = isset( $log['user_id'] ) && is_int( $log['user_id'] ) ? $log['user_id'] : 0;
$log_ts = isset( $log['timestamp'] ) && is_int( $log['timestamp'] ) ? $log['timestamp'] : null;
$log_action = isset( $log['action'] ) && is_string( $log['action'] ) ? $log['action'] : '';
$log_desc = isset( $log['description'] ) && is_string( $log['description'] ) ? $log['description'] : '';
$log_ip = isset( $log['ip_address'] ) && is_string( $log['ip_address'] ) ? $log['ip_address'] : '';
$user = $log_user_id ? get_userdata( $log_user_id ) : null;
$log_user_id = isset( $log['user_id'] ) && is_int( $log['user_id'] ) ? $log['user_id'] : 0;
$log_ts = isset( $log['timestamp'] ) && is_int( $log['timestamp'] ) ? $log['timestamp'] : null;
$log_action = isset( $log['action'] ) && is_string( $log['action'] ) ? $log['action'] : '';
$log_desc = isset( $log['description'] ) && is_string( $log['description'] ) ? $log['description'] : '';
$log_ip = isset( $log['ip_address'] ) && is_string( $log['ip_address'] ) ? $log['ip_address'] : '';
$user = $log_user_id ? get_userdata( $log_user_id ) : null;
?>
<tr>
<td><?php echo esc_html( gmdate( 'Y-m-d H:i:s', $log_ts ) ); ?></td>
@ -1521,7 +1521,7 @@ class Two_Factor_Extended_Settings {
}
}
$stats = $compliance->get_compliance_stats();
$stats = $compliance->get_compliance_stats();
$non_compliant = $compliance->get_non_compliant_users();
?>
@ -1790,7 +1790,7 @@ class Two_Factor_Extended_Settings {
// Sanitize grace period days.
if ( isset( $input['grace_period_days'] ) && is_numeric( $input['grace_period_days'] ) ) {
$grace_days = (int) $input['grace_period_days'];
$grace_days = (int) $input['grace_period_days'];
$sanitized['grace_period_days'] = max( 0, min( 365, $grace_days ) );
}