PluginProbe
Two Factor Authentication / 1.14.10
Two Factor Authentication v1.14.10
1.12.2 1.13.0 1.14.10 1.14.11 1.14.14 1.14.15 1.14.16 1.14.17 1.14.23 1.14.24 1.14.26 1.14.27 1.14.3 1.14.4 1.14.5 1.14.7 1.14.8 1.15.5 1.16.0 1.2.10 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 All 98 releases
two-factor-authentication / two-factor-login.php

two-factor-login.php in Two Factor Authentication 1.14.10, at two-factor-login.php

264 lines 10.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /*
3 Plugin Name: Two Factor Authentication
4 Plugin URI: https://www.simbahosting.co.uk/s3/product/two-factor-authentication/
5 Description: Secure your WordPress login forms with two factor authentication - including WooCommerce login forms
6 Author: David Anderson, original plugin by Oskar Hane and enhanced by Dee Nutbourne
7 Author URI: https://www.simbahosting.co.uk
8 Version: 1.14.10
9 Text Domain: two-factor-authentication
10 Domain Path: /languages
11 License: GPLv2 or later
12 */
13
14 register_activation_hook(__FILE__, 'simba_two_factor_authentication_activation');
15
16 if (!function_exists('simba_two_factor_authentication_activation')) {
17 function simba_two_factor_authentication_activation() {
18 if (!empty($GLOBALS['simba_two_factor_authentication'])) {
19 $is_2fa_plugin_active = false;
20 $installed_plugins_slugs = array_keys(get_plugins());
21 foreach ($installed_plugins_slugs as $installed_plugin_slug) {
22 if (is_plugin_active($installed_plugin_slug)) {
23 $temp_split_plugin_slug = explode('/', $installed_plugin_slug);
24 if (isset($temp_split_plugin_slug[1]) && 'two-factor-login.php' == $temp_split_plugin_slug[1]) {
25 $is_2fa_plugin_active = true;
26 break;
27 }
28 }
29 }
30
31 // We should prevent activation if and only if either the 2FA Premium or 2FA Free plugin is active.
32 // We should not prevent activation if either the AIOS plugin is active.
33 if ($is_2fa_plugin_active) {
34 if (file_exists(__DIR__.'/simba-tfa/premium/loader.php')) {
35 wp_die(__('To activate Two Factor Authentication Premium, first de-activate the free version (only one can be active at once).', SIMBA_TFA_TEXT_DOMAIN));
36 } else { // If the 2FA Premium plugin is active and tries to activate the 2FA Free Plugin, it throws a fatal error and stops activating the free version.
37 wp_die(__("You can't activate Two Factor Authentication (Free) because Two Factor Authentication Premium is active (only one can be active at once).", SIMBA_TFA_TEXT_DOMAIN));
38 }
39 }
40 }
41 }
42 }
43
44 if (!defined('SIMBA_TFA_TEXT_DOMAIN')) define('SIMBA_TFA_TEXT_DOMAIN', 'two-factor-authentication');
45 if (!class_exists('Simba_Two_Factor_Authentication_1')) require dirname(__FILE__).'/simba-tfa/simba-tfa.php';
46
47 if (!class_exists('Simba_Two_Factor_Authentication_Plugin')):
48 /**
49 * This parent-child relationship enables the two to be split without affecting backwards compatibility for developers making direct calls
50 *
51 * This class is for the plugin encapsulation.
52 */
53 class Simba_Two_Factor_Authentication_Plugin extends Simba_Two_Factor_Authentication_1 {
54
55 public $version = '1.14.10';
56
57 const PHP_REQUIRED = '5.6';
58
59 /**
60 * Constructor, run upon plugin initiation
61 *
62 * @uses __FILE__
63 */
64 public function __construct() {
65
66 add_action('plugins_loaded', array($this, 'plugins_loaded_load_textdomain'));
67
68 if (version_compare(PHP_VERSION, self::PHP_REQUIRED, '<' )) {
69 add_action('all_admin_notices', array($this, 'admin_notice_insufficient_php'));
70 $abort = true;
71 }
72
73 if (!function_exists('mcrypt_get_iv_size') && !function_exists('openssl_cipher_iv_length')) {
74 add_action('all_admin_notices', array($this, 'admin_notice_missing_mcrypt_and_openssl'));
75 $abort = true;
76 }
77
78 if (!empty($abort)) return;
79
80 // Menu entries
81 add_action('admin_menu', array($this, 'menu_entry_for_admin'));
82 add_action('admin_menu', array($this, 'menu_entry_for_user'));
83 add_action('network_admin_menu', array($this, 'menu_entry_for_user'));
84
85 // Add settings link in plugin list
86 $plugin = plugin_basename(__FILE__);
87 add_filter("plugin_action_links_$plugin", array($this, 'add_plugin_settings_link'));
88 add_filter("network_admin_plugin_action_links_$plugin", array($this, 'add_plugin_settings_link'));
89
90 $this->set_user_settings_page_slug('two-factor-auth-user');
91
92 $settings_page_heading = sprintf(__('Two Factor Authentication (Version: %s) - Admin Settings', 'all-in-one-wp-security-and-firewall'), $this->version);
93 $this->set_settings_page_heading($settings_page_heading);
94
95 $this->set_plugin_translate_url('https://translate.wordpress.org/projects/wp-plugins/two-factor-authentication/');
96 $this->set_site_wide_administration_url(admin_url('options-general.php?page=two-factor-auth'));
97 $this->set_premium_version_url('https://www.simbahosting.co.uk/s3/product/two-factor-authentication/');
98 $this->set_faq_url('https://wordpress.org/plugins/two-factor-authentication/#faq');
99 parent::__construct();
100
101 }
102
103 /**
104 * Runs upon the WP filters plugin_action_links_(plugin) and network_plugin_action_links_(plugin)
105 *
106 * @param Array $links
107 *
108 * @return Array
109 */
110 public function add_plugin_settings_link($links) {
111 if (is_multisite()) {
112 $main_site_id = function_exists('get_main_site_id') ? get_main_site_id() : 1;
113 switch_to_blog($main_site_id);
114 $link = $this->get_settings_link();
115 restore_current_blog();
116 array_unshift($links, $link);
117 } else {
118 $link = $this->get_settings_link();
119 array_unshift($links, $link);
120 }
121
122 $link2 = '<a href="admin.php?page=two-factor-auth-user">'.__('User settings', 'two-factor-authentication').'</a>';
123 array_unshift($links, $link2);
124
125 return $links;
126 }
127
128 /**
129 * Get 2FA settings anchor tag link.
130 *
131 * @return string 2FA settings anchor tag link.
132 */
133 private function get_settings_link() {
134 return '<a href="'.admin_url('options-general.php').'?page=two-factor-auth">'.__('Plugin settings', 'two-factor-authentication').'</a>';
135 }
136
137 /**
138 * Runs upon the WP actions admin_menu and network_admin_menu
139 */
140 public function menu_entry_for_user() {
141
142 global $current_user;
143 if ($this->is_activated_for_user($current_user->ID)) {
144 add_menu_page(__('Two Factor Authentication', 'two-factor-authentication'), __('Two Factor Auth', 'two-factor-authentication'), 'read', 'two-factor-auth-user', array($this, 'show_dashboard_user_settings_page'), $this->includes_url().'/tfa_admin_icon_16x16.png', 72);
145 }
146 }
147
148 /**
149 * Runs upon the WP action admin_menu
150 */
151 public function menu_entry_for_admin() {
152
153 $skip_adding_options_menu_entry = (is_multisite() && (!is_super_admin() || !is_main_site()));
154
155 $skip_adding_options_menu_entry = apply_filters('simba_tfa_skip_adding_options_menu_entry', $skip_adding_options_menu_entry);
156
157 if ($skip_adding_options_menu_entry) return;
158
159 add_options_page(
160 __('Two Factor Authentication', 'two-factor-authentication'),
161 __('Two Factor Authentication', 'two-factor-authentication'),
162 $this->get_management_capability(),
163 'two-factor-auth',
164 array($this, 'show_admin_settings_page')
165 );
166 }
167
168 /**
169 * Include the admin settings page code
170 */
171 public function show_admin_settings_page() {
172
173 if (!is_admin() || !current_user_can($this->get_management_capability())) return;
174
175 $admin_settings_links = array();
176 if (!class_exists('Simba_Two_Factor_Authentication_Premium')) {
177 $admin_settings_links[] = array(
178 'url' => esc_url('https://www.simbahosting.co.uk/s3/product/two-factor-authentication/'),
179 'title' => __('Premium version', SIMBA_TFA_TEXT_DOMAIN),
180 );
181 }
182 $simba_tfa_support_url = apply_filters('simba_tfa_support_url', esc_url('https://wordpress.org/support/plugin/two-factor-authentication/'));
183
184 $admin_settings_links[] = array(
185 'url' => $simba_tfa_support_url,
186 'title' => __('Support', SIMBA_TFA_TEXT_DOMAIN),
187 );
188
189 $admin_settings_links[] = array(
190 'url' => esc_url('https://profiles.wordpress.org/davidanderson#content-plugins'),
191 'title' => __('More free plugins', SIMBA_TFA_TEXT_DOMAIN),
192 );
193
194 $admin_settings_links[] = array(
195 'url' => esc_url('http://updraftplus.com'),
196 'title' => 'UpdraftPlus - '.__('WordPress backups', SIMBA_TFA_TEXT_DOMAIN),
197 );
198
199 $admin_settings_links[] = array(
200 'url' => esc_url('https://www.simbahosting.co.uk/s3/shop/'),
201 'title' => __('More premium plugins', SIMBA_TFA_TEXT_DOMAIN),
202 );
203
204 $admin_settings_links[] = array(
205 'url' => esc_url('https://twitter.com/updraftplus'),
206 'title' => __('Twitter', SIMBA_TFA_TEXT_DOMAIN),
207 );
208
209 $admin_settings_links[] = array(
210 'url' => esc_url('https://david.dw-perspective.org.uk'),
211 'title' => __('Lead developer\'s homepage', SIMBA_TFA_TEXT_DOMAIN),
212 );
213
214 $admin_settings_links = apply_filters('simba_tfa_admin_settings_links', $admin_settings_links);
215
216 $this->include_template('admin-settings.php', array(
217 'settings_page_heading' => $this->get_settings_page_heading(),
218 'admin_settings_links' => $admin_settings_links,
219 ));
220 }
221
222 /**
223 * Runs conditionally on the WP action all_admin_notices
224 */
225 public function admin_notice_insufficient_php() {
226 $this->show_admin_warning('<strong>'.__('Higher PHP version required', 'two-factor-authentication').'</strong><br> '.sprintf(__('The Two Factor Authentication plugin requires PHP version %s or higher - your current version is only %s.', 'two-factor-authentication'), self::PHP_REQUIRED, PHP_VERSION), 'error');
227 }
228
229 /**
230 * Runs conditionally on the WP action all_admin_notices
231 */
232 public function admin_notice_missing_mcrypt_and_openssl() {
233 $this->show_admin_warning('<strong>'.__('PHP OpenSSL or mcrypt module required', 'two-factor-authentication').'</strong><br> '.__('The Two Factor Authentication plugin requires either the PHP openssl (preferred) or mcrypt module to be installed. Please ask your web hosting company to install one of them.', 'two-factor-authentication'), 'error');
234 }
235
236 /**
237 * Run upon the WP plugins_loaded action. This method is called even if main loading aborts - so don't put anything else in it (use a separate method).
238 */
239 public function plugins_loaded_load_textdomain() {
240 load_plugin_textdomain(
241 'two-factor-authentication',
242 false,
243 dirname(plugin_basename(__FILE__)).'/languages/'
244 );
245 }
246 }
247 endif;
248
249 $GLOBALS['simba_two_factor_authentication'] = new Simba_Two_Factor_Authentication_Plugin();
250
251 if (file_exists(__DIR__.'/simba-tfa/premium/loader.php') && empty($GLOBALS['simba_two_factor_authentication_premium'])) {
252 if (!class_exists('Simba_Two_Factor_Authentication_Premium')) include_once(__DIR__.'/simba-tfa/premium/loader.php');
253
254 $GLOBALS['simba_two_factor_authentication_premium'] = new Simba_Two_Factor_Authentication_Premium($GLOBALS['simba_two_factor_authentication']);
255
256 if (!class_exists('Updraft_Manager_Updater_1_8')) require_once(plugin_dir_path(__FILE__).'vendor/davidanderson684/simba-plugin-manager-updater/class-udm-updater.php');
257
258 try {
259 new Updraft_Manager_Updater_1_8('https://www.simbahosting.co.uk/s3', 1, 'two-factor-authentication-premium/two-factor-login.php', array('require_login' => false));
260 } catch (Exception $e) {
261 error_log($e->getMessage());
262 }
263 }
264