Version Description
- Fixed couple bugs with secure login widget rendering
- Fixed the bug with AAM UI refresh triggered by aam extensions
- Fixed the bug with send remote request and array of cookies
- Added ability to hide login navigations links in the secure login widget with feature.secureLogin.ui.showNav configPress option
- Added new custom capability "manage_same_user_level"
Download this release
Release Info
Developer | vasyl_m |
Plugin | Advanced Access Manager |
Version | 5.3.3 |
Comparing to | |
See all releases |
Code changes from version 5.3.2 to 5.3.3
- Application/Backend/Filter.php +27 -4
- Application/Backend/Manager.php +17 -10
- Application/Backend/Widget/Login.php +1 -1
- Application/Backend/phtml/widget/login-frontend.phtml +14 -12
- Application/Core/API.php +17 -9
- Application/Core/Config.php +1 -5
- Application/Extension/List.php +4 -4
- Application/Extension/Repository.php +1 -1
- Application/Frontend/phtml/login.phtml +12 -10
- aam.php +1 -1
- media/js/aam.js +1 -0
- readme.txt +8 -1
Application/Backend/Filter.php
CHANGED
@@ -311,6 +311,8 @@ class AAM_Backend_Filter {
|
|
311 |
$roleLevel = AAM_Core_API::maxLevel($role['capabilities']);
|
312 |
if ($userLevel < $roleLevel) {
|
313 |
unset($roles[$id]);
|
|
|
|
|
314 |
}
|
315 |
}
|
316 |
}
|
@@ -318,6 +320,20 @@ class AAM_Backend_Filter {
|
|
318 |
return $roles;
|
319 |
}
|
320 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
321 |
/**
|
322 |
* Filter user query
|
323 |
*
|
@@ -336,7 +352,10 @@ class AAM_Backend_Filter {
|
|
336 |
$roles = AAM_Core_API::getRoles();
|
337 |
|
338 |
foreach($roles->role_objects as $id => $role) {
|
339 |
-
|
|
|
|
|
|
|
340 |
$exclude[] = $id;
|
341 |
}
|
342 |
}
|
@@ -358,9 +377,13 @@ class AAM_Backend_Filter {
|
|
358 |
$roles = AAM_Core_API::getRoles();
|
359 |
|
360 |
foreach($roles->role_objects as $id => $role) {
|
361 |
-
|
362 |
-
|
363 |
-
|
|
|
|
|
|
|
|
|
364 |
}
|
365 |
}
|
366 |
|
311 |
$roleLevel = AAM_Core_API::maxLevel($role['capabilities']);
|
312 |
if ($userLevel < $roleLevel) {
|
313 |
unset($roles[$id]);
|
314 |
+
} elseif ($userLevel == $roleLevel && $this->filterSameLevel()) {
|
315 |
+
unset($roles[$id]);
|
316 |
}
|
317 |
}
|
318 |
}
|
320 |
return $roles;
|
321 |
}
|
322 |
|
323 |
+
/**
|
324 |
+
*
|
325 |
+
* @return type
|
326 |
+
*/
|
327 |
+
protected function filterSameLevel() {
|
328 |
+
$response = false;
|
329 |
+
|
330 |
+
if (AAM_Core_API::capabilityExists('manage_same_user_level')) {
|
331 |
+
$response = !AAM::getUser()->hasCapability('manage_same_user_level');
|
332 |
+
}
|
333 |
+
|
334 |
+
return $response;
|
335 |
+
}
|
336 |
+
|
337 |
/**
|
338 |
* Filter user query
|
339 |
*
|
352 |
$roles = AAM_Core_API::getRoles();
|
353 |
|
354 |
foreach($roles->role_objects as $id => $role) {
|
355 |
+
$roleMax = AAM_Core_API::maxLevel($role->capabilities);
|
356 |
+
if ($roleMax > $max ) {
|
357 |
+
$exclude[] = $id;
|
358 |
+
} elseif ($roleMax == $max && $this->filterSameLevel()) {
|
359 |
$exclude[] = $id;
|
360 |
}
|
361 |
}
|
377 |
$roles = AAM_Core_API::getRoles();
|
378 |
|
379 |
foreach($roles->role_objects as $id => $role) {
|
380 |
+
$roleMax = AAM_Core_API::maxLevel($role->capabilities);
|
381 |
+
if (isset($views[$id])) {
|
382 |
+
if ($roleMax > $max) {
|
383 |
+
unset($views[$id]);
|
384 |
+
} elseif ($roleMax == $max && $this->filterSameLevel()) {
|
385 |
+
unset($views[$id]);
|
386 |
+
}
|
387 |
}
|
388 |
}
|
389 |
|
Application/Backend/Manager.php
CHANGED
@@ -23,7 +23,7 @@ class AAM_Backend_Manager {
|
|
23 |
* @access private
|
24 |
*/
|
25 |
private static $_instance = null;
|
26 |
-
|
27 |
/**
|
28 |
* Initialize the object
|
29 |
*
|
@@ -130,14 +130,14 @@ class AAM_Backend_Manager {
|
|
130 |
$htpasswd = AAM_Core_Config::get('htpasswd');
|
131 |
if (!empty($htpasswd)) {
|
132 |
AAM_Core_Console::add(
|
133 |
-
'On ConfigPress tab, change [htpasswd]
|
134 |
);
|
135 |
}
|
136 |
|
137 |
$export = AAM_Core_Config::get('export', null);
|
138 |
if (!empty($export)) {
|
139 |
AAM_Core_Console::add(
|
140 |
-
'On ConfigPress tab, change [export]
|
141 |
);
|
142 |
}
|
143 |
|
@@ -151,14 +151,21 @@ class AAM_Backend_Manager {
|
|
151 |
$dir = AAM_Core_Config::get('extention.directory', null);
|
152 |
if (!empty($dir)) {
|
153 |
AAM_Core_Console::add(
|
154 |
-
'On ConfigPress tab, change [extention
|
155 |
);
|
156 |
}
|
157 |
|
158 |
-
$tmpl = AAM_Core_Config::get('login.shortcode
|
159 |
if (!empty($tmpl)) {
|
160 |
AAM_Core_Console::add(
|
161 |
-
'On ConfigPress tab, change [login.shortcode
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
162 |
);
|
163 |
}
|
164 |
}
|
@@ -723,7 +730,7 @@ class AAM_Backend_Manager {
|
|
723 |
/**
|
724 |
* Bootstrap the manager
|
725 |
*
|
726 |
-
* @return
|
727 |
*
|
728 |
* @access public
|
729 |
*/
|
@@ -731,6 +738,8 @@ class AAM_Backend_Manager {
|
|
731 |
if (is_null(self::$_instance)) {
|
732 |
self::$_instance = new self;
|
733 |
}
|
|
|
|
|
734 |
}
|
735 |
|
736 |
/**
|
@@ -741,9 +750,7 @@ class AAM_Backend_Manager {
|
|
741 |
* @access public
|
742 |
*/
|
743 |
public static function getInstance() {
|
744 |
-
self::bootstrap();
|
745 |
-
|
746 |
-
return self::$_instance;
|
747 |
}
|
748 |
|
749 |
}
|
23 |
* @access private
|
24 |
*/
|
25 |
private static $_instance = null;
|
26 |
+
|
27 |
/**
|
28 |
* Initialize the object
|
29 |
*
|
130 |
$htpasswd = AAM_Core_Config::get('htpasswd');
|
131 |
if (!empty($htpasswd)) {
|
132 |
AAM_Core_Console::add(
|
133 |
+
'On ConfigPress tab, change all options that start with [htpasswd...] to [feature.metabox.htpasswd...]', 'b', 'b'
|
134 |
);
|
135 |
}
|
136 |
|
137 |
$export = AAM_Core_Config::get('export', null);
|
138 |
if (!empty($export)) {
|
139 |
AAM_Core_Console::add(
|
140 |
+
'On ConfigPress tab, change all options that start with [export...] to [feature.export...]', 'b', 'b'
|
141 |
);
|
142 |
}
|
143 |
|
151 |
$dir = AAM_Core_Config::get('extention.directory', null);
|
152 |
if (!empty($dir)) {
|
153 |
AAM_Core_Console::add(
|
154 |
+
'On ConfigPress tab, change all options that start with [extention...] to [core.extention...]', 'b', 'b'
|
155 |
);
|
156 |
}
|
157 |
|
158 |
+
$tmpl = AAM_Core_Config::get('login.shortcode', null);
|
159 |
if (!empty($tmpl)) {
|
160 |
AAM_Core_Console::add(
|
161 |
+
'On ConfigPress tab, change all options that start with [login.shortcode....] option to [feature.secureLogin.shortcode...]', 'b', 'b'
|
162 |
+
);
|
163 |
+
}
|
164 |
+
|
165 |
+
$login = AAM_Core_Config::get('login.widget', null);
|
166 |
+
if (!empty($login)) {
|
167 |
+
AAM_Core_Console::add(
|
168 |
+
'On ConfigPress tab, change all options that start with [login.widget...] to [feature.secureLogin.widget...]', 'b', 'b'
|
169 |
);
|
170 |
}
|
171 |
}
|
730 |
/**
|
731 |
* Bootstrap the manager
|
732 |
*
|
733 |
+
* @return AAM_Backend_View
|
734 |
*
|
735 |
* @access public
|
736 |
*/
|
738 |
if (is_null(self::$_instance)) {
|
739 |
self::$_instance = new self;
|
740 |
}
|
741 |
+
|
742 |
+
return self::$_instance;
|
743 |
}
|
744 |
|
745 |
/**
|
750 |
* @access public
|
751 |
*/
|
752 |
public static function getInstance() {
|
753 |
+
return self::bootstrap();
|
|
|
|
|
754 |
}
|
755 |
|
756 |
}
|
Application/Backend/Widget/Login.php
CHANGED
@@ -32,7 +32,7 @@ class AAM_Backend_Widget_Login extends WP_Widget {
|
|
32 |
|
33 |
require(
|
34 |
AAM_Core_Config::get(
|
35 |
-
'
|
36 |
realpath(dirname(__FILE__) . '/../phtml/widget/login-frontend.phtml')
|
37 |
)
|
38 |
);
|
32 |
|
33 |
require(
|
34 |
AAM_Core_Config::get(
|
35 |
+
'feature.secureLogin.widget.template',
|
36 |
realpath(dirname(__FILE__) . '/../phtml/widget/login-frontend.phtml')
|
37 |
)
|
38 |
);
|
Application/Backend/phtml/widget/login-frontend.phtml
CHANGED
@@ -33,26 +33,28 @@
|
|
33 |
|
34 |
<p class="forgetmenot">
|
35 |
<label for="rememberme">
|
36 |
-
<input id="<?php echo $this->get_field_id('rememberme'); ?>" value="forever" type="checkbox"/> <?php __('Remember Me', AAM_KEY); ?>
|
37 |
</label>
|
38 |
</p>
|
39 |
|
40 |
<p class="submit">
|
41 |
-
<input class="button button-primary button-large aam-login-submit" data-prefix="<?php echo $this->get_field_id(''); ?>" value="<?php __('Log In', AAM_KEY); ?>" type="submit" />
|
42 |
<input id="<?php echo $this->get_field_id('redirect'); ?>" value="<?php echo $this->args['redirect']; ?>" type="hidden" />
|
43 |
</p>
|
44 |
</div>
|
45 |
|
46 |
-
|
47 |
-
<?php
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
|
|
|
|
56 |
<?php } else { ?>
|
57 |
<div style="display: table; width: 100%;">
|
58 |
<div style="display:table-cell; width: 30%; text-align: center; vertical-align: middle;">
|
33 |
|
34 |
<p class="forgetmenot">
|
35 |
<label for="rememberme">
|
36 |
+
<input id="<?php echo $this->get_field_id('rememberme'); ?>" value="forever" type="checkbox"/> <?php echo __('Remember Me', AAM_KEY); ?>
|
37 |
</label>
|
38 |
</p>
|
39 |
|
40 |
<p class="submit">
|
41 |
+
<input class="button button-primary button-large aam-login-submit" data-prefix="<?php echo $this->get_field_id(''); ?>" value="<?php echo __('Log In', AAM_KEY); ?>" type="submit" />
|
42 |
<input id="<?php echo $this->get_field_id('redirect'); ?>" value="<?php echo $this->args['redirect']; ?>" type="hidden" />
|
43 |
</p>
|
44 |
</div>
|
45 |
|
46 |
+
<?php if (AAM::api()->getConfig('feature.secureLogin.ui.showNav', true)) { ?>
|
47 |
+
<p id="<?php echo $this->get_field_id('nav'); ?>">
|
48 |
+
<?php
|
49 |
+
if ( get_option( 'users_can_register' ) ) {
|
50 |
+
$registration_url = sprintf('<a href="%s">%s</a>', esc_url(wp_registration_url()), __('Register'));
|
51 |
+
echo apply_filters( 'register', $registration_url );
|
52 |
+
echo esc_html(apply_filters('login_link_separator', ' | '));
|
53 |
+
}
|
54 |
+
?>
|
55 |
+
<a href="<?php echo esc_url( wp_lostpassword_url() ); ?>"><?php echo __('Lost your password?', AAM_KEY); ?></a>
|
56 |
+
</p>
|
57 |
+
<?php } ?>
|
58 |
<?php } else { ?>
|
59 |
<div style="display: table; width: 100%;">
|
60 |
<div style="display:table-cell; width: 30%; text-align: center; vertical-align: middle;">
|
Application/Core/API.php
CHANGED
@@ -10,6 +10,8 @@
|
|
10 |
/**
|
11 |
* AAM core API
|
12 |
*
|
|
|
|
|
13 |
* @package AAM
|
14 |
* @author Vasyl Martyniuk <vasyl@vasyltech.com>
|
15 |
*/
|
@@ -139,7 +141,7 @@ final class AAM_Core_API {
|
|
139 |
if (is_array($cookies) && $send_cookies) {
|
140 |
foreach ($cookies as $key => $value) {
|
141 |
//SKIP PHPSESSID - some servers don't like it for security reason
|
142 |
-
if ($key !== session_name()) {
|
143 |
$requestCookies[] = new WP_Http_Cookie(array(
|
144 |
'name' => $key, 'value' => $value
|
145 |
));
|
@@ -408,18 +410,24 @@ final class AAM_Core_API {
|
|
408 |
$res = $wp_query->queried_object;
|
409 |
} elseif (!empty($wp_query->post)) {
|
410 |
$res = $wp_query->post;
|
411 |
-
} elseif (!empty($wp_query->query['name']) && !empty($wp_query->posts)) {
|
412 |
-
//Important! Cover the scenario of NOT LIST but ALLOW READ
|
413 |
-
foreach($wp_query->posts as $post) {
|
414 |
-
if ($post->post_name == $wp_query->query['name']) {
|
415 |
-
$res = $post;
|
416 |
-
break;
|
417 |
-
}
|
418 |
-
}
|
419 |
} elseif (!empty($wp_query->query_vars['p'])) {
|
420 |
$res = get_post($wp_query->query_vars['p']);
|
421 |
} elseif (!empty($wp_query->query_vars['page_id'])) {
|
422 |
$res = get_post($wp_query->query_vars['page_id']);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
423 |
}
|
424 |
|
425 |
$user = AAM::getUser();
|
10 |
/**
|
11 |
* AAM core API
|
12 |
*
|
13 |
+
* NOTE! THIS IS LEGACY CLASS THAT SLOWLY WILL DIE! DO NOT RELY ON ITS METHODS
|
14 |
+
*
|
15 |
* @package AAM
|
16 |
* @author Vasyl Martyniuk <vasyl@vasyltech.com>
|
17 |
*/
|
141 |
if (is_array($cookies) && $send_cookies) {
|
142 |
foreach ($cookies as $key => $value) {
|
143 |
//SKIP PHPSESSID - some servers don't like it for security reason
|
144 |
+
if ($key !== session_name() && is_scalar($value)) {
|
145 |
$requestCookies[] = new WP_Http_Cookie(array(
|
146 |
'name' => $key, 'value' => $value
|
147 |
));
|
410 |
$res = $wp_query->queried_object;
|
411 |
} elseif (!empty($wp_query->post)) {
|
412 |
$res = $wp_query->post;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
413 |
} elseif (!empty($wp_query->query_vars['p'])) {
|
414 |
$res = get_post($wp_query->query_vars['p']);
|
415 |
} elseif (!empty($wp_query->query_vars['page_id'])) {
|
416 |
$res = get_post($wp_query->query_vars['page_id']);
|
417 |
+
} elseif (!empty($wp_query->query['name'])) {
|
418 |
+
//Important! Cover the scenario of NOT LIST but ALLOW READ
|
419 |
+
if (!empty($wp_query->posts)) {
|
420 |
+
foreach($wp_query->posts as $post) {
|
421 |
+
if ($post->post_name == $wp_query->query['name']) {
|
422 |
+
$res = $post;
|
423 |
+
break;
|
424 |
+
}
|
425 |
+
}
|
426 |
+
} elseif (!empty($wp_query->query['post_type'])) {
|
427 |
+
$res = get_page_by_path(
|
428 |
+
$wp_query->query['name'], OBJECT, $wp_query->query['post_type']
|
429 |
+
);
|
430 |
+
}
|
431 |
}
|
432 |
|
433 |
$user = AAM::getUser();
|
Application/Core/Config.php
CHANGED
@@ -81,11 +81,7 @@ class AAM_Core_Config {
|
|
81 |
* @static
|
82 |
*/
|
83 |
protected static function normalize($setting) {
|
84 |
-
return str_replace(
|
85 |
-
array('{ABSPATH}'),
|
86 |
-
array(ABSPATH),
|
87 |
-
$setting
|
88 |
-
);
|
89 |
}
|
90 |
|
91 |
/**
|
81 |
* @static
|
82 |
*/
|
83 |
protected static function normalize($setting) {
|
84 |
+
return str_replace(array('{ABSPATH}'), array(ABSPATH), $setting);
|
|
|
|
|
|
|
|
|
85 |
}
|
86 |
|
87 |
/**
|
Application/Extension/List.php
CHANGED
@@ -22,7 +22,7 @@ class AAM_Extension_List {
|
|
22 |
'description' => 'Get the complete list of all available premium extensions in one package. Any new premium extensions in the future will be available for no additional cost.',
|
23 |
'url' => 'https://aamplugin.com/complete-package',
|
24 |
'version' => (defined('AAM_COMPLETE_PACKAGE') ? constant('AAM_COMPLETE_PACKAGE') : null),
|
25 |
-
'latest' => '3.7.
|
26 |
),
|
27 |
'AAM_PLUS_PACKAGE' => array(
|
28 |
'title' => 'Plus Package',
|
@@ -31,7 +31,7 @@ class AAM_Extension_List {
|
|
31 |
'description' => 'The best selling extension with the most advanced content management features for the WordPress CMS. Manage granular access to any post, page, custom post type, category, custom hierarchical taxonomy or define the default access to all your content for all users, roles and visitors.',
|
32 |
'url' => 'https://aamplugin.com/extension/plus-package',
|
33 |
'version' => (defined('AAM_PLUS_PACKAGE') ? constant('AAM_PLUS_PACKAGE') : null),
|
34 |
-
'latest' => '3.7'
|
35 |
),
|
36 |
'AAM_IP_CHECK' => array(
|
37 |
'title' => 'IP Check',
|
@@ -78,7 +78,7 @@ class AAM_Extension_List {
|
|
78 |
'license' => 'AAMMULTISITE',
|
79 |
'description' => 'Convenient way to navigate between different sites in the Network Admin Panel. This is the open source solution and you can find it on the <a href="https://github.com/aamplugin/multisite-extension" target="_blank">Github here</a>.',
|
80 |
'version' => (defined('AAM_MULTISITE') ? constant('AAM_MULTISITE') : null),
|
81 |
-
'latest' => '2.5.
|
82 |
),
|
83 |
'AAM_USER_ACTIVITY' => array(
|
84 |
'title' => 'User Activities',
|
@@ -97,7 +97,7 @@ class AAM_Extension_List {
|
|
97 |
'license' => 'AAMSOCIALLOGIN',
|
98 |
'description' => 'Login to your website with social networks like Facebook, Twitter, Instagram etc. <a href="https://aamplugin.com/help/how-does-aam-social-login-works" target="_blank">Read more.</a> This is the open source solution and you can find it on the <a href="https://github.com/aamplugin/social-login-extension" target="_blank">Github here</a>.',
|
99 |
'version' => (defined('AAM_SOCIAL_LOGIN') ? constant('AAM_SOCIAL_LOGIN') : null),
|
100 |
-
'latest' => '0.1'
|
101 |
),
|
102 |
);
|
103 |
}
|
22 |
'description' => 'Get the complete list of all available premium extensions in one package. Any new premium extensions in the future will be available for no additional cost.',
|
23 |
'url' => 'https://aamplugin.com/complete-package',
|
24 |
'version' => (defined('AAM_COMPLETE_PACKAGE') ? constant('AAM_COMPLETE_PACKAGE') : null),
|
25 |
+
'latest' => '3.7.5'
|
26 |
),
|
27 |
'AAM_PLUS_PACKAGE' => array(
|
28 |
'title' => 'Plus Package',
|
31 |
'description' => 'The best selling extension with the most advanced content management features for the WordPress CMS. Manage granular access to any post, page, custom post type, category, custom hierarchical taxonomy or define the default access to all your content for all users, roles and visitors.',
|
32 |
'url' => 'https://aamplugin.com/extension/plus-package',
|
33 |
'version' => (defined('AAM_PLUS_PACKAGE') ? constant('AAM_PLUS_PACKAGE') : null),
|
34 |
+
'latest' => '3.7.2'
|
35 |
),
|
36 |
'AAM_IP_CHECK' => array(
|
37 |
'title' => 'IP Check',
|
78 |
'license' => 'AAMMULTISITE',
|
79 |
'description' => 'Convenient way to navigate between different sites in the Network Admin Panel. This is the open source solution and you can find it on the <a href="https://github.com/aamplugin/multisite-extension" target="_blank">Github here</a>.',
|
80 |
'version' => (defined('AAM_MULTISITE') ? constant('AAM_MULTISITE') : null),
|
81 |
+
'latest' => '2.5.4'
|
82 |
),
|
83 |
'AAM_USER_ACTIVITY' => array(
|
84 |
'title' => 'User Activities',
|
97 |
'license' => 'AAMSOCIALLOGIN',
|
98 |
'description' => 'Login to your website with social networks like Facebook, Twitter, Instagram etc. <a href="https://aamplugin.com/help/how-does-aam-social-login-works" target="_blank">Read more.</a> This is the open source solution and you can find it on the <a href="https://github.com/aamplugin/social-login-extension" target="_blank">Github here</a>.',
|
99 |
'version' => (defined('AAM_SOCIAL_LOGIN') ? constant('AAM_SOCIAL_LOGIN') : null),
|
100 |
+
'latest' => '0.2.1'
|
101 |
),
|
102 |
);
|
103 |
}
|
Application/Extension/Repository.php
CHANGED
@@ -123,7 +123,7 @@ class AAM_Extension_Repository {
|
|
123 |
if (file_exists($config)) {
|
124 |
$conf = require $config;
|
125 |
$load = empty($cache[$conf['id']]['status']) || ($cache[$conf['id']]['status'] != self::STATUS_INACTIVE);
|
126 |
-
} else { // TODO - Remove May
|
127 |
AAM_Core_Console::add(AAM_Backend_View_Helper::preparePhrase(
|
128 |
sprintf(
|
129 |
__('The [%s] file is missing. Update extension to the latest version. %sRead more.%s', AAM_KEY),
|
123 |
if (file_exists($config)) {
|
124 |
$conf = require $config;
|
125 |
$load = empty($cache[$conf['id']]['status']) || ($cache[$conf['id']]['status'] != self::STATUS_INACTIVE);
|
126 |
+
} else { // TODO - Remove May 2019
|
127 |
AAM_Core_Console::add(AAM_Backend_View_Helper::preparePhrase(
|
128 |
sprintf(
|
129 |
__('The [%s] file is missing. Update extension to the latest version. %sRead more.%s', AAM_KEY),
|
Application/Frontend/phtml/login.phtml
CHANGED
@@ -29,16 +29,18 @@
|
|
29 |
</p>
|
30 |
</div>
|
31 |
|
32 |
-
|
33 |
-
<?php
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
|
|
|
|
42 |
<?php } else { ?>
|
43 |
<div style="text-align: center;">
|
44 |
<div style="padding: 30px;">
|
29 |
</p>
|
30 |
</div>
|
31 |
|
32 |
+
<?php if (AAM::api()->getConfig('feature.secureLogin.ui.showNav', true)) { ?>
|
33 |
+
<p id="<?php echo $this->args['id'] . '-nav'; ?>">
|
34 |
+
<?php
|
35 |
+
if (get_option('users_can_register')) {
|
36 |
+
$registration_url = sprintf('<a href="%s">%s</a>', esc_url(wp_registration_url()), __('Register'));
|
37 |
+
echo apply_filters( 'register', $registration_url );
|
38 |
+
echo esc_html(apply_filters('login_link_separator', ' | '));
|
39 |
+
}
|
40 |
+
?>
|
41 |
+
<a href="<?php echo esc_url( wp_lostpassword_url() ); ?>"><?php echo __('Lost your password?', AAM_KEY); ?></a>
|
42 |
+
</p>
|
43 |
+
<?php } ?>
|
44 |
<?php } else { ?>
|
45 |
<div style="text-align: center;">
|
46 |
<div style="padding: 30px;">
|
aam.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
/**
|
4 |
Plugin Name: Advanced Access Manager
|
5 |
Description: All you need to manage access to your WordPress website
|
6 |
-
Version: 5.3.
|
7 |
Author: Vasyl Martyniuk <vasyl@vasyltech.com>
|
8 |
Author URI: https://vasyltech.com
|
9 |
|
3 |
/**
|
4 |
Plugin Name: Advanced Access Manager
|
5 |
Description: All you need to manage access to your WordPress website
|
6 |
+
Version: 5.3.3
|
7 |
Author: Vasyl Martyniuk <vasyl@vasyltech.com>
|
8 |
Author URI: https://vasyltech.com
|
9 |
|
media/js/aam.js
CHANGED
@@ -468,6 +468,7 @@
|
|
468 |
//in case interface needed to be reloaded
|
469 |
aam.addHook('refresh', function () {
|
470 |
$('#role-list').DataTable().ajax.url(aamLocal.ajaxurl).load();
|
|
|
471 |
});
|
472 |
|
473 |
})(jQuery);
|
468 |
//in case interface needed to be reloaded
|
469 |
aam.addHook('refresh', function () {
|
470 |
$('#role-list').DataTable().ajax.url(aamLocal.ajaxurl).load();
|
471 |
+
aam.fetchContent('main');
|
472 |
});
|
473 |
|
474 |
})(jQuery);
|
readme.txt
CHANGED
@@ -3,7 +3,7 @@ Contributors: vasyltech
|
|
3 |
Tags: access, role, user, capability, page access, post access, content access, comments, security, login redirect, membership, backend lockdown, wp-admin, 404, rest api, xml rpc
|
4 |
Requires at least: 4.0
|
5 |
Tested up to: 4.9.6
|
6 |
-
Stable tag: 5.3.
|
7 |
|
8 |
The most powerful access management plugin for WordPress websites.
|
9 |
|
@@ -66,6 +66,13 @@ https://www.youtube.com/watch?v=yiOhjaacNJc
|
|
66 |
|
67 |
== Changelog ==
|
68 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
69 |
= 5.3.2 =
|
70 |
* Fixed the bug that triggers PHP warnings when blocked user is trying to login
|
71 |
* Fixed the bug with get current post method in the core API
|
3 |
Tags: access, role, user, capability, page access, post access, content access, comments, security, login redirect, membership, backend lockdown, wp-admin, 404, rest api, xml rpc
|
4 |
Requires at least: 4.0
|
5 |
Tested up to: 4.9.6
|
6 |
+
Stable tag: 5.3.3
|
7 |
|
8 |
The most powerful access management plugin for WordPress websites.
|
9 |
|
66 |
|
67 |
== Changelog ==
|
68 |
|
69 |
+
= 5.3.3 =
|
70 |
+
* Fixed couple bugs with secure login widget rendering
|
71 |
+
* Fixed the bug with AAM UI refresh triggered by aam extensions
|
72 |
+
* Fixed the bug with send remote request and array of cookies
|
73 |
+
* Added ability to hide login navigations links in the secure login widget with feature.secureLogin.ui.showNav configPress option
|
74 |
+
* Added new custom capability "manage_same_user_level"
|
75 |
+
|
76 |
= 5.3.2 =
|
77 |
* Fixed the bug that triggers PHP warnings when blocked user is trying to login
|
78 |
* Fixed the bug with get current post method in the core API
|