File manager - Edit - /home/xfekoga/grenier/wp-content/plugins/defender-security/src/model/setting/class-two-fa.php
Back
<?php /** * Handles 2FA settings. * * @package WP_Defender\Model\Setting */ namespace WP_Defender\Model\Setting; use Calotes\Model\Setting; /** * Model for 2FA settings. */ class Two_Fa extends Setting { public const CUSTOM_GRAPHIC_TYPE_UPLOAD = 'upload', CUSTOM_GRAPHIC_TYPE_LINK = 'link', CUSTOM_GRAPHIC_TYPE_NO = 'no'; /** * Option name. * * @var string */ protected $table = 'wd_2auth_settings'; /** * Feature status. * * @defender_property * @var bool */ public $enabled = false; /** * Allow lost phone recovery option. * * @defender_property * @var bool */ public $lost_phone = true; /** * Is 'Force Authentication' checked? * * @defender_property * @var bool */ public $force_auth = false; /** * Force authentication message. * * @var string * @defender_property * @sanitize sanitize_textarea_field */ public $force_auth_mess = ''; /** * Enable/disable 2FA for user roles. * * @var array * @defender_property */ public $user_roles = array(); /** * Allowed user roles for 'Force Authentication'. * * @var array * @defender_property */ public $force_auth_roles = array(); /** * Enable/disable custom graphic feature. * * @var bool * @defender_property */ public $custom_graphic = false; /** * Type of graphic. For example; uploading image, using image link or none. * * @var string * @defender_property */ public $custom_graphic_type = ''; /** * Upload image for custom graphic. * * @var string * @defender_property */ public $custom_graphic_url = ''; /** * Use image link for custom graphic. * * @var string * @defender_property */ public $custom_graphic_link = ''; /** * List of plugins that conflict with 2FA. * * @var array */ public $is_conflict = array(); /** * Email subject. * * @var string * @defender_property * @sanitize sanitize_text_field */ public $email_subject = ''; /** * Email sender. * * @var string * @defender_property * @sanitize sanitize_text_field */ public $email_sender = ''; /** * Email body. * * @defender_property * @var string * @sanitize sanitize_textarea_field */ public $email_body = ''; /** * App title. * * @var string * @defender_property * @sanitize sanitize_textarea_field */ public $app_title = ''; /** * It's not for DB, no need 'defender_property' annotation. Just text view on different pages. * * @var string */ public $app_text = ''; /** * Detect Woocommerce. * * @var bool * @defender_property */ public $detect_woo = false; /** * Get default values. * * @return array */ public function get_default_values(): array { return array( 'custom_graphic_type' => self::CUSTOM_GRAPHIC_TYPE_UPLOAD, 'custom_graphic_url' => defender_asset_url( '/assets/img/2factor-disabled.svg' ), 'custom_graphic_link' => '', 'email_subject' => __( 'Your OTP code', 'defender-security' ), 'email_sender' => 'admin', 'email_body' => 'Hi {{display_name}}, Your temporary password is {{passcode}} To complete your login, copy and paste the temporary password into the Password field on the login screen.', 'app_title' => '', 'message' => esc_html__( 'You are required to setup two-factor authentication to use this site.', 'defender-security' ), ); } /** * Load default values. * * @return void */ protected function before_load(): void { // Default we will load all rules. $default_values = $this->get_default_values(); if ( ! function_exists( 'get_editable_roles' ) ) { require_once ABSPATH . '/wp-admin/includes/user.php'; } $this->user_roles = array_keys( get_editable_roles() ); // Define some other defaults. $this->custom_graphic_type = $default_values['custom_graphic_type']; $this->custom_graphic_url = $default_values['custom_graphic_url']; $this->custom_graphic_link = $default_values['custom_graphic_link']; $this->email_subject = $default_values['email_subject']; $this->email_sender = $default_values['email_sender']; $this->email_body = $default_values['email_body']; $this->app_title = empty( $default_values['app_title'] ) ? wp_specialchars_decode( get_bloginfo( 'name' ), ENT_QUOTES ) : $default_values['app_title']; $this->force_auth_mess = $default_values['message']; $this->app_text = esc_html__( 'Open your authentication app and type the 6 digit passcode to log in to your account.', 'defender-security' ); } /** * After loading, reindexes the user roles array. * * @return void */ protected function after_load(): void { $this->user_roles = array_values( $this->user_roles ); } /** * Check if a plugin is in conflict with the current instance. * * @param string $plugin The plugin to check for conflict. * * @return int Returns 0 if the plugin is not in conflict, 1 if it is in conflict, and 0 if it is not in conflict * but has been marked as not conflicting. */ public function is_conflict( $plugin ) { if ( in_array( $plugin, $this->is_conflict, true ) ) { return true; } elseif ( in_array( '!' . $plugin, $this->is_conflict, true ) ) { return false; } return 0; } /** * Marks a plugin as conflicting with the current instance. * * @param string $plugin The plugin to mark as conflicting. * * @return void */ public function mark_as_conflict( $plugin ): void { if ( ! in_array( $plugin, $this->is_conflict, true ) ) { $this->is_conflict[] = $plugin; $this->save(); } } /** * Marks a plugin as not conflicting with the current instance. * * @param string $plugin The plugin to mark as not conflicting. * * @return void */ public function mark_as_un_conflict( $plugin ): void { $i = array_search( $plugin, $this->is_conflict, true ); if ( false !== $i ) { unset( $this->is_conflict[ $i ] ); } if ( ! in_array( '!' . $plugin, $this->is_conflict, true ) ) { $this->is_conflict [] = '!' . $plugin; } $this->save(); } /** * Define settings labels. * * @return array */ public function labels(): array { return array( 'enabled' => self::get_module_name(), 'user_roles' => esc_html__( 'Enabled user roles', 'defender-security' ), 'lost_phone' => esc_html__( 'Allow lost phone recovery option', 'defender-security' ), 'email_subject' => esc_html__( 'Subject', 'defender-security' ), 'email_body' => esc_html__( 'Body', 'defender-security' ), 'email_sender' => esc_html__( 'Sender', 'defender-security' ), 'force_auth' => esc_html__( 'Force 2FA on user roles', 'defender-security' ), 'force_auth_roles' => esc_html__( 'Force users to log in with two-factor authentication', 'defender-security' ), 'force_auth_mess' => esc_html__( 'Force 2FA login warning message', 'defender-security' ), 'custom_graphic' => esc_html__( 'Custom Graphic', 'defender-security' ), 'custom_graphic_type' => esc_html__( 'Enable custom graphics above login fields', 'defender-security' ), 'custom_graphic_url' => esc_html__( 'Upload Graphic', 'defender-security' ), 'custom_graphic_link' => esc_html__( 'Link Graphic', 'defender-security' ), 'app_title' => esc_html__( 'App Title', 'defender-security' ), 'detect_woo' => esc_html__( 'WooCommerce', 'defender-security' ), ); } /** * Checks if the 2FA feature is active. * * @return bool Returns true if the 2FA feature is active, false otherwise. * @since 3.12.0 */ public function is_active(): bool { return (bool) apply_filters( 'wd_2fa_enable', $this->enabled ); } /** * Retrieves the module name for Two-Factor Authentication. * * @return string The module name. */ public static function get_module_name(): string { return esc_html__( 'Two-Factor Authentication', 'defender-security' ); } }
| ver. 1.4 |
Github
|
.
| PHP 8.0.30 | Generation time: 0 |
proxy
|
phpinfo
|
Settings