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 / Service / LoginRedirect.php
advanced-access-manager / application / Service Last commit date
Shortcode 5 months ago AccessDeniedRedirect.php 1 year ago AdminToolbar.php 1 year ago ApiRoute.php 1 year ago BackendMenu.php 1 year ago BaseTrait.php 1 year ago Capability.php 1 year ago Content.php 5 months ago Core.php 10 months ago Hooks.php 1 year ago Identity.php 3 months ago Jwt.php 3 months ago LoginRedirect.php 1 year ago LogoutRedirect.php 3 months ago Metaboxes.php 1 year ago NotFoundRedirect.php 1 year ago Policies.php 1 year ago SecureLogin.php 1 year ago SecurityAudit.php 1 year ago Shortcodes.php 5 months ago Urls.php 1 year ago Welcome.php 1 year ago Widgets.php 1 year ago
LoginRedirect.php
164 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 * Login Redirect service
12 *
13 * @package AAM
14 *
15 * @version 7.0.0
16 */
17 class AAM_Service_LoginRedirect
18 {
19
20 use AAM_Service_BaseTrait;
21
22 /**
23 * Default configurations
24 *
25 * @version 7.0.0
26 */
27 const DEFAULT_CONFIG = [
28 'service.login_redirect.suppress_redirect_to' => false
29 ];
30
31 /**
32 * Constructor
33 *
34 * @return void
35 * @access protected
36 *
37 * @version 7.0.4
38 */
39 protected function __construct()
40 {
41 add_filter('aam_get_config_filter', function($result, $key) {
42 if (empty($result) && array_key_exists($key, self::DEFAULT_CONFIG)) {
43 $result = self::DEFAULT_CONFIG[$key];
44 }
45
46 return $result;
47 }, 10, 2);
48
49 // Register RESTful API
50 AAM_Restful_LoginRedirect::bootstrap();
51
52 add_action('init', function() {
53 $this->initialize_hooks();
54 }, PHP_INT_MAX);
55 }
56
57 /**
58 * Initialize service hooks
59 *
60 * @return void
61 * @access protected
62 *
63 * @version 7.0.4
64 */
65 protected function initialize_hooks()
66 {
67 if (is_admin()) {
68 // Hook that initialize the AAM UI part of the service
69 add_action('aam_initialize_ui_action', function () {
70 AAM_Backend_Feature_Main_LoginRedirect::register();
71 });
72 }
73
74 // AAM Secure Login hooking
75 add_filter(
76 'aam_rest_authenticated_user_data_filter',
77 array($this, 'prepare_login_response'),
78 10,
79 3
80 );
81
82 // WP Core login redirect hook
83 add_filter('login_redirect', [ $this, 'get_login_redirect' ], 10, 3);
84 }
85
86 /**
87 * Prepare login redirect response
88 *
89 * This method hooks into the Secure Login redirect service and override the
90 * response for the Ajax login request
91 *
92 * @param array $response
93 * @param WP_REST_Request $request
94 * @param WP_User $user
95 *
96 * @return array
97 *
98 * @access public
99 * @see AAM_Service_SecureLogin::authenticate
100 *
101 * @version 7.0.0
102 */
103 public function prepare_login_response($response, $request, $user)
104 {
105 if (is_array($response) && $request->get_param('return_login_redirect')) {
106 $response['redirect_to'] = $this->get_user_redirect_url($user);
107 }
108
109 return $response;
110 }
111
112 /**
113 * Get login redirect URL
114 *
115 * @param string $redirect
116 * @param string $requested
117 * @param WP_User $user
118 *
119 * @return string
120 * @access public
121 *
122 * @version 7.0.0
123 */
124 public function get_login_redirect($redirect, $requested, $user)
125 {
126 // Determine if we want to suppress redirect_to URL
127 $suppress = AAM::api()->config->get(
128 'service.login_redirect.suppress_redirect_to'
129 );
130
131 if (is_a($user, 'WP_User')
132 && (in_array($requested, array('', admin_url()), true) || $suppress)
133 ) {
134 $redirect = $this->get_user_redirect_url($user);
135 }
136
137 return $redirect;
138 }
139
140 /**
141 * Prepare user redirect URL
142 *
143 * @param WP_User $user
144 *
145 * @return string|null
146 * @access protected
147 *
148 * @version 7.0.0
149 */
150 protected function get_user_redirect_url($user)
151 {
152 $redirect = AAM::api()->user($user->ID)->login_redirect()->get_redirect();
153
154 if ($redirect['type'] === 'default') {
155 $redirect = [
156 'type' => 'url_redirect',
157 'redirect_url' => admin_url()
158 ];
159 }
160
161 return AAM::api()->redirect->to_redirect_url($redirect);
162 }
163
164 }