PluginProbe ʕ •ᴥ•ʔ
Advanced Access Manager – Access Governance for WordPress / 5.8.2
Advanced Access Manager – Access Governance for WordPress v5.8.2
6.8.4 6.8.5 6.9.0 6.9.1 6.9.10 6.9.11 6.9.12 6.9.13 6.9.14 6.9.15 6.9.16 6.9.17 6.9.18 6.9.19 6.9.2 6.9.20 6.9.21 6.9.22 6.9.23 6.9.24 6.9.25 6.9.26 6.9.27 6.9.28 6.9.29 6.9.3 6.9.30 6.9.31 6.9.32 6.9.33 6.9.34 6.9.35 6.9.36 6.9.37 6.9.38 6.9.39 6.9.4 6.9.41 6.9.42 6.9.43 6.9.44 6.9.45 6.9.46 6.9.47 6.9.48 6.9.49 6.9.5 6.9.51 6.9.6 6.9.7 6.9.8 6.9.9 7.0.0 7.0.0-alpha.6 7.0.0-alpha.7 7.0.0-beta.1 7.0.0-rc1 7.0.0-rc2 7.0.0-rc3 7.0.1 7.0.10 7.0.11 7.0.2 7.0.3 7.0.4 7.0.5 7.0.6 7.0.7 7.0.8 7.0.9 7.1.0 7.1.1 trunk 3.0 4.0 4.0.1 4.1 4.2 4.3 4.4 4.4.1 4.5 4.6 4.6.1 4.6.2 4.7 4.7.1 4.7.2 4.7.5 4.7.6 4.8 4.8.1 4.9 4.9.1 4.9.2 4.9.3 4.9.4 4.9.5 4.9.5.1 4.9.5.2 5.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.1 5.1.1 5.10 5.11 5.2 5.2.1 5.2.5 5.2.6 5.2.7 5.3 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.4 5.4.1 5.4.2 5.4.3 5.4.3.1 5.4.3.2 5.5 5.5.1 5.5.2 5.6 5.6.1 5.6.1.1 5.7 5.7.1 5.7.2 5.7.3 5.8 5.8.1 5.8.2 5.8.3 5.9 5.9.1 5.9.1.1 5.9.2 5.9.2.1 5.9.3 5.9.4 5.9.5 5.9.6 5.9.6.1 5.9.6.2 5.9.6.3 5.9.7 5.9.7.1 5.9.7.2 5.9.7.3 5.9.8 5.9.8.1 5.9.9 5.9.9.1 6.0.0 6.0.1 6.0.2 6.0.3 6.0.4 6.0.5 6.1.0 6.1.1 6.2.0 6.2.1 6.2.2 6.3.0 6.3.1 6.3.2 6.3.3 6.4.0 6.4.1 6.4.2 6.4.3 6.5.0 6.5.1 6.5.2 6.5.3 6.5.4 6.6.0 6.6.1 6.6.2 6.6.3 6.6.4 6.7.0 6.7.1 6.7.2 6.7.3 6.7.4 6.7.5 6.7.6 6.7.7 6.7.8 6.7.9 6.8.0 6.8.1 6.8.2 6.8.3
advanced-access-manager / Application / Frontend / Manager.php
advanced-access-manager / Application / Frontend Last commit date
phtml 7 years ago Authorization.php 7 years ago Filter.php 7 years ago Manager.php 7 years ago
Manager.php
190 lines
1 <?php
2
3 /**
4 * ======================================================================
5 * LICENSE: This file is subject to the terms and conditions defined in *
6 * file 'license.txt', which is part of this source code package. *
7 * ======================================================================
8 */
9
10 /**
11 * AAM frontend manager
12 *
13 * @package AAM
14 * @author Vasyl Martyniuk <vasyl@vasyltech.com>
15 */
16 class AAM_Frontend_Manager {
17
18 /**
19 * Instance of itself
20 *
21 * @var AAM_Frontend_Manager
22 *
23 * @access private
24 */
25 private static $_instance = null;
26
27 /**
28 * Construct the manager
29 *
30 * @return void
31 *
32 * @access public
33 */
34 public function __construct() {
35 if (AAM_Core_Config::get('core.settings.frontendAccessControl', true)) {
36 AAM_Frontend_Filter::register();
37 }
38
39 //manage AAM shortcode
40 add_shortcode('aam', array($this, 'processShortcode'));
41
42 //cache clearing hook
43 add_action('aam-clear-cache-action', 'AAM_Core_API::clearCache');
44
45 //admin bar
46 $this->checkAdminBar();
47
48 //register login widget
49 if (AAM_Core_Config::get('core.settings.secureLogin', true)) {
50 add_action('widgets_init', array($this, 'registerLoginWidget'));
51 add_action('wp_enqueue_scripts', array($this, 'printJavascript'));
52 }
53
54 //password protected filter
55 add_filter('post_password_required', array($this, 'isPassProtected'), 10, 2);
56 //manage password check expiration
57 add_filter('post_password_expires', array($this, 'checkPassExpiration'));
58 }
59
60 /**
61 * Process AAM short-codes
62 *
63 * @param array $args
64 * @param string $content
65 *
66 * @return string
67 *
68 * @access public
69 */
70 public function processShortcode($args, $content) {
71 $shortcode = new AAM_Shortcode_Factory($args, $content);
72
73 return $shortcode->process();
74 }
75
76 /**
77 * Check admin bar
78 *
79 * Make sure that current user can see admin bar
80 *
81 * @return void
82 *
83 * @access public
84 */
85 public function checkAdminBar() {
86 if (AAM_Core_API::capabilityExists('show_admin_bar')) {
87 if (!AAM::getUser()->hasCapability('show_admin_bar')) {
88 add_filter('show_admin_bar', '__return_false', PHP_INT_MAX );
89 }
90 }
91 }
92
93 /**
94 * Register login widget
95 *
96 * @return void
97 *
98 * @access public
99 */
100 public function registerLoginWidget() {
101 register_widget('AAM_Backend_Widget_Login');
102 }
103
104 /**
105 * Print JS libraries
106 *
107 * @return void
108 *
109 * @access public
110 */
111 public function printJavascript() {
112 if (AAM_Core_Config::get('core.settings.secureLogin', true)) {
113 wp_enqueue_script(
114 'aam-login',
115 AAM_MEDIA . '/js/aam-login.js',
116 array('jquery')
117 );
118
119 //add plugin localization
120 $locals = array(
121 'nonce' => wp_create_nonce('aam_ajax'),
122 'ajaxurl' => admin_url('admin-ajax.php')
123 );
124
125 wp_localize_script('aam-login', 'aamLocal', $locals);
126 }
127 }
128
129 /**
130 * Check if post is password protected
131 *
132 * @param boolean $res
133 * @param WP_Post $post
134 *
135 * @return boolean
136 *
137 * @access public
138 */
139 public function isPassProtected($res, $post) {
140 if (is_a($post, 'WP_Post')) {
141 $object = AAM::getUser()->getObject('post', $post->ID);
142
143 if ($object->has('frontend.protected')) {
144 require_once( ABSPATH . 'wp-includes/class-phpass.php' );
145 $hasher = new PasswordHash( 8, true );
146 $pass = $object->get('frontend.password');
147 $hash = wp_unslash(
148 AAM_Core_Request::cookie('wp-postpass_' . COOKIEHASH)
149 );
150
151 $res = empty($hash) ? true : !$hasher->CheckPassword($pass, $hash);
152 }
153 }
154
155 return $res;
156 }
157
158 /**
159 * Get password expiration TTL
160 *
161 * @param int $expire
162 *
163 * @return int
164 *
165 * @access public
166 */
167 public function checkPassExpiration($expire) {
168 $overwrite = AAM_Core_Config::get('feature.post.password.expires', null);
169
170 if (!is_null($overwrite)) {
171 $expire = ($overwrite ? time() + strtotime($overwrite) : 0);
172 }
173
174 return $expire;
175 }
176
177 /**
178 * Bootstrap the manager
179 *
180 * @return void
181 *
182 * @access public
183 */
184 public static function bootstrap() {
185 if (is_null(self::$_instance)) {
186 self::$_instance = new self;
187 }
188 }
189
190 }