PluginProbe ʕ •ᴥ•ʔ
UpdraftPlus: WP Backup & Migration Plugin / 1.26.4
UpdraftPlus: WP Backup & Migration Plugin v1.26.4
1.26.4 1.26.3 1.9.19 1.9.25 1.9.26 1.9.30 1.9.31 1.9.32 1.9.4 1.9.40 1.9.41 1.9.42 1.9.43 1.9.44 1.9.45 1.9.46 1.9.5 1.9.50 1.9.51 1.9.60 1.9.62 1.9.63 1.9.64 1.11.12 1.4.8 1.11.15 1.4.9 1.11.17 1.5.16 1.11.18 1.5.20 1.11.2 1.5.21 1.11.20 1.5.22 1.11.23 1.5.5 1.11.24 1.5.6 1.11.25 1.5.7 1.11.26 1.5.8 1.11.27 1.5.9 1.11.28 1.6.1 1.11.3 1.6.17 1.11.4 1.6.2 1.11.5 1.6.46 1.11.8 1.7.0 1.11.9 1.7.1 1.12.0 1.7.18 1.12.1 1.7.20 1.12.12 1.7.3 1.12.13 1.7.34 1.12.15 1.7.35 1.12.17 1.7.39 1.12.2 1.7.40 1.12.20 1.7.41 1.12.23 1.8.1 1.12.24 1.8.11 1.12.25 1.8.12 1.12.28 1.8.13 1.12.29 1.8.2 1.12.30 1.8.5 1.12.32 1.8.8 1.12.34 1.9.0 1.12.35 1.9.13 1.12.37 1.9.15 1.12.39 1.9.17 1.12.4 1.12.40 1.12.6 1.13.1 1.13.11 1.13.12 1.13.15 1.13.16 1.13.2 1.13.3 1.13.4 1.13.5 1.13.6 1.13.7 1.13.8 1.13.9 1.14.10 1.14.11 1.14.12 1.14.13 1.14.2 1.14.3 1.14.4 1.14.5 1.14.7 1.14.9 1.15.0 1.15.2 1.15.3 1.15.5 1.15.6 1.15.7 1.16.0 1.16.10 1.16.11 1.16.12 1.16.13 1.16.14 1.16.15 1.16.16 1.16.17 1.16.20 1.16.21 1.16.22 1.16.23 1.16.24 1.16.25 1.16.26 1.16.28 1.16.29 1.16.32 1.16.34 1.16.35 1.16.36 1.16.37 1.16.4 1.16.40 1.16.41 1.16.42 1.16.43 1.16.44 1.16.45 1.16.46 1.16.47 1.16.48 1.16.49 1.16.5 1.16.50 1.16.51 1.16.53 1.16.55 1.16.56 1.16.59 1.16.6 1.16.60 1.16.61 1.16.62 1.16.63 1.16.64 1.16.65 1.16.66 1.16.67 1.16.68 1.16.69 1.16.7 1.16.8 1.16.9 1.2.0 1.2.1 1.2.10 1.2.11 1.2.12 1.2.14 1.2.15 1.2.16 1.2.17 1.2.19 1.2.2 1.2.20 1.2.24 1.2.25 1.2.26 1.2.27 1.2.28 1.2.29 1.2.3 1.2.30 1.2.31 1.2.33 1.2.35 1.2.36 1.2.38 1.2.39 1.2.4 1.2.40 1.2.41 1.2.42 1.2.43 1.2.44 1.2.45 1.2.46 1.2.5 1.2.7 1.2.8 1.2.9 1.22.1 1.22.10 1.22.11 1.22.12 1.22.14 1.22.15 1.22.16 1.22.17 1.22.18 1.22.19 1.22.20 1.22.21 1.22.22 1.22.23 1.22.24 1.22.3 1.22.4 1.22.5 1.22.6 1.22.7 1.22.8 1.22.9 1.23.1 1.23.10 1.23.11 1.23.12 1.23.13 1.23.15 1.23.16 1.23.2 1.23.3 1.23.4 1.23.5 1.23.6 1.23.7 1.23.8 1.23.9 1.24.1 1.24.10 1.24.11 1.24.12 1.24.2 trunk 1.24.3 0.7.4 1.24.4 0.7.7 1.24.5 0.8.28 1.24.6 0.8.29 1.24.7 0.8.30 1.24.8 0.8.31 1.24.9 0.8.32 1.25.1 0.8.33 1.25.2 0.8.36 1.25.3 0.8.37 1.25.5 0.8.50 1.25.6 0.8.51 1.25.7 0.9.1 1.25.8 0.9.10 1.25.9 0.9.11 1.26.1 0.9.12 1.26.2 0.9.2 1.3.10 0.9.20 1.3.12 0.9.21 1.3.14 0.9.22 1.3.15 1.0.10 1.3.17 1.0.11 1.3.18 1.0.12 1.3.19 1.0.15 1.3.2 1.0.16 1.3.20 1.0.18 1.3.22 1.0.20 1.3.23 1.0.3 1.3.24 1.0.4 1.3.25 1.0.5 1.3.3 1.0.6 1.3.4 1.0.7 1.3.6 1.0.8 1.3.7 1.0.9 1.3.8 1.1.0 1.3.9 1.1.10 1.4.0 1.1.11 1.4.10 1.1.12 1.4.11 1.1.13 1.4.12 1.1.14 1.4.13 1.1.15 1.4.14 1.1.16 1.4.15 1.1.17 1.4.2 1.1.2 1.4.27 1.1.3 1.4.28 1.1.5 1.4.29 1.1.6 1.4.30 1.1.8 1.4.4 1.1.9 1.4.48 1.10.1 1.4.5 1.10.3 1.4.6 1.11.1 1.4.7
updraftplus / includes / updraftclone / temporary-clone-user-notice.php
updraftplus / includes / updraftclone Last commit date
temporary-clone-auto-login.php 1 month ago temporary-clone-dash-notice.php 7 months ago temporary-clone-restore.php 4 weeks ago temporary-clone-status.php 7 months ago temporary-clone-user-notice.php 1 year ago
temporary-clone-user-notice.php
116 lines
1 <?php
2
3 if (!defined('ABSPATH')) die('No direct access allowed');
4
5 class UpdraftPlus_Temporary_Clone_User_Notice {
6
7 /**
8 * Constructor for the class.
9 */
10 public function __construct() {
11 add_filter('wp_authenticate_user', array($this, 'wp_authenticate_user'));
12 add_action('wp_ajax_updraftplus_user_notice_ajax', array($this, 'updraftplus_user_notice_ajax'));
13 add_action('all_admin_notices', array($this, 'all_admin_notices_users_notice'));
14 }
15
16 /**
17 * This function will add a dashboard notice to the users page, that gives the user the option to enable admin only logins to the clone.
18 *
19 * @return void
20 */
21 public function all_admin_notices_users_notice() {
22 global $pagenow;
23
24 if ('users.php' != $pagenow) return;
25
26 $admin_login = get_site_option('updraftplus_clone_admin_only_login');
27
28 ?>
29 <div id="updraftplus_temporary_clone-usernotice" class="updated">
30 <h1><?php esc_html_e('UpdraftPlus temporary clone user login settings:', 'updraftplus'); ?></h1>
31 <p><?php esc_html_e('You can forbid non-admins logins to this cloned site by checking the checkbox below', 'updraftplus'); ?></p>
32 <input type="checkbox" id="updraftplus_clone_admin_only" name="updraftplus_clone_admin_only" value="1" <?php if ($admin_login) echo 'checked="checked"'; ?> onclick="jQuery.post('<?php echo esc_js(admin_url('admin-ajax.php')); ?>', {action: 'updraftplus_user_notice_ajax', subaction: 'admin_only_login', nonce: '<?php echo esc_js(wp_create_nonce('updraftplus_admin_only_login'));?>', admin_only_login: jQuery(this).is(':checked') });"> <label for="updraftplus_clone_admin_only"><?php esc_html_e('Allow only administrators to log in', 'updraftplus'); ?></label><br>
33 </div>
34 <?php
35 }
36
37 /**
38 * This function will check if the user trying to login is an admin and if non admin logins have been disabled. If non admin logins are disabled and the user logging in is not a admin then it will stop the login and return an error.
39 * Runs upon the WP filter wp_authenticate_user
40 *
41 * @param object $user - the user login object
42 *
43 * @return object|WP_Error - returns the logged in user or a WP_Error stopping non admin logins
44 */
45 public function wp_authenticate_user($user) {
46 // The WP_User object does not exist in WP 3.2, so we don't check for that
47 if (is_wp_error($user) || !is_object($user) || empty($user->ID)) return $user;
48
49 $admin_login = get_site_option('updraftplus_clone_admin_only_login');
50 $user_is_admin = user_can($user->ID, 'manage_options');
51
52 if (!$user_is_admin && $admin_login) {
53 return new WP_Error('user_login_disabled', '<strong>ERROR</strong>: This user account is not allowed to login.');
54 }
55
56 return $user;
57 }
58
59 /**
60 * This function will perform security checks before allowing the ajax calls for the UpdraftClone VPS mu-plugin be processed.
61 *
62 * @return void
63 */
64 public function updraftplus_user_notice_ajax() {
65
66 if (is_user_logged_in() && current_user_can('manage_options')) {
67 $this->process_user_notice_ajax();
68 }
69 }
70
71 /**
72 * This function will handle the ajax calls for the UpdraftClone user notice mu-plugin.
73 *
74 * @return void
75 */
76 public function process_user_notice_ajax() {
77 $return = array('code' => 'fail', 'data' => '');
78
79 if (!isset($_POST['subaction'])) {
80 $return['code'] = 'error';
81 $return['data'] = 'Missing subaction';
82 echo json_encode($return);
83 die();
84 }
85
86 if ('admin_only_login' == $_POST['subaction']) {
87 check_ajax_referer('updraftplus_admin_only_login', 'nonce');
88
89 if (!isset($_POST['admin_only_login'])) {
90 $return['code'] = 'error';
91 $return['data'] = 'Missing parameter';
92 echo json_encode($return);
93 die();
94 }
95
96 $admin_only = ('true' === $_POST['admin_only_login']);
97
98 update_site_option('updraftplus_clone_admin_only_login', $admin_only);
99
100 $return['code'] = 'success';
101 $return['data'] = 'Option updated';
102 echo json_encode($return);
103 die();
104 } else {
105 $return['code'] = 'error';
106 $return['data'] = 'Unknown action';
107 echo json_encode($return);
108 die();
109 }
110 }
111 }
112
113 if (defined('UPDRAFTPLUS_THIS_IS_CLONE')) {
114 new UpdraftPlus_Temporary_Clone_User_Notice();
115 }
116