PluginProbe ʕ •ᴥ•ʔ
Advanced Access Manager – Access Governance for WordPress / trunk
Advanced Access Manager – Access Governance for WordPress vtrunk
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 / Restful / AdminToolbar.php
advanced-access-manager / application / Restful Last commit date
AccessDeniedRedirect.php 1 year ago AdminToolbar.php 1 year ago ApiRoute.php 1 year ago BackendMenu.php 1 year ago BackwardCompatibility.php 1 year ago Capability.php 1 year ago Configs.php 5 months ago Content.php 1 year ago Identity.php 1 year ago Jwt.php 5 months ago LoginRedirect.php 1 year ago LogoutRedirect.php 1 year ago Metabox.php 1 year ago Mu.php 1 year ago NotFoundRedirect.php 1 year ago Policies.php 1 year ago Roles.php 1 year ago SecureLogin.php 1 year ago SecurityAudit.php 1 year ago ServiceTrait.php 1 year ago Settings.php 1 year ago Urls.php 1 year ago Users.php 1 year ago Widgets.php 1 year ago
AdminToolbar.php
241 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 * RESTful API for the Admin Toolbar service
12 *
13 * @package AAM
14 * @version 7.0.0
15 */
16 class AAM_Restful_AdminToolbar
17 {
18
19 use AAM_Restful_ServiceTrait;
20
21 /**
22 * Necessary permissions to access endpoint
23 *
24 * @version 7.0.0
25 */
26 const PERMISSIONS = [
27 'aam_manager',
28 'aam_manage_admin_toolbar'
29 ];
30
31 /**
32 * Constructor
33 *
34 * @return void
35 * @access protected
36 *
37 * @version 7.0.0
38 */
39 protected function __construct()
40 {
41 // Register API endpoint
42 add_action('rest_api_init', function() {
43 // Get the list of backend menus
44 $this->_register_route('/admin-toolbar', [
45 'methods' => WP_REST_Server::READABLE,
46 'callback' => [ $this, 'get_items' ],
47 ], self::PERMISSIONS);
48
49 // Get a menu
50 $this->_register_route('/admin-toolbar/(?P<slug>[\w\-]+)', [
51 'methods' => WP_REST_Server::READABLE,
52 'callback' => array($this, 'get_item'),
53 'args' => array(
54 'slug' => array(
55 'description' => 'Toolbar item unique ID',
56 'type' => 'string',
57 'required' => true
58 )
59 )
60 ], self::PERMISSIONS);
61
62 // Set or update a menu's permission
63 $this->_register_route('/admin-toolbar/(?P<slug>[\w\-]+)', [
64 'methods' => WP_REST_Server::EDITABLE,
65 'callback' => array($this, 'update_item_permission'),
66 'args' => array(
67 'slug' => array(
68 'description' => 'Toolbar item unique ID',
69 'type' => 'string',
70 'required' => true
71 ),
72 'effect' => array(
73 'description' => 'Either menu is restricted or not',
74 'type' => 'string',
75 'default' => 'deny',
76 'enum' => [ 'allow', 'deny' ]
77 )
78 )
79 ], self::PERMISSIONS);
80
81 // Delete a menu's permission
82 $this->_register_route('/admin-toolbar/(?P<slug>[\w\-]+)', [
83 'methods' => WP_REST_Server::DELETABLE,
84 'callback' => array($this, 'delete_item_permission'),
85 'args' => array(
86 'slug' => array(
87 'description' => 'Toolbar item unique ID',
88 'type' => 'string',
89 'required' => true
90 )
91 )
92 ], self::PERMISSIONS);
93
94 // Reset all admin toolbar permissions
95 $this->_register_route('/admin-toolbar', [
96 'methods' => WP_REST_Server::DELETABLE,
97 'callback' => [ $this, 'reset_permissions' ],
98 ], self::PERMISSIONS);
99 });
100 }
101
102 /**
103 * Get the admin toolbar menu list
104 *
105 * @param WP_REST_Request $request
106 *
107 * @return WP_REST_Response
108 * @access public
109 *
110 * @version 7.0.0
111 */
112 public function get_items(WP_REST_Request $request)
113 {
114 try {
115 $service = $this->_get_service($request);
116 $result = $service->get_items();
117 } catch (Exception $e) {
118 $result = $this->_prepare_error_response($e);
119 }
120
121 return rest_ensure_response($result);
122 }
123
124 /**
125 * Get admin toolbar menu item
126 *
127 * @param WP_REST_Request $request
128 *
129 * @return WP_REST_Response
130 * @access public
131 *
132 * @version 7.0.0
133 */
134 public function get_item(WP_REST_Request $request)
135 {
136 try {
137 $service = $this->_get_service($request);
138 $result = $service->get_item($request->get_param('slug'));
139 } catch (Exception $e) {
140 $result = $this->_prepare_error_response($e);
141 }
142
143 return rest_ensure_response($result);
144 }
145
146 /**
147 * Update admin toolbar menu permission
148 *
149 * @param WP_REST_Request $request
150 *
151 * @return WP_REST_Response
152 * @access public
153 *
154 * @version 7.0.0
155 */
156 public function update_item_permission(WP_REST_Request $request)
157 {
158 try {
159 $service = $this->_get_service($request);
160 $item_id = $request->get_param('slug');
161
162 if ($request->get_param('effect') === 'allow') {
163 $result = $service->allow($item_id);
164 } else {
165 $result = $service->deny($item_id);
166 }
167
168 $result = $service->get_item($item_id);
169 } catch (Exception $e) {
170 $result = $this->_prepare_error_response($e);
171 }
172
173 return rest_ensure_response($result);
174 }
175
176 /**
177 * Delete menu permission
178 *
179 * @param WP_REST_Request $request
180 *
181 * @return WP_REST_Response
182 * @access public
183 *
184 * @version 7.0.0
185 */
186 public function delete_item_permission(WP_REST_Request $request)
187 {
188 try {
189 $service = $this->_get_service($request);
190 $result = [
191 'success' => $service->reset($request->get_param('slug'))
192 ];
193 } catch (Exception $e) {
194 $result = $this->_prepare_error_response($e);
195 }
196
197 return rest_ensure_response($result);
198 }
199
200 /**
201 * Reset all permissions
202 *
203 * @param WP_REST_Request $request
204 *
205 * @return WP_REST_Response
206 * @access public
207 *
208 * @version 7.0.0
209 */
210 public function reset_permissions(WP_REST_Request $request)
211 {
212 try {
213 $result = [
214 'success' => $this->_get_service($request)->reset()
215 ];
216 } catch (Exception $e) {
217 $result = $this->_prepare_error_response($e);
218 }
219
220 return rest_ensure_response($result);
221 }
222
223 /**
224 * Get Admin Toolbar framework service
225 *
226 * @param WP_REST_Request $request
227 *
228 * @return AAM_Framework_Service_AdminToolbar
229 * @access private
230 *
231 * @version 7.0.0
232 */
233 private function _get_service($request)
234 {
235 return AAM::api()->admin_toolbar(
236 $this->_determine_access_level($request),
237 [ 'error_handling' => 'exception' ]
238 );
239 }
240
241 }