v1.0.2
This commit is contained in:
parent
b8e17df2db
commit
71b471e13e
19 changed files with 771 additions and 60 deletions
|
|
@ -6,7 +6,7 @@ _Release date: 2026-02-17_
|
||||||
|
|
||||||
**Initial Production Release**
|
**Initial Production Release**
|
||||||
|
|
||||||
This is the first comprehensive release of Two Factor Extended, implementing enterprise-level two-factor authentication management for WordPress.
|
This is the first comprehensive release of Two-Factor Extended, implementing enterprise-level two-factor authentication management for WordPress.
|
||||||
|
|
||||||
**Core Features**
|
**Core Features**
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
||||||
/**
|
/**
|
||||||
* Class Two_Factor_Extended_CLI_Commands
|
* Class Two_Factor_Extended_CLI_Commands
|
||||||
*
|
*
|
||||||
* Provides WP-CLI commands for Two Factor Extended.
|
* Provides WP-CLI commands for Two-Factor Extended.
|
||||||
*
|
*
|
||||||
* @since 0.1.0
|
* @since 0.1.0
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -292,7 +292,7 @@ class Two_Factor_Extended_Compliance_Report {
|
||||||
public function email_report( string $to, array $args = array() ): bool {
|
public function email_report( string $to, array $args = array() ): bool {
|
||||||
$stats = $this->get_compliance_stats( $args );
|
$stats = $this->get_compliance_stats( $args );
|
||||||
|
|
||||||
$subject = __( 'Two Factor Extended - Compliance Report', 'two-factor-extended' );
|
$subject = __( 'Two-Factor Extended - Compliance Report', 'two-factor-extended' );
|
||||||
|
|
||||||
$message = sprintf(
|
$message = sprintf(
|
||||||
/* translators: 1: Site name */
|
/* translators: 1: Site name */
|
||||||
|
|
|
||||||
|
|
@ -97,7 +97,7 @@ class Two_Factor_Extended_Dependency_Checker {
|
||||||
?>
|
?>
|
||||||
<div class="notice notice-error">
|
<div class="notice notice-error">
|
||||||
<p>
|
<p>
|
||||||
<strong><?php esc_html_e( 'Two Factor Extended', 'two-factor-extended' ); ?>:</strong>
|
<strong><?php esc_html_e( 'Two-Factor Extended', 'two-factor-extended' ); ?>:</strong>
|
||||||
<?php
|
<?php
|
||||||
printf(
|
printf(
|
||||||
/* translators: %s: Two Factor plugin link */
|
/* translators: %s: Two Factor plugin link */
|
||||||
|
|
@ -119,7 +119,7 @@ class Two_Factor_Extended_Dependency_Checker {
|
||||||
?>
|
?>
|
||||||
<div class="notice notice-error">
|
<div class="notice notice-error">
|
||||||
<p>
|
<p>
|
||||||
<strong><?php esc_html_e( 'Two Factor Extended', 'two-factor-extended' ); ?>:</strong>
|
<strong><?php esc_html_e( 'Two-Factor Extended', 'two-factor-extended' ); ?>:</strong>
|
||||||
<?php
|
<?php
|
||||||
printf(
|
printf(
|
||||||
/* translators: %s: Minimum WordPress version */
|
/* translators: %s: Minimum WordPress version */
|
||||||
|
|
@ -141,7 +141,7 @@ class Two_Factor_Extended_Dependency_Checker {
|
||||||
?>
|
?>
|
||||||
<div class="notice notice-error">
|
<div class="notice notice-error">
|
||||||
<p>
|
<p>
|
||||||
<strong><?php esc_html_e( 'Two Factor Extended', 'two-factor-extended' ); ?>:</strong>
|
<strong><?php esc_html_e( 'Two-Factor Extended', 'two-factor-extended' ); ?>:</strong>
|
||||||
<?php
|
<?php
|
||||||
printf(
|
printf(
|
||||||
/* translators: %s: Minimum PHP version */
|
/* translators: %s: Minimum PHP version */
|
||||||
|
|
|
||||||
|
|
@ -157,7 +157,15 @@ class Two_Factor_Extended_Enforcement {
|
||||||
|
|
||||||
// If site override is not allowed, return only network requirements.
|
// If site override is not allowed, return only network requirements.
|
||||||
if ( empty( $network_settings['allow_site_override'] ) ) {
|
if ( empty( $network_settings['allow_site_override'] ) ) {
|
||||||
return array_values( array_unique( $required ) );
|
$network_required = array_values( array_unique( $required ) );
|
||||||
|
|
||||||
|
// Intersect with globally-available providers (Two Factor 0.16+).
|
||||||
|
if ( class_exists( 'Two_Factor_Core' ) ) {
|
||||||
|
$available = array_keys( Two_Factor_Core::get_providers() );
|
||||||
|
$network_required = ! empty( $available ) ? array_values( array_intersect( $network_required, $available ) ) : $network_required;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $network_required;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -185,7 +193,19 @@ class Two_Factor_Extended_Enforcement {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return array_values( array_unique( $required ) );
|
$required = array_values( array_unique( $required ) );
|
||||||
|
|
||||||
|
// Intersect with globally-available providers (Two Factor 0.16+).
|
||||||
|
// If Two-Factor has disabled a provider site-wide, it cannot be enforced.
|
||||||
|
if ( class_exists( 'Two_Factor_Core' ) ) {
|
||||||
|
$available = array_keys( Two_Factor_Core::get_providers() );
|
||||||
|
|
||||||
|
if ( ! empty( $available ) ) {
|
||||||
|
$required = array_values( array_intersect( $required, $available ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $required;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -316,7 +336,7 @@ class Two_Factor_Extended_Enforcement {
|
||||||
?>
|
?>
|
||||||
<div class="notice notice-warning">
|
<div class="notice notice-warning">
|
||||||
<p>
|
<p>
|
||||||
<strong><?php esc_html_e( 'Two Factor Extended:', 'two-factor-extended' ); ?></strong>
|
<strong><?php esc_html_e( 'Two-Factor Extended:', 'two-factor-extended' ); ?></strong>
|
||||||
<?php
|
<?php
|
||||||
printf(
|
printf(
|
||||||
esc_html(
|
esc_html(
|
||||||
|
|
@ -344,7 +364,7 @@ class Two_Factor_Extended_Enforcement {
|
||||||
?>
|
?>
|
||||||
<div class="notice notice-error">
|
<div class="notice notice-error">
|
||||||
<p>
|
<p>
|
||||||
<strong><?php esc_html_e( 'Two Factor Extended:', 'two-factor-extended' ); ?></strong>
|
<strong><?php esc_html_e( 'Two-Factor Extended:', 'two-factor-extended' ); ?></strong>
|
||||||
<?php
|
<?php
|
||||||
printf(
|
printf(
|
||||||
/* translators: %s: Required providers list */
|
/* translators: %s: Required providers list */
|
||||||
|
|
|
||||||
|
|
@ -64,8 +64,8 @@ class Two_Factor_Extended_Network_Settings {
|
||||||
|
|
||||||
add_submenu_page(
|
add_submenu_page(
|
||||||
'settings.php',
|
'settings.php',
|
||||||
__( 'Two Factor Extended', 'two-factor-extended' ),
|
__( 'Two-Factor Extended', 'two-factor-extended' ),
|
||||||
__( 'Two Factor Extended', 'two-factor-extended' ),
|
__( 'Two-Factor Extended', 'two-factor-extended' ),
|
||||||
'manage_network_options',
|
'manage_network_options',
|
||||||
self::PAGE_SLUG,
|
self::PAGE_SLUG,
|
||||||
array( $this, 'render_network_page' )
|
array( $this, 'render_network_page' )
|
||||||
|
|
|
||||||
|
|
@ -233,7 +233,7 @@ class Two_Factor_Extended_Provider_Filter {
|
||||||
?>
|
?>
|
||||||
<div class="notice notice-info inline">
|
<div class="notice notice-info inline">
|
||||||
<p>
|
<p>
|
||||||
<strong><?php esc_html_e( 'Two Factor Extended:', 'two-factor-extended' ); ?></strong>
|
<strong><?php esc_html_e( 'Two-Factor Extended:', 'two-factor-extended' ); ?></strong>
|
||||||
<?php
|
<?php
|
||||||
printf(
|
printf(
|
||||||
/* translators: %s: List of hidden providers */
|
/* translators: %s: List of hidden providers */
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
||||||
/**
|
/**
|
||||||
* Class Two_Factor_Extended_REST_API
|
* Class Two_Factor_Extended_REST_API
|
||||||
*
|
*
|
||||||
* Provides REST API endpoints for Two Factor Extended.
|
* Provides REST API endpoints for Two-Factor Extended.
|
||||||
*
|
*
|
||||||
* @since 0.1.0
|
* @since 0.1.0
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -66,8 +66,8 @@ class Two_Factor_Extended_Settings {
|
||||||
|
|
||||||
// Main settings page with tabs (Settings, Audit Log, Compliance).
|
// Main settings page with tabs (Settings, Audit Log, Compliance).
|
||||||
add_options_page(
|
add_options_page(
|
||||||
__( 'Two Factor Extended', 'two-factor-extended' ),
|
__( 'Two-Factor Extended', 'two-factor-extended' ),
|
||||||
__( 'Two Factor Extended', 'two-factor-extended' ),
|
__( 'Two-Factor Extended', 'two-factor-extended' ),
|
||||||
'manage_options',
|
'manage_options',
|
||||||
self::PAGE_SLUG,
|
self::PAGE_SLUG,
|
||||||
array( $this, 'render_settings_page' )
|
array( $this, 'render_settings_page' )
|
||||||
|
|
@ -92,8 +92,8 @@ class Two_Factor_Extended_Settings {
|
||||||
|
|
||||||
add_submenu_page(
|
add_submenu_page(
|
||||||
'settings.php',
|
'settings.php',
|
||||||
__( 'Two Factor Extended', 'two-factor-extended' ),
|
__( 'Two-Factor Extended', 'two-factor-extended' ),
|
||||||
__( 'Two Factor Extended', 'two-factor-extended' ),
|
__( 'Two-Factor Extended', 'two-factor-extended' ),
|
||||||
'manage_network_options',
|
'manage_network_options',
|
||||||
self::PAGE_SLUG,
|
self::PAGE_SLUG,
|
||||||
array( $this, 'render_network_settings_page' )
|
array( $this, 'render_network_settings_page' )
|
||||||
|
|
@ -1406,7 +1406,7 @@ class Two_Factor_Extended_Settings {
|
||||||
|
|
||||||
?>
|
?>
|
||||||
<div class="wrap">
|
<div class="wrap">
|
||||||
<h1><?php esc_html_e( 'Two Factor Extended - Audit Log', 'two-factor-extended' ); ?></h1>
|
<h1><?php esc_html_e( 'Two-Factor Extended - Audit Log', 'two-factor-extended' ); ?></h1>
|
||||||
|
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<h2><?php esc_html_e( 'Statistics', 'two-factor-extended' ); ?></h2>
|
<h2><?php esc_html_e( 'Statistics', 'two-factor-extended' ); ?></h2>
|
||||||
|
|
@ -1526,7 +1526,7 @@ class Two_Factor_Extended_Settings {
|
||||||
|
|
||||||
?>
|
?>
|
||||||
<div class="wrap">
|
<div class="wrap">
|
||||||
<h1><?php esc_html_e( 'Two Factor Extended - Compliance Report', 'two-factor-extended' ); ?></h1>
|
<h1><?php esc_html_e( 'Two-Factor Extended - Compliance Report', 'two-factor-extended' ); ?></h1>
|
||||||
|
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<h2><?php esc_html_e( 'Overview', 'two-factor-extended' ); ?></h2>
|
<h2><?php esc_html_e( 'Overview', 'two-factor-extended' ); ?></h2>
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ class Two_Factor_Extended {
|
||||||
* @since 0.1.0
|
* @since 0.1.0
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
private string $version = '1.0.1';
|
private string $version = '1.0.2';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Plugin directory path.
|
* Plugin directory path.
|
||||||
|
|
|
||||||
BIN
languages/two-factor-extended-ca.mo
Normal file
BIN
languages/two-factor-extended-ca.mo
Normal file
Binary file not shown.
691
languages/two-factor-extended-ca.po
Normal file
691
languages/two-factor-extended-ca.po
Normal file
|
|
@ -0,0 +1,691 @@
|
||||||
|
# Translation of Two-Factor Extended to Catalan
|
||||||
|
# Copyright (C) 2026 javiercasares, ROBOTSTXT
|
||||||
|
# This file is distributed under the GPL-3.0-or-later.
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Two-Factor Extended 1.0.2\n"
|
||||||
|
"Report-Msgid-Bugs-To: https://git.robotstxt.es/ROBOTSTXT/two-factor-extended/issues\n"
|
||||||
|
"Last-Translator: javiercasares, ROBOTSTXT\n"
|
||||||
|
"Language-Team: Catalan <ca@li.org>\n"
|
||||||
|
"Language: ca\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"POT-Creation-Date: 2026-03-28T00:00:00+00:00\n"
|
||||||
|
"PO-Revision-Date: 2026-03-28 00:00+0000\n"
|
||||||
|
"X-Generator: Manual\n"
|
||||||
|
"X-Domain: two-factor-extended\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
#. Plugin Name of the plugin
|
||||||
|
#: two-factor-extended.php
|
||||||
|
#: includes/class-dependency-checker.php:100
|
||||||
|
#: includes/class-dependency-checker.php:122
|
||||||
|
#: includes/class-dependency-checker.php:144
|
||||||
|
#: includes/class-network-settings.php:67
|
||||||
|
#: includes/class-network-settings.php:68
|
||||||
|
#: includes/class-settings.php:83
|
||||||
|
#: includes/class-settings.php:84
|
||||||
|
#: includes/class-settings.php:109
|
||||||
|
#: includes/class-settings.php:110
|
||||||
|
msgid "Two-Factor Extended"
|
||||||
|
msgstr "Two-Factor Extended"
|
||||||
|
|
||||||
|
#. Plugin URI of the plugin
|
||||||
|
#: two-factor-extended.php
|
||||||
|
msgid "https://git.robotstxt.es/ROBOTSTXT/two-factor-extended"
|
||||||
|
msgstr "https://git.robotstxt.es/ROBOTSTXT/two-factor-extended"
|
||||||
|
|
||||||
|
#. Description of the plugin
|
||||||
|
#: two-factor-extended.php
|
||||||
|
msgid "Extends the WordPress Two Factor plugin with advanced role-based controls, forced 2FA methods, and enhanced administrative features for single-site and Multisite installations."
|
||||||
|
msgstr "Amplia el connector WordPress Two Factor amb controls avançats basats en rols, mètodes 2FA obligatoris i funcions administratives millorades per a instal·lacions de lloc únic i Multisitio."
|
||||||
|
|
||||||
|
#. Author of the plugin
|
||||||
|
#: two-factor-extended.php
|
||||||
|
msgid "javiercasares, ROBOTSTXT"
|
||||||
|
msgstr "javiercasares, ROBOTSTXT"
|
||||||
|
|
||||||
|
#. Author URI of the plugin
|
||||||
|
#: two-factor-extended.php
|
||||||
|
msgid "https://www.robotstxt.es/"
|
||||||
|
msgstr "https://www.robotstxt.es/"
|
||||||
|
|
||||||
|
#: includes/class-bulk-actions.php:62
|
||||||
|
msgid "Require 2FA Setup"
|
||||||
|
msgstr "Requerir configuració 2FA"
|
||||||
|
|
||||||
|
#: includes/class-bulk-actions.php:63
|
||||||
|
msgid "Reset 2FA Grace Period"
|
||||||
|
msgstr "Restablir el període de gràcia 2FA"
|
||||||
|
|
||||||
|
#. translators: %d: Number of users
|
||||||
|
#: includes/class-bulk-actions.php:221
|
||||||
|
#, php-format
|
||||||
|
msgid "2FA requirement set for %d user."
|
||||||
|
msgid_plural "2FA requirement set for %d users."
|
||||||
|
msgstr[0] "Requisit 2FA establert per a %d usuari."
|
||||||
|
msgstr[1] "Requisit 2FA establert per a %d usuaris."
|
||||||
|
|
||||||
|
#. translators: %d: Number of users
|
||||||
|
#: includes/class-bulk-actions.php:242
|
||||||
|
#, php-format
|
||||||
|
msgid "Grace period reset for %d user."
|
||||||
|
msgid_plural "Grace period reset for %d users."
|
||||||
|
msgstr[0] "Període de gràcia restablit per a %d usuari."
|
||||||
|
msgstr[1] "Període de gràcia restablit per a %d usuaris."
|
||||||
|
|
||||||
|
#: includes/class-compliance-report.php:274
|
||||||
|
#: includes/class-settings.php:1392
|
||||||
|
msgid "Two-Factor Extended - Compliance Report"
|
||||||
|
msgstr "Two-Factor Extended - Informe de compliment"
|
||||||
|
|
||||||
|
#. translators: 1: Site name
|
||||||
|
#: includes/class-compliance-report.php:278
|
||||||
|
#, php-format
|
||||||
|
msgid "Compliance Report for %s"
|
||||||
|
msgstr "Informe de compliment per a %s"
|
||||||
|
|
||||||
|
#: includes/class-compliance-report.php:282
|
||||||
|
msgid "Summary:"
|
||||||
|
msgstr "Resum:"
|
||||||
|
|
||||||
|
#: includes/class-compliance-report.php:283
|
||||||
|
#, php-format
|
||||||
|
msgid "Total Users: %d"
|
||||||
|
msgstr "Total d'usuaris: %d"
|
||||||
|
|
||||||
|
#: includes/class-compliance-report.php:284
|
||||||
|
#, php-format
|
||||||
|
msgid "Compliant: %d"
|
||||||
|
msgstr "Complint: %d"
|
||||||
|
|
||||||
|
#: includes/class-compliance-report.php:285
|
||||||
|
#, php-format
|
||||||
|
msgid "Non-Compliant: %d"
|
||||||
|
msgstr "No complint: %d"
|
||||||
|
|
||||||
|
#: includes/class-compliance-report.php:286
|
||||||
|
#, php-format
|
||||||
|
msgid "In Grace Period: %d"
|
||||||
|
msgstr "En període de gràcia: %d"
|
||||||
|
|
||||||
|
#: includes/class-compliance-report.php:287
|
||||||
|
#, php-format
|
||||||
|
msgid "No Requirements: %d"
|
||||||
|
msgstr "Sense requisits: %d"
|
||||||
|
|
||||||
|
#: includes/class-compliance-report.php:290
|
||||||
|
msgid "By Role:"
|
||||||
|
msgstr "Per rol:"
|
||||||
|
|
||||||
|
#: includes/class-compliance-report.php:303
|
||||||
|
msgid "For detailed information, please log in to the WordPress admin."
|
||||||
|
msgstr "Per a informació detallada, accediu a l'administrador de WordPress."
|
||||||
|
|
||||||
|
#. translators: %s: Two Factor plugin link
|
||||||
|
#: includes/class-dependency-checker.php:104
|
||||||
|
#, php-format
|
||||||
|
msgid "This plugin requires the %s plugin to be installed and activated."
|
||||||
|
msgstr "Aquest connector requereix que el connector %s estigui instal·lat i activat."
|
||||||
|
|
||||||
|
#: includes/class-dependency-checker.php:105
|
||||||
|
msgid "Two Factor"
|
||||||
|
msgstr "Two Factor"
|
||||||
|
|
||||||
|
#. translators: %s: Minimum WordPress version
|
||||||
|
#: includes/class-dependency-checker.php:126
|
||||||
|
#, php-format
|
||||||
|
msgid "This plugin requires WordPress %s or higher."
|
||||||
|
msgstr "Aquest connector requereix WordPress %s o superior."
|
||||||
|
|
||||||
|
#. translators: %s: Minimum PHP version
|
||||||
|
#: includes/class-dependency-checker.php:148
|
||||||
|
#, php-format
|
||||||
|
msgid "This plugin requires PHP %s or higher."
|
||||||
|
msgstr "Aquest connector requereix PHP %s o superior."
|
||||||
|
|
||||||
|
#. translators: %s: Required providers list
|
||||||
|
#: includes/class-enforcement.php:98
|
||||||
|
#, php-format
|
||||||
|
msgid "Your account requires the following 2FA methods to be configured: %s. Please contact an administrator for assistance."
|
||||||
|
msgstr "El vostre compte requereix que es configurin els mètodes 2FA següents: %s. Poseu-vos en contacte amb un administrador per obtenir ajuda."
|
||||||
|
|
||||||
|
#: includes/class-enforcement.php:292
|
||||||
|
#: includes/class-enforcement.php:320
|
||||||
|
#: includes/class-provider-filter.php:218
|
||||||
|
msgid "Two-Factor Extended:"
|
||||||
|
msgstr "Two-Factor Extended:"
|
||||||
|
|
||||||
|
#: includes/class-enforcement.php:297
|
||||||
|
#, php-format
|
||||||
|
msgid "You have %1$d day remaining to configure the required 2FA methods: %2$s"
|
||||||
|
msgid_plural "You have %1$d days remaining to configure the required 2FA methods: %2$s"
|
||||||
|
msgstr[0] "Us queda %1$d dia per configurar els mètodes 2FA requerits: %2$s"
|
||||||
|
msgstr[1] "Us queden %1$d dies per configurar els mètodes 2FA requerits: %2$s"
|
||||||
|
|
||||||
|
#: includes/class-enforcement.php:311
|
||||||
|
#: includes/class-enforcement.php:331
|
||||||
|
msgid "Configure 2FA Now"
|
||||||
|
msgstr "Configura el 2FA ara"
|
||||||
|
|
||||||
|
#. translators: %s: Required providers list
|
||||||
|
#: includes/class-enforcement.php:324
|
||||||
|
#, php-format
|
||||||
|
msgid "Your account requires the following 2FA methods: %s. Your access may be restricted until you configure them."
|
||||||
|
msgstr "El vostre compte requereix els mètodes 2FA següents: %s. L'accés pot estar restringit fins que els configureu."
|
||||||
|
|
||||||
|
#: includes/class-network-settings.php:83
|
||||||
|
#: includes/class-settings.php:936
|
||||||
|
#: includes/class-settings.php:1262
|
||||||
|
#: includes/class-settings.php:1353
|
||||||
|
#: includes/class-settings.php:1508
|
||||||
|
#: robotstxt-updater.php:367
|
||||||
|
msgid "You do not have sufficient permissions to access this page."
|
||||||
|
msgstr "No teniu permisos suficients per accedir a aquesta pàgina."
|
||||||
|
|
||||||
|
#: includes/class-network-settings.php:97
|
||||||
|
#: includes/class-settings.php:1534
|
||||||
|
msgid "Network settings saved successfully."
|
||||||
|
msgstr "La configuració de xarxa s'ha desat correctament."
|
||||||
|
|
||||||
|
#: includes/class-network-settings.php:104
|
||||||
|
msgid "Network-Wide Settings"
|
||||||
|
msgstr "Configuració de tota la xarxa"
|
||||||
|
|
||||||
|
#: includes/class-network-settings.php:110
|
||||||
|
msgid "Network-Wide Enforcement"
|
||||||
|
msgstr "Aplicació a tota la xarxa"
|
||||||
|
|
||||||
|
#: includes/class-network-settings.php:123
|
||||||
|
msgid "Apply these settings to all sites in the network"
|
||||||
|
msgstr "Aplica aquesta configuració a tots els llocs de la xarxa"
|
||||||
|
|
||||||
|
#: includes/class-network-settings.php:126
|
||||||
|
msgid "When enabled, network settings override individual site settings."
|
||||||
|
msgstr "Quan s'activa, la configuració de xarxa substitueix la configuració de llocs individuals."
|
||||||
|
|
||||||
|
#: includes/class-network-settings.php:135
|
||||||
|
msgid "Allow Site Override"
|
||||||
|
msgstr "Permet la substitució del lloc"
|
||||||
|
|
||||||
|
#: includes/class-network-settings.php:148
|
||||||
|
msgid "Allow individual sites to override network settings"
|
||||||
|
msgstr "Permet que llocs individuals substitueixin la configuració de xarxa"
|
||||||
|
|
||||||
|
#: includes/class-network-settings.php:151
|
||||||
|
msgid "Site administrators can configure their own 2FA requirements."
|
||||||
|
msgstr "Els administradors de lloc poden configurar els seus propis requisits 2FA."
|
||||||
|
|
||||||
|
#: includes/class-network-settings.php:159
|
||||||
|
msgid "Super Admin Requirements"
|
||||||
|
msgstr "Requisits del superadministrador"
|
||||||
|
|
||||||
|
#: includes/class-network-settings.php:168
|
||||||
|
msgid "Network Grace Period"
|
||||||
|
msgstr "Període de gràcia de xarxa"
|
||||||
|
|
||||||
|
#: includes/class-network-settings.php:180
|
||||||
|
msgid "days"
|
||||||
|
msgstr "dies"
|
||||||
|
|
||||||
|
#: includes/class-network-settings.php:182
|
||||||
|
msgid "Grace period for all sites in the network. Set to 0 for immediate enforcement."
|
||||||
|
msgstr "Període de gràcia per a tots els llocs de la xarxa. Establiu 0 per a l'aplicació immediata."
|
||||||
|
|
||||||
|
#: includes/class-network-settings.php:188
|
||||||
|
msgid "Network Role Requirements"
|
||||||
|
msgstr "Requisits de rols de xarxa"
|
||||||
|
|
||||||
|
#: includes/class-network-settings.php:190
|
||||||
|
msgid "Configure 2FA requirements that apply across all sites in the network."
|
||||||
|
msgstr "Configura els requisits 2FA que s'apliquen a tots els llocs de la xarxa."
|
||||||
|
|
||||||
|
#: includes/class-network-settings.php:195
|
||||||
|
#: includes/class-settings.php:1554
|
||||||
|
msgid "Save Network Settings"
|
||||||
|
msgstr "Desa la configuració de xarxa"
|
||||||
|
|
||||||
|
#: includes/class-network-settings.php:215
|
||||||
|
#: includes/class-network-settings.php:256
|
||||||
|
msgid "No 2FA providers detected."
|
||||||
|
msgstr "No s'han detectat proveïdors 2FA."
|
||||||
|
|
||||||
|
#: includes/class-network-settings.php:235
|
||||||
|
msgid "Required 2FA methods for super administrators."
|
||||||
|
msgstr "Mètodes 2FA requerits per als superadministradors."
|
||||||
|
|
||||||
|
#: includes/class-network-settings.php:266
|
||||||
|
#: includes/class-settings.php:464
|
||||||
|
#: includes/class-settings.php:546
|
||||||
|
#: includes/class-settings.php:1161
|
||||||
|
#: includes/class-settings.php:1426
|
||||||
|
msgid "Role"
|
||||||
|
msgstr "Rol"
|
||||||
|
|
||||||
|
#: includes/class-network-settings.php:267
|
||||||
|
#: includes/class-settings.php:465
|
||||||
|
msgid "Required 2FA Methods"
|
||||||
|
msgstr "Mètodes 2FA requerits"
|
||||||
|
|
||||||
|
#: includes/class-network-settings.php:306
|
||||||
|
#: includes/class-settings.php:755
|
||||||
|
#: includes/class-settings.php:767
|
||||||
|
#: includes/class-settings.php:1737
|
||||||
|
msgid "You do not have sufficient permissions to perform this action."
|
||||||
|
msgstr "No teniu permisos suficients per dur a terme aquesta acció."
|
||||||
|
|
||||||
|
#: includes/class-network-settings.php:315
|
||||||
|
#: includes/class-settings.php:1517
|
||||||
|
#: includes/class-settings.php:1732
|
||||||
|
msgid "Security check failed."
|
||||||
|
msgstr "Ha fallat la comprovació de seguretat."
|
||||||
|
|
||||||
|
#. translators: %s: List of hidden providers
|
||||||
|
#: includes/class-provider-filter.php:222
|
||||||
|
#, php-format
|
||||||
|
msgid "Some 2FA methods are hidden based on your role: %s"
|
||||||
|
msgstr "Alguns mètodes 2FA estan ocults segons el vostre rol: %s"
|
||||||
|
|
||||||
|
#: includes/class-rest-api.php:201
|
||||||
|
msgid "Unable to retrieve compliance status."
|
||||||
|
msgstr "No es pot recuperar l'estat de compliment."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:161
|
||||||
|
msgid "General Settings"
|
||||||
|
msgstr "Configuració general"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:169
|
||||||
|
msgid "Role-Based 2FA Requirements"
|
||||||
|
msgstr "Requisits 2FA basats en rols"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:177
|
||||||
|
msgid "Role-Based Provider Visibility"
|
||||||
|
msgstr "Visibilitat de proveïdors basada en rols"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:185
|
||||||
|
msgid "Data Management"
|
||||||
|
msgstr "Gestió de dades"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:207
|
||||||
|
msgid "Grace Period (Days)"
|
||||||
|
msgstr "Període de gràcia (dies)"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:215
|
||||||
|
msgid "Number of days users have to configure required 2FA methods before enforcement. Set to 0 for immediate enforcement."
|
||||||
|
msgstr "Nombre de dies que tenen els usuaris per configurar els mètodes 2FA requerits abans de l'aplicació. Establiu 0 per a l'aplicació immediata."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:225
|
||||||
|
msgid "Role Requirements"
|
||||||
|
msgstr "Requisits de rol"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:235
|
||||||
|
msgid "Provider Visibility"
|
||||||
|
msgstr "Visibilitat de proveïdors"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:245
|
||||||
|
msgid "Remove Data on Uninstall"
|
||||||
|
msgstr "Elimina les dades en desinstal·lar"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:252
|
||||||
|
msgid "Delete all plugin data when the plugin is uninstalled"
|
||||||
|
msgstr "Elimina totes les dades del connector quan es desinstal·li"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:253
|
||||||
|
msgid "Warning: This action cannot be undone. All plugin settings and data will be permanently deleted."
|
||||||
|
msgstr "Avís: Aquesta acció no es pot desfer. Tota la configuració i les dades del connector s'eliminaran permanentment."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:266
|
||||||
|
msgid "Configure general plugin settings."
|
||||||
|
msgstr "Configura els paràmetres generals del connector."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:280
|
||||||
|
msgid "Configure which 2FA methods are required for each user role. Users with multiple roles must satisfy all role requirements."
|
||||||
|
msgstr "Configura quins mètodes 2FA són necessaris per a cada rol d'usuari. Els usuaris amb diversos rols han de complir tots els requisits de rol."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:293
|
||||||
|
msgid "Control which 2FA methods are visible to each role. Users with multiple roles see methods visible to ANY of their roles (union logic). Required methods are always visible."
|
||||||
|
msgstr "Controla quins mètodes 2FA són visibles per a cada rol. Els usuaris amb diversos rols veuen els mètodes visibles per a QUALSEVOL dels seus rols (lògica d'unió). Els mètodes requerits sempre són visibles."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:306
|
||||||
|
msgid "Manage plugin data and cleanup options."
|
||||||
|
msgstr "Gestiona les dades del connector i les opcions de neteja."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:309
|
||||||
|
msgid "Import / Export Settings"
|
||||||
|
msgstr "Importa / Exporta la configuració"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:314
|
||||||
|
#: includes/class-settings.php:320
|
||||||
|
msgid "Export Settings"
|
||||||
|
msgstr "Exporta la configuració"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:324
|
||||||
|
msgid "Export all plugin settings to a JSON file. This can be used to backup or transfer settings to another site."
|
||||||
|
msgstr "Exporta tota la configuració del connector a un fitxer JSON. Això es pot usar per fer una còpia de seguretat o transferir la configuració a un altre lloc."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:330
|
||||||
|
#: includes/class-settings.php:345
|
||||||
|
msgid "Import Settings"
|
||||||
|
msgstr "Importa la configuració"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:349
|
||||||
|
msgid "Import plugin settings from a previously exported JSON file. This will overwrite your current settings. Maximum file size: 1MB."
|
||||||
|
msgstr "Importa la configuració del connector des d'un fitxer JSON exportat anteriorment. Això sobreescriurà la configuració actual. Mida màxima del fitxer: 1 MB."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:355
|
||||||
|
msgid "Reset Plugin"
|
||||||
|
msgstr "Restablir el connector"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:360
|
||||||
|
msgid "Reset to Default Settings"
|
||||||
|
msgstr "Restablir la configuració predeterminada"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:363
|
||||||
|
msgid "Are you sure you want to reset all plugin settings to their default values? This action cannot be undone."
|
||||||
|
msgstr "Esteu segur que voleu restablir tota la configuració del connector als valors predeterminats? Aquesta acció no es pot desfer."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:366
|
||||||
|
msgid "Reset All Settings"
|
||||||
|
msgstr "Restablir tota la configuració"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:370
|
||||||
|
msgid "Warning: This will reset all plugin settings to their default values, including role requirements and provider visibility. User grace period data will be cleared. This action cannot be undone."
|
||||||
|
msgstr "Avís: Això restablirà tota la configuració del connector als valors predeterminats, incloent-hi els requisits de rol i la visibilitat de proveïdors. Les dades del període de gràcia dels usuaris s'esboraran. Aquesta acció no es pot desfer."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:453
|
||||||
|
#: includes/class-settings.php:534
|
||||||
|
msgid "No 2FA providers detected. Please ensure the Two Factor plugin is active and properly configured."
|
||||||
|
msgstr "No s'han detectat proveïdors 2FA. Assegureu-vos que el connector Two Factor estigui actiu i configurat correctament."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:497
|
||||||
|
msgid "Select which 2FA methods each role must have configured. Users will not be able to log in without these methods."
|
||||||
|
msgstr "Seleccioneu quins mètodes 2FA ha de tenir configurats cada rol. Els usuaris no podran iniciar sessió sense aquests mètodes."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:547
|
||||||
|
msgid "Visible 2FA Methods"
|
||||||
|
msgstr "Mètodes 2FA visibles"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:577
|
||||||
|
msgid "(Required)"
|
||||||
|
msgstr "(Requerit)"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:599
|
||||||
|
msgid "Uncheck methods to hide them from users with this role. Required methods are always visible and cannot be hidden."
|
||||||
|
msgstr "Desmarqueu els mètodes per amagar-los als usuaris amb aquest rol. Els mètodes requerits sempre són visibles i no es poden amagar."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:664
|
||||||
|
msgid "Network Settings Active:"
|
||||||
|
msgstr "Configuració de xarxa activa:"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:667
|
||||||
|
msgid "This site inherits settings from the network, but you can override them below."
|
||||||
|
msgstr "Aquest lloc hereta la configuració de la xarxa, però podeu substituir-la a continuació."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:669
|
||||||
|
msgid "This site inherits settings from the network. Site-level changes are disabled."
|
||||||
|
msgstr "Aquest lloc hereta la configuració de la xarxa. Els canvis a nivell de lloc estan desactivats."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:719
|
||||||
|
#: includes/class-settings.php:851
|
||||||
|
msgid "File size exceeds 1MB limit. Please use a smaller file."
|
||||||
|
msgstr "La mida del fitxer supera el límit d'1 MB. Utilitzeu un fitxer més petit."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:726
|
||||||
|
msgid "Please select a valid JSON file (.json extension)."
|
||||||
|
msgstr "Seleccioneu un fitxer JSON vàlid (extensió .json)."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:731
|
||||||
|
msgid "Importing will overwrite your current settings. Are you sure you want to continue?"
|
||||||
|
msgstr "La importació sobreescriurà la configuració actual. Esteu segur que voleu continuar?"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:821
|
||||||
|
msgid "Unable to export settings. Please try again later."
|
||||||
|
msgstr "No es pot exportar la configuració. Torneu-ho a intentar més tard."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:822
|
||||||
|
msgid "Export Error"
|
||||||
|
msgstr "Error d'exportació"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:839
|
||||||
|
msgid "Error uploading file. Please try again."
|
||||||
|
msgstr "Error en pujar el fitxer. Torneu-ho a intentar."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:863
|
||||||
|
msgid "Invalid file type. Please upload a JSON file."
|
||||||
|
msgstr "Tipus de fitxer no vàlid. Pugeu un fitxer JSON."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:876
|
||||||
|
msgid "Error reading file. Please try again."
|
||||||
|
msgstr "Error en llegir el fitxer. Torneu-ho a intentar."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:889
|
||||||
|
msgid "Invalid JSON file. Please upload a valid settings export file."
|
||||||
|
msgstr "Fitxer JSON no vàlid. Pugeu un fitxer d'exportació de configuració vàlid."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:900
|
||||||
|
msgid "Invalid settings file structure."
|
||||||
|
msgstr "Estructura del fitxer de configuració no vàlida."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:923
|
||||||
|
msgid "Settings imported successfully!"
|
||||||
|
msgstr "La configuració s'ha importat correctament!"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:944
|
||||||
|
msgid "Settings"
|
||||||
|
msgstr "Configuració"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:945
|
||||||
|
msgid "Audit Log"
|
||||||
|
msgstr "Registre d'auditoria"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:946
|
||||||
|
msgid "Compliance"
|
||||||
|
msgstr "Compliment"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:998
|
||||||
|
msgid "Site-level settings are currently disabled by network administrator. Please contact your network administrator to make changes."
|
||||||
|
msgstr "La configuració a nivell de lloc està desactivada per l'administrador de xarxa. Poseu-vos en contacte amb l'administrador de xarxa per fer canvis."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1040
|
||||||
|
#: includes/class-settings.php:1283
|
||||||
|
msgid "Audit logs cleared successfully."
|
||||||
|
msgstr "Els registres d'auditoria s'han esborrat correctament."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1048
|
||||||
|
#: includes/class-settings.php:1294
|
||||||
|
msgid "Statistics"
|
||||||
|
msgstr "Estadístiques"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1049
|
||||||
|
#: includes/class-settings.php:1295
|
||||||
|
#, php-format
|
||||||
|
msgid "Total logs: %d"
|
||||||
|
msgstr "Total de registres: %d"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1050
|
||||||
|
#: includes/class-settings.php:1296
|
||||||
|
#, php-format
|
||||||
|
msgid "Recent activity (7 days): %d"
|
||||||
|
msgstr "Activitat recent (7 dies): %d"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1055
|
||||||
|
#: includes/class-settings.php:1185
|
||||||
|
#: includes/class-settings.php:1301
|
||||||
|
#: includes/class-settings.php:1450
|
||||||
|
msgid "Export to CSV"
|
||||||
|
msgstr "Exporta a CSV"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1062
|
||||||
|
#: includes/class-settings.php:1308
|
||||||
|
msgid "Date"
|
||||||
|
msgstr "Data"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1063
|
||||||
|
#: includes/class-settings.php:1309
|
||||||
|
msgid "Action"
|
||||||
|
msgstr "Acció"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1064
|
||||||
|
#: includes/class-settings.php:1310
|
||||||
|
msgid "Description"
|
||||||
|
msgstr "Descripció"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1065
|
||||||
|
#: includes/class-settings.php:1192
|
||||||
|
#: includes/class-settings.php:1311
|
||||||
|
msgid "User"
|
||||||
|
msgstr "Usuari"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1066
|
||||||
|
#: includes/class-settings.php:1312
|
||||||
|
msgid "IP Address"
|
||||||
|
msgstr "Adreça IP"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1080
|
||||||
|
msgid "Unknown"
|
||||||
|
msgstr "Desconegut"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1082
|
||||||
|
msgid "System"
|
||||||
|
msgstr "Sistema"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1091
|
||||||
|
#: includes/class-settings.php:1318
|
||||||
|
msgid "No audit logs found."
|
||||||
|
msgstr "No s'han trobat registres d'auditoria."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1099
|
||||||
|
#, php-format
|
||||||
|
msgid "Showing 50 most recent logs. Total logs: %d"
|
||||||
|
msgstr "S'mostren els 50 registres més recents. Total de registres: %d"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1130
|
||||||
|
#: includes/class-settings.php:1395
|
||||||
|
msgid "Overview"
|
||||||
|
msgstr "Resum general"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1133
|
||||||
|
#: includes/class-settings.php:1398
|
||||||
|
msgid "Total Users"
|
||||||
|
msgstr "Total d'usuaris"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1137
|
||||||
|
#: includes/class-settings.php:1163
|
||||||
|
#: includes/class-settings.php:1402
|
||||||
|
#: includes/class-settings.php:1428
|
||||||
|
msgid "Compliant"
|
||||||
|
msgstr "Complint"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1141
|
||||||
|
#: includes/class-settings.php:1164
|
||||||
|
#: includes/class-settings.php:1406
|
||||||
|
#: includes/class-settings.php:1429
|
||||||
|
msgid "Non-Compliant"
|
||||||
|
msgstr "No complint"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1145
|
||||||
|
#: includes/class-settings.php:1410
|
||||||
|
msgid "In Grace Period"
|
||||||
|
msgstr "En període de gràcia"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1149
|
||||||
|
#: includes/class-settings.php:1414
|
||||||
|
msgid "No Requirements"
|
||||||
|
msgstr "Sense requisits"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1157
|
||||||
|
#: includes/class-settings.php:1422
|
||||||
|
msgid "Compliance by Role"
|
||||||
|
msgstr "Compliment per rol"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1162
|
||||||
|
#: includes/class-settings.php:1427
|
||||||
|
msgid "Total"
|
||||||
|
msgstr "Total"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1181
|
||||||
|
#: includes/class-settings.php:1446
|
||||||
|
msgid "Non-Compliant Users"
|
||||||
|
msgstr "Usuaris no complints"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1193
|
||||||
|
#: includes/class-settings.php:1458
|
||||||
|
msgid "Email"
|
||||||
|
msgstr "Correu electrònic"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1194
|
||||||
|
#: includes/class-settings.php:1459
|
||||||
|
msgid "Roles"
|
||||||
|
msgstr "Rols"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1195
|
||||||
|
#: includes/class-settings.php:1461
|
||||||
|
msgid "Status"
|
||||||
|
msgstr "Estat"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1196
|
||||||
|
#: includes/class-settings.php:1460
|
||||||
|
msgid "Missing Providers"
|
||||||
|
msgstr "Proveïdors que falten"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1215
|
||||||
|
#, php-format
|
||||||
|
msgid "Grace period (%d days left)"
|
||||||
|
msgstr "Període de gràcia (%d dies restants)"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1221
|
||||||
|
#: includes/class-settings.php:1488
|
||||||
|
msgid "Non-compliant"
|
||||||
|
msgstr "No complint"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1229
|
||||||
|
#: includes/class-settings.php:1467
|
||||||
|
msgid "All users are compliant!"
|
||||||
|
msgstr "Tots els usuaris compleixen els requisits!"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1291
|
||||||
|
msgid "Two-Factor Extended - Audit Log"
|
||||||
|
msgstr "Two-Factor Extended - Registre d'auditoria"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1339
|
||||||
|
msgid "Showing 50 most recent logs. Export to CSV for full history."
|
||||||
|
msgstr "S'mostren els 50 registres més recents. Exporteu a CSV per a l'historial complet."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1380
|
||||||
|
msgid "Report sent successfully."
|
||||||
|
msgstr "L'informe s'ha enviat correctament."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1382
|
||||||
|
msgid "Failed to send report."
|
||||||
|
msgstr "No s'ha pogut enviar l'informe."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1457
|
||||||
|
msgid "Username"
|
||||||
|
msgstr "Nom d'usuari"
|
||||||
|
|
||||||
|
#. translators: %d: Number of days
|
||||||
|
#: includes/class-settings.php:1482
|
||||||
|
#, php-format
|
||||||
|
msgid "Grace: %d days"
|
||||||
|
msgstr "Gràcia: %d dies"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1544
|
||||||
|
msgid "Network-wide Settings"
|
||||||
|
msgstr "Configuració de tota la xarxa"
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1548
|
||||||
|
msgid "Network settings will be available in future versions."
|
||||||
|
msgstr "La configuració de xarxa estarà disponible en versions futures."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1764
|
||||||
|
msgid "Plugin settings have been reset to default values successfully."
|
||||||
|
msgstr "La configuració del connector s'ha restablit als valors predeterminats correctament."
|
||||||
|
|
||||||
|
#: includes/class-settings.php:1785
|
||||||
|
msgid "Failed to reset plugin settings. Please try again."
|
||||||
|
msgstr "No s'ha pogut restablir la configuració del connector. Torneu-ho a intentar."
|
||||||
|
|
||||||
|
#: robotstxt-updater.php:362
|
||||||
|
msgid "Security check failed"
|
||||||
|
msgstr "Ha fallat la comprovació de seguretat"
|
||||||
Binary file not shown.
|
|
@ -1,9 +1,9 @@
|
||||||
# Translation of Two Factor Extended to Spanish (Spain)
|
# Translation of Two-Factor Extended to Spanish (Spain)
|
||||||
# Copyright (C) 2026 javiercasares, ROBOTSTXT
|
# Copyright (C) 2026 javiercasares, ROBOTSTXT
|
||||||
# This file is distributed under the GPL-3.0-or-later.
|
# This file is distributed under the GPL-3.0-or-later.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Two Factor Extended 1.0.0\n"
|
"Project-Id-Version: Two-Factor Extended 1.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: https://git.robotstxt.es/ROBOTSTXT/two-factor-extended/issues\n"
|
"Report-Msgid-Bugs-To: https://git.robotstxt.es/ROBOTSTXT/two-factor-extended/issues\n"
|
||||||
"Last-Translator: javiercasares, ROBOTSTXT\n"
|
"Last-Translator: javiercasares, ROBOTSTXT\n"
|
||||||
"Language-Team: Spanish <es@li.org>\n"
|
"Language-Team: Spanish <es@li.org>\n"
|
||||||
|
|
@ -28,8 +28,8 @@ msgstr ""
|
||||||
#: includes/class-settings.php:84
|
#: includes/class-settings.php:84
|
||||||
#: includes/class-settings.php:109
|
#: includes/class-settings.php:109
|
||||||
#: includes/class-settings.php:110
|
#: includes/class-settings.php:110
|
||||||
msgid "Two Factor Extended"
|
msgid "Two-Factor Extended"
|
||||||
msgstr "Two Factor Extended"
|
msgstr "Two-Factor Extended"
|
||||||
|
|
||||||
#. Plugin URI of the plugin
|
#. Plugin URI of the plugin
|
||||||
#: two-factor-extended.php
|
#: two-factor-extended.php
|
||||||
|
|
@ -77,8 +77,8 @@ msgstr[1] "Período de gracia restablecido para %d usuarios."
|
||||||
|
|
||||||
#: includes/class-compliance-report.php:274
|
#: includes/class-compliance-report.php:274
|
||||||
#: includes/class-settings.php:1392
|
#: includes/class-settings.php:1392
|
||||||
msgid "Two Factor Extended - Compliance Report"
|
msgid "Two-Factor Extended - Compliance Report"
|
||||||
msgstr "Two Factor Extended - Informe de cumplimiento"
|
msgstr "Two-Factor Extended - Informe de cumplimiento"
|
||||||
|
|
||||||
#. translators: 1: Site name
|
#. translators: 1: Site name
|
||||||
#: includes/class-compliance-report.php:278
|
#: includes/class-compliance-report.php:278
|
||||||
|
|
@ -154,8 +154,8 @@ msgstr "Tu cuenta requiere que se configuren los siguientes métodos 2FA: %s. Po
|
||||||
#: includes/class-enforcement.php:292
|
#: includes/class-enforcement.php:292
|
||||||
#: includes/class-enforcement.php:320
|
#: includes/class-enforcement.php:320
|
||||||
#: includes/class-provider-filter.php:218
|
#: includes/class-provider-filter.php:218
|
||||||
msgid "Two Factor Extended:"
|
msgid "Two-Factor Extended:"
|
||||||
msgstr "Two Factor Extended:"
|
msgstr "Two-Factor Extended:"
|
||||||
|
|
||||||
#: includes/class-enforcement.php:297
|
#: includes/class-enforcement.php:297
|
||||||
#, php-format
|
#, php-format
|
||||||
|
|
@ -645,8 +645,8 @@ msgid "All users are compliant!"
|
||||||
msgstr "¡Todos los usuarios están cumpliendo!"
|
msgstr "¡Todos los usuarios están cumpliendo!"
|
||||||
|
|
||||||
#: includes/class-settings.php:1291
|
#: includes/class-settings.php:1291
|
||||||
msgid "Two Factor Extended - Audit Log"
|
msgid "Two-Factor Extended - Audit Log"
|
||||||
msgstr "Two Factor Extended - Registro de auditoría"
|
msgstr "Two-Factor Extended - Registro de auditoría"
|
||||||
|
|
||||||
#: includes/class-settings.php:1339
|
#: includes/class-settings.php:1339
|
||||||
msgid "Showing 50 most recent logs. Export to CSV for full history."
|
msgid "Showing 50 most recent logs. Export to CSV for full history."
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
# This file is distributed under the GPL-3.0-or-later.
|
# This file is distributed under the GPL-3.0-or-later.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Two Factor Extended 1.0.0\n"
|
"Project-Id-Version: Two-Factor Extended 1.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: https://git.robotstxt.es/ROBOTSTXT/two-factor-extended/issues\n"
|
"Report-Msgid-Bugs-To: https://git.robotstxt.es/ROBOTSTXT/two-factor-extended/issues\n"
|
||||||
"Last-Translator: javiercasares, ROBOTSTXT\n"
|
"Last-Translator: javiercasares, ROBOTSTXT\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
|
@ -25,7 +25,7 @@ msgstr ""
|
||||||
#: includes/class-settings.php:84
|
#: includes/class-settings.php:84
|
||||||
#: includes/class-settings.php:109
|
#: includes/class-settings.php:109
|
||||||
#: includes/class-settings.php:110
|
#: includes/class-settings.php:110
|
||||||
msgid "Two Factor Extended"
|
msgid "Two-Factor Extended"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. Plugin URI of the plugin
|
#. Plugin URI of the plugin
|
||||||
|
|
@ -74,7 +74,7 @@ msgstr[1] ""
|
||||||
|
|
||||||
#: includes/class-compliance-report.php:274
|
#: includes/class-compliance-report.php:274
|
||||||
#: includes/class-settings.php:1420
|
#: includes/class-settings.php:1420
|
||||||
msgid "Two Factor Extended - Compliance Report"
|
msgid "Two-Factor Extended - Compliance Report"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. translators: 1: Site name
|
#. translators: 1: Site name
|
||||||
|
|
@ -156,7 +156,7 @@ msgstr ""
|
||||||
#: includes/class-enforcement.php:292
|
#: includes/class-enforcement.php:292
|
||||||
#: includes/class-enforcement.php:320
|
#: includes/class-enforcement.php:320
|
||||||
#: includes/class-provider-filter.php:220
|
#: includes/class-provider-filter.php:220
|
||||||
msgid "Two Factor Extended:"
|
msgid "Two-Factor Extended:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: includes/class-enforcement.php:297
|
#: includes/class-enforcement.php:297
|
||||||
|
|
@ -650,7 +650,7 @@ msgid "All users are compliant!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: includes/class-settings.php:1309
|
#: includes/class-settings.php:1309
|
||||||
msgid "Two Factor Extended - Audit Log"
|
msgid "Two-Factor Extended - Audit Log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: includes/class-settings.php:1367
|
#: includes/class-settings.php:1367
|
||||||
|
|
|
||||||
20
readme.txt
20
readme.txt
|
|
@ -1,9 +1,9 @@
|
||||||
=== Two Factor Extended ===
|
=== Two-Factor Extended ===
|
||||||
Contributors: javiercasares, robotstxt
|
Contributors: javiercasares, robotstxt
|
||||||
Tags: two-factor, 2fa, authentication, security
|
Tags: two-factor, 2fa, authentication, security
|
||||||
Requires at least: 6.7
|
Requires at least: 6.7
|
||||||
Tested up to: 6.9
|
Tested up to: 6.9
|
||||||
Stable tag: 1.0.1
|
Stable tag: 1.0.2
|
||||||
Requires PHP: 8.2
|
Requires PHP: 8.2
|
||||||
Version: 1.0.1
|
Version: 1.0.1
|
||||||
License: GPL-3.0-or-later
|
License: GPL-3.0-or-later
|
||||||
|
|
@ -13,7 +13,7 @@ Extends the WordPress Two Factor plugin with advanced role-based controls and en
|
||||||
|
|
||||||
== Description ==
|
== Description ==
|
||||||
|
|
||||||
Two Factor Extended is a comprehensive extension for the WordPress Two Factor plugin that provides administrators with enterprise-level controls over two-factor authentication across their site.
|
Two-Factor Extended is a comprehensive extension for the WordPress Two Factor plugin that provides administrators with enterprise-level controls over two-factor authentication across their site.
|
||||||
|
|
||||||
**Core Features:**
|
**Core Features:**
|
||||||
|
|
||||||
|
|
@ -43,7 +43,7 @@ This plugin requires the [Two Factor](https://wordpress.org/plugins/two-factor/)
|
||||||
= Automatic Installation =
|
= Automatic Installation =
|
||||||
|
|
||||||
1. Visit the Plugins section in your WordPress admin
|
1. Visit the Plugins section in your WordPress admin
|
||||||
2. Search for "Two Factor Extended"
|
2. Search for "Two-Factor Extended"
|
||||||
3. Click "Install Now" and then "Activate"
|
3. Click "Install Now" and then "Activate"
|
||||||
|
|
||||||
**Important:** Make sure the [Two Factor](https://wordpress.org/plugins/two-factor/) plugin is installed and activated first.
|
**Important:** Make sure the [Two Factor](https://wordpress.org/plugins/two-factor/) plugin is installed and activated first.
|
||||||
|
|
@ -56,7 +56,7 @@ This plugin requires the [Two Factor](https://wordpress.org/plugins/two-factor/)
|
||||||
|
|
||||||
= After Installation =
|
= After Installation =
|
||||||
|
|
||||||
1. Go to Settings → Two Factor Extended
|
1. Go to Settings → Two-Factor Extended
|
||||||
2. Configure your role-based 2FA requirements
|
2. Configure your role-based 2FA requirements
|
||||||
3. Set which 2FA methods are available to different user roles
|
3. Set which 2FA methods are available to different user roles
|
||||||
|
|
||||||
|
|
@ -64,15 +64,15 @@ This plugin requires the [Two Factor](https://wordpress.org/plugins/two-factor/)
|
||||||
|
|
||||||
= Does this plugin replace the Two Factor plugin? =
|
= Does this plugin replace the Two Factor plugin? =
|
||||||
|
|
||||||
No, Two Factor Extended is an extension that works alongside the Two Factor plugin. Both plugins must be installed and activated.
|
No, Two-Factor Extended is an extension that works alongside the Two Factor plugin. Both plugins must be installed and activated.
|
||||||
|
|
||||||
= Is this compatible with WordPress Multisite? =
|
= Is this compatible with WordPress Multisite? =
|
||||||
|
|
||||||
Yes! Two Factor Extended fully supports WordPress Multisite with network-wide settings and site-level overrides.
|
Yes! Two-Factor Extended fully supports WordPress Multisite with network-wide settings and site-level overrides.
|
||||||
|
|
||||||
= Which PHP versions are supported? =
|
= Which PHP versions are supported? =
|
||||||
|
|
||||||
Two Factor Extended requires PHP 8.2 or higher.
|
Two-Factor Extended requires PHP 8.2 or higher.
|
||||||
|
|
||||||
= Can users bypass the 2FA requirements? =
|
= Can users bypass the 2FA requirements? =
|
||||||
|
|
||||||
|
|
@ -87,7 +87,7 @@ No. When a 2FA method is marked as required for a user's role, they cannot disab
|
||||||
|
|
||||||
== Security ==
|
== Security ==
|
||||||
|
|
||||||
Two Factor Extended follows WordPress security best practices:
|
Two-Factor Extended follows WordPress security best practices:
|
||||||
|
|
||||||
= Security Features =
|
= Security Features =
|
||||||
|
|
||||||
|
|
@ -123,7 +123,7 @@ _Release date: 2026-02-17_
|
||||||
|
|
||||||
**Initial Production Release**
|
**Initial Production Release**
|
||||||
|
|
||||||
This is the first comprehensive release of Two Factor Extended, implementing enterprise-level two-factor authentication management for WordPress.
|
This is the first comprehensive release of Two-Factor Extended, implementing enterprise-level two-factor authentication management for WordPress.
|
||||||
|
|
||||||
**Core Features**
|
**Core Features**
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Plugin Name: Two Factor Extended
|
* Plugin Name: Two-Factor Extended
|
||||||
* Plugin URI: https://git.robotstxt.es/ROBOTSTXT/two-factor-extended
|
* Plugin URI: https://git.robotstxt.es/ROBOTSTXT/two-factor-extended
|
||||||
* Description: Extends the WordPress Two Factor plugin with advanced role-based controls, forced 2FA methods, and enhanced administrative features for single-site and Multisite installations.
|
* Description: Extends the WordPress Two Factor plugin with advanced role-based controls, forced 2FA methods, and enhanced administrative features for single-site and Multisite installations.
|
||||||
* Version: 1.0.1
|
* Version: 1.0.2
|
||||||
* Requires at least: 6.7
|
* Requires at least: 6.7
|
||||||
* Requires PHP: 8.2
|
* Requires PHP: 8.2
|
||||||
* Requires Plugins: two-factor
|
* Requires Plugins: two-factor
|
||||||
|
|
@ -18,7 +18,7 @@
|
||||||
* Primary Branch: main
|
* Primary Branch: main
|
||||||
*
|
*
|
||||||
* @package TwoFactorExtended
|
* @package TwoFactorExtended
|
||||||
* @version 1.0.1
|
* @version 1.0.2
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Prevent direct access.
|
// Prevent direct access.
|
||||||
|
|
@ -27,7 +27,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Define plugin constants.
|
// Define plugin constants.
|
||||||
define( 'TWO_FACTOR_EXTENDED_VERSION', '1.0.1' );
|
define( 'TWO_FACTOR_EXTENDED_VERSION', '1.0.2' );
|
||||||
define( 'TWO_FACTOR_EXTENDED_PLUGIN_FILE', __FILE__ );
|
define( 'TWO_FACTOR_EXTENDED_PLUGIN_FILE', __FILE__ );
|
||||||
define( 'TWO_FACTOR_EXTENDED_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
|
define( 'TWO_FACTOR_EXTENDED_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
|
||||||
define( 'TWO_FACTOR_EXTENDED_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
|
define( 'TWO_FACTOR_EXTENDED_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Uninstall Two Factor Extended plugin.
|
* Uninstall Two-Factor Extended plugin.
|
||||||
*
|
*
|
||||||
* Removes all plugin data based on user preferences.
|
* Removes all plugin data based on user preferences.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
18
update.json
18
update.json
|
|
@ -1,8 +1,8 @@
|
||||||
{
|
{
|
||||||
"name": "Two Factor Extended",
|
"name": "Two-Factor Extended",
|
||||||
"slug": "two-factor-extended",
|
"slug": "two-factor-extended",
|
||||||
"version": "1.0.1",
|
"version": "1.0.2",
|
||||||
"download_url": "https://git.robotstxt.es/ROBOTSTXT/two-factor-extended/releases/download/1.0.1/two-factor-extended-1.0.1.zip",
|
"download_url": "https://git.robotstxt.es/ROBOTSTXT/two-factor-extended/releases/download/1.0.2/two-factor-extended-1.0.2.zip",
|
||||||
"requires": "6.7",
|
"requires": "6.7",
|
||||||
"requires_php": "8.2",
|
"requires_php": "8.2",
|
||||||
"tested": "6.9",
|
"tested": "6.9",
|
||||||
|
|
@ -11,12 +11,12 @@
|
||||||
"author_profile": "https://www.robotstxt.es/",
|
"author_profile": "https://www.robotstxt.es/",
|
||||||
"homepage": "https://git.robotstxt.es/ROBOTSTXT/two-factor-extended",
|
"homepage": "https://git.robotstxt.es/ROBOTSTXT/two-factor-extended",
|
||||||
"description": "Extends the WordPress Two Factor plugin with advanced role-based controls, forced 2FA methods, and enhanced administrative features for single-site and Multisite installations.",
|
"description": "Extends the WordPress Two Factor plugin with advanced role-based controls, forced 2FA methods, and enhanced administrative features for single-site and Multisite installations.",
|
||||||
"changelog": "<h3>1.0.1 - 2026-03-28</h3><ul><li><strong>Compatibility:</strong> Two Factor 0.16 settings panel — settings menu now always appears after Two Factor in admin</li><li><strong>Code Quality:</strong> PHPStan level 9 clean, PHPCS WordPress Coding Standards clean</li><li><strong>Tests:</strong> PHPUnit 9.6 compatible, 28 unit tests passing (PHP 8.5, WordPress 6.7)</li></ul><h3>1.0.0 - 2026-02-17</h3><ul><li><strong>Initial Production Release:</strong> Complete enterprise-level two-factor authentication management for WordPress</li><li><strong>Core Features:</strong> Role-based 2FA requirements, provider visibility control, grace period enforcement, WordPress Multisite support</li><li><strong>Advanced Features:</strong> Audit logging, compliance reporting, bulk operations, WP-CLI integration, REST API, import/export settings</li><li><strong>Security:</strong> Grade A security audit, comprehensive input validation, output escaping, CSRF protection, XSS prevention</li><li><strong>Quality:</strong> 28 unit tests, WCAG 2.1 Level AA compliant, performance optimized, WordPress Coding Standards compliant</li><li><strong>Compatibility:</strong> WordPress 6.7-6.9, PHP 8.2-8.5, Two Factor 0.15.0 tested</li></ul>",
|
"changelog": "<h3>1.0.2 - 2026-03-28</h3><ul><li><strong>Name:</strong> Renamed to \"Two-Factor Extended\" (hyphen added for consistency)</li><li><strong>Compatibility:</strong> Two-Factor 0.16 enforcement now respects globally-disabled providers</li><li><strong>i18n:</strong> Added Catalan (ca) translation (100% coverage); updated es_ES</li></ul><h3>1.0.1 - 2026-03-28</h3><ul><li><strong>Compatibility:</strong> Two Factor 0.16 settings panel — settings menu now always appears after Two Factor in admin</li><li><strong>Code Quality:</strong> PHPStan level 9 clean, PHPCS WordPress Coding Standards clean</li><li><strong>Tests:</strong> PHPUnit 9.6 compatible, 28 unit tests passing (PHP 8.5, WordPress 6.7)</li></ul><h3>1.0.0 - 2026-02-17</h3><ul><li><strong>Initial Production Release:</strong> Complete enterprise-level two-factor authentication management for WordPress</li><li><strong>Core Features:</strong> Role-based 2FA requirements, provider visibility control, grace period enforcement, WordPress Multisite support</li><li><strong>Advanced Features:</strong> Audit logging, compliance reporting, bulk operations, WP-CLI integration, REST API, import/export settings</li><li><strong>Security:</strong> Grade A security audit, comprehensive input validation, output escaping, CSRF protection, XSS prevention</li><li><strong>Quality:</strong> 28 unit tests, WCAG 2.1 Level AA compliant, performance optimized, WordPress Coding Standards compliant</li><li><strong>Compatibility:</strong> WordPress 6.7-6.9, PHP 8.2-8.5, Two Factor 0.15.0 tested</li></ul>",
|
||||||
"sections": {
|
"sections": {
|
||||||
"description": "Two Factor Extended is a comprehensive extension for the WordPress Two Factor plugin that provides administrators with enterprise-level controls over two-factor authentication across their site.<br><br><strong>Core Features:</strong><ul><li>Role-Based 2FA Requirements</li><li>Provider Visibility Control</li><li>Grace Period Enforcement (0-365 days)</li><li>WordPress Multisite Support</li><li>Compliance Reporting</li><li>Audit Logging</li><li>Bulk Operations</li><li>WP-CLI Commands</li><li>REST API Endpoints</li><li>Import/Export Settings</li></ul><strong>Security:</strong> Grade A security audit, comprehensive security hardening, CSRF protection, XSS prevention, SQL injection protection.<br><br><strong>Quality Assurance:</strong> 28 unit tests, WCAG 2.1 Level AA compliant, WordPress Coding Standards compliant, PHP 8.2-8.5 compatible.",
|
"description": "Two-Factor Extended is a comprehensive extension for the WordPress Two Factor plugin that provides administrators with enterprise-level controls over two-factor authentication across their site.<br><br><strong>Core Features:</strong><ul><li>Role-Based 2FA Requirements</li><li>Provider Visibility Control</li><li>Grace Period Enforcement (0-365 days)</li><li>WordPress Multisite Support</li><li>Compliance Reporting</li><li>Audit Logging</li><li>Bulk Operations</li><li>WP-CLI Commands</li><li>REST API Endpoints</li><li>Import/Export Settings</li></ul><strong>Security:</strong> Grade A security audit, comprehensive security hardening, CSRF protection, XSS prevention, SQL injection protection.<br><br><strong>Quality Assurance:</strong> 28 unit tests, WCAG 2.1 Level AA compliant, WordPress Coding Standards compliant, PHP 8.2-8.5 compatible.",
|
||||||
"changelog": "<h3>1.0.1 - 2026-03-28</h3><ul><li><strong>Compatibility:</strong> Two Factor 0.16 settings panel — settings menu now always appears after Two Factor in admin</li><li><strong>Code Quality:</strong> PHPStan level 9 clean, PHPCS WordPress Coding Standards clean</li><li><strong>Tests:</strong> PHPUnit 9.6 compatible, 28 unit tests passing (PHP 8.5, WordPress 6.7)</li></ul><h3>1.0.0 - 2026-02-17</h3><ul><li><strong>Initial Production Release:</strong> Complete enterprise-level two-factor authentication management for WordPress</li><li><strong>Core Features:</strong> Role-based 2FA requirements, provider visibility control, grace period enforcement, WordPress Multisite support</li><li><strong>Advanced Features:</strong> Audit logging, compliance reporting, bulk operations, WP-CLI integration, REST API, import/export settings</li><li><strong>Security:</strong> Grade A security audit, comprehensive input validation, output escaping, CSRF protection, XSS prevention</li><li><strong>Quality:</strong> 28 unit tests, WCAG 2.1 Level AA compliant, performance optimized, WordPress Coding Standards compliant</li><li><strong>Compatibility:</strong> WordPress 6.7-6.9, PHP 8.2-8.5, Two Factor 0.15.0 tested</li></ul>",
|
"changelog": "<h3>1.0.2 - 2026-03-28</h3><ul><li><strong>Name:</strong> Renamed to \"Two-Factor Extended\" (hyphen added for consistency)</li><li><strong>Compatibility:</strong> Two-Factor 0.16 enforcement now respects globally-disabled providers</li><li><strong>i18n:</strong> Added Catalan (ca) translation (100% coverage); updated es_ES</li></ul><h3>1.0.1 - 2026-03-28</h3><ul><li><strong>Compatibility:</strong> Two Factor 0.16 settings panel — settings menu now always appears after Two Factor in admin</li><li><strong>Code Quality:</strong> PHPStan level 9 clean, PHPCS WordPress Coding Standards clean</li><li><strong>Tests:</strong> PHPUnit 9.6 compatible, 28 unit tests passing (PHP 8.5, WordPress 6.7)</li></ul><h3>1.0.0 - 2026-02-17</h3><ul><li><strong>Initial Production Release:</strong> Complete enterprise-level two-factor authentication management for WordPress</li><li><strong>Core Features:</strong> Role-based 2FA requirements, provider visibility control, grace period enforcement, WordPress Multisite support</li><li><strong>Advanced Features:</strong> Audit logging, compliance reporting, bulk operations, WP-CLI integration, REST API, import/export settings</li><li><strong>Security:</strong> Grade A security audit, comprehensive input validation, output escaping, CSRF protection, XSS prevention</li><li><strong>Quality:</strong> 28 unit tests, WCAG 2.1 Level AA compliant, performance optimized, WordPress Coding Standards compliant</li><li><strong>Compatibility:</strong> WordPress 6.7-6.9, PHP 8.2-8.5, Two Factor 0.15.0 tested</li></ul>",
|
||||||
"installation": "<ol><li>Install the Two Factor plugin (required dependency)</li><li>Upload and activate Two Factor Extended plugin</li><li>Go to Settings → Two Factor Extended</li><li>Configure grace period (7-14 days recommended)</li><li>Set role-based 2FA requirements</li><li>Configure provider visibility per role</li><li>Monitor compliance via Compliance tab</li><li>Review audit logs via Audit Log tab</li></ol>",
|
"installation": "<ol><li>Install the Two Factor plugin (required dependency)</li><li>Upload and activate Two-Factor Extended plugin</li><li>Go to Settings → Two-Factor Extended</li><li>Configure grace period (7-14 days recommended)</li><li>Set role-based 2FA requirements</li><li>Configure provider visibility per role</li><li>Monitor compliance via Compliance tab</li><li>Review audit logs via Audit Log tab</li></ol>",
|
||||||
"faq": "<h4>Does this plugin replace the Two Factor plugin?</h4><p>No, Two Factor Extended is an extension that works alongside the Two Factor plugin. Both plugins must be installed and activated.</p><h4>Is this compatible with WordPress Multisite?</h4><p>Yes! Two Factor Extended fully supports WordPress Multisite with network-wide settings and site-level overrides.</p><h4>Which PHP versions are supported?</h4><p>Two Factor Extended requires PHP 8.2 or higher.</p><h4>Can users bypass the 2FA requirements?</h4><p>No. When a 2FA method is marked as required for a user's role, they cannot disable or remove it.</p>"
|
"faq": "<h4>Does this plugin replace the Two Factor plugin?</h4><p>No, Two-Factor Extended is an extension that works alongside the Two Factor plugin. Both plugins must be installed and activated.</p><h4>Is this compatible with WordPress Multisite?</h4><p>Yes! Two-Factor Extended fully supports WordPress Multisite with network-wide settings and site-level overrides.</p><h4>Which PHP versions are supported?</h4><p>Two-Factor Extended requires PHP 8.2 or higher.</p><h4>Can users bypass the 2FA requirements?</h4><p>No. When a 2FA method is marked as required for a user's role, they cannot disable or remove it.</p>"
|
||||||
},
|
},
|
||||||
"banners": {
|
"banners": {
|
||||||
"low": "",
|
"low": "",
|
||||||
|
|
@ -27,4 +27,4 @@
|
||||||
"2x": "https://git.robotstxt.es/ROBOTSTXT/two-factor-extended/raw/branch/main/assets/icon-256x256.png",
|
"2x": "https://git.robotstxt.es/ROBOTSTXT/two-factor-extended/raw/branch/main/assets/icon-256x256.png",
|
||||||
"svg": "https://git.robotstxt.es/ROBOTSTXT/two-factor-extended/raw/branch/main/assets/icon.svg"
|
"svg": "https://git.robotstxt.es/ROBOTSTXT/two-factor-extended/raw/branch/main/assets/icon.svg"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in a new issue