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 / BackwardCompatibility.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
BackwardCompatibility.php
230 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 to support backward compatibility with AAM 6
12 *
13 * @package AAM
14 * @version 7.0.1
15 */
16 class AAM_Restful_BackwardCompatibility
17 {
18
19 use AAM_Restful_ServiceTrait;
20
21 /**
22 * Constructor
23 *
24 * @return void
25 * @access protected
26 *
27 * @version 7.0.1
28 */
29 protected function __construct()
30 {
31 // Register API endpoint
32 if (AAM::api()->config->get('service.jwt.enabled', true)) {
33 add_action('rest_api_init', function() {
34 // Validate JWT token
35 register_rest_route('aam/v2', '/jwt/validate', [
36 'methods' => WP_REST_Server::EDITABLE,
37 'callback' => [ $this, 'validate_token' ],
38 'permission_callback' => '__return_true',
39 'args' => [
40 'jwt' => [
41 'description' => __('JWT token.', AAM_KEY),
42 'type' => 'string',
43 ]
44 ],
45 ]);
46
47 // Refresh JWT token
48 register_rest_route('aam/v2', '/jwt/refresh', [
49 'methods' => WP_REST_Server::EDITABLE,
50 'callback' => [ $this, 'refresh_token' ],
51 'permission_callback' => '__return_true',
52 'args' => [
53 'jwt' => [
54 'description' => __('JWT token.', AAM_KEY),
55 'type' => 'string',
56 ]
57 ],
58 ]);
59
60 // Revoke JWT token
61 register_rest_route('aam/v2', '/jwt/revoke', [
62 'methods' => WP_REST_Server::EDITABLE,
63 'callback' => [ $this, 'revoke_token' ],
64 'permission_callback' => '__return_true',
65 'args' => [
66 'jwt' => [
67 'description' => __('JWT token.', AAM_KEY),
68 'type' => 'string',
69 ]
70 ],
71 ]);
72 });
73 }
74 }
75
76 /**
77 * Validate JWT token
78 *
79 * @param WP_REST_Request $request
80 *
81 * @return WP_REST_Response
82 * @access public
83 *
84 * @version 7.0.1
85 */
86 public function validate_token($request)
87 {
88 try {
89 _deprecated_function(
90 '/aam/v2/jwt/validate',
91 AAM_VERSION,
92 'Deprecated /jwt/validate REST API endpoint will be removed in 7.5.0'
93 );
94
95 // Get JWT service
96 $service = $this->_get_jwt_service_through_jwt($request);
97 $jwt = $request->get_param('jwt');
98
99 // Validating the token
100 $result = $service->validate($jwt);
101
102 if (!is_wp_error($result)) {
103 $result = AAM::api()->jwt->decode($jwt);
104 } else {
105 throw new InvalidArgumentException($result->get_error_message());
106 }
107 } catch (Exception $e) {
108 $result = $this->_prepare_error_response($e);
109 }
110
111 return rest_ensure_response($result);
112 }
113
114 /**
115 * Refresh JWT token
116 *
117 * @param WP_REST_Request $request
118 *
119 * @return WP_REST_Response
120 * @access public
121 *
122 * @version 7.0.1
123 */
124 public function refresh_token($request)
125 {
126 try {
127 _deprecated_function(
128 '/aam/v2/jwt/refresh',
129 AAM_VERSION,
130 'Deprecated /jwt/refresh REST API endpoint will be removed in 7.5.0'
131 );
132
133 // Get JWT service
134 $service = $this->_get_jwt_service_through_jwt($request);
135 $jwt = $request->get_param('jwt');
136
137 // Validating the token
138 $result = $service->validate($jwt);
139
140 if (!is_wp_error($result)) {
141 $result = $service->refresh($jwt);
142 } else {
143 throw new InvalidArgumentException($result->get_error_message());
144 }
145 } catch (Exception $e) {
146 $result = $this->_prepare_error_response($e);
147 }
148
149 return rest_ensure_response($result);
150 }
151
152 /**
153 * Revoke JWT token
154 *
155 * @param WP_REST_Request $request
156 *
157 * @return WP_REST_Response
158 * @access public
159 *
160 * @version 7.0.1
161 */
162 public function revoke_token($request)
163 {
164 try {
165 _deprecated_function(
166 '/aam/v2/jwt/revoke',
167 AAM_VERSION,
168 'Deprecated /jwt/revoke REST API endpoint will be removed in 7.5.0'
169 );
170
171 // Get JWT service
172 $service = $this->_get_jwt_service_through_jwt($request);
173 $jwt = $request->get_param('jwt');
174
175 // Validating the token
176 $result = $service->validate($jwt);
177
178 if (!is_wp_error($result)) {
179 $service->revoke($jwt);
180
181 $result = [
182 'message' => 'Token revoked successfully'
183 ];
184 } else {
185 throw new InvalidArgumentException($result->get_error_message());
186 }
187 } catch (Exception $e) {
188 $result = $this->_prepare_error_response($e);
189 }
190
191 return rest_ensure_response($result);
192 }
193
194 /**
195 * Get pre-configured JWT service
196 *
197 * @param WP_REST_Request $request
198 *
199 * @return AAM_Framework_Service_Jwts
200 * @access private
201 *
202 * @version 7.0.1
203 */
204 private function _get_jwt_service_through_jwt($request)
205 {
206 $jwt = $request->get_param('jwt');
207
208 // Let's extract user_id from the token
209 if (!empty($jwt)) {
210 $claims = AAM::api()->jwt->decode($jwt);
211
212 if (!is_wp_error($claims)) {
213 // Validating token and ensuring it is not revoked
214 $result = AAM::api()->jwts(AAM::api()->access_levels->get(
215 AAM_Framework_Type_AccessLevel::USER,
216 isset($claims['userId']) ? $claims['userId'] : $claims['user_id']
217 ),
218 [ 'error_handling' => 'exception' ]
219 );
220 } else {
221 throw new InvalidArgumentException($claims->get_error_message());
222 }
223 } else {
224 throw new InvalidArgumentException('Invalid JWT token');
225 }
226
227 return $result;
228 }
229
230 }