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 / LogoutRedirect.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 9 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
LogoutRedirect.php
121 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 * Logout Redirect service
12 *
13 * @package AAM
14 * @version 7.0.0
15 */
16 class AAM_Service_LogoutRedirect
17 {
18 use AAM_Service_BaseTrait;
19
20 /**
21 * Contains the redirect instructions for just logged out user
22 *
23 * This property is used to capture logging out user's redirect
24 *
25 * @var array
26 * @access protected
27 *
28 * @since 7.0.0
29 */
30 private $_last_user_redirect = null;
31
32 /**
33 * Constructor
34 *
35 * @return void
36 * @access protected
37 *
38 * @version 7.0.4
39 */
40 protected function __construct()
41 {
42 // Register RESTful API
43 AAM_Restful_LogoutRedirect::bootstrap();
44
45 $this->initialize_hooks();
46 }
47
48 /**
49 * Initialize Logout redirect hooks
50 *
51 * @return void
52 * @access protected
53 *
54 * @version 7.0.4
55 */
56 protected function initialize_hooks()
57 {
58 if (is_admin()) {
59 // Hook that initialize the AAM UI part of the service
60 add_action('aam_initialize_ui_action', function () {
61 AAM_Backend_Feature_Main_LogoutRedirect::register();
62 });
63 }
64
65 // Capture currently logging out user settings
66 add_action('clear_auth_cookie', function() {
67 $redirect = AAM::api()->logout_redirect()->get_redirect();
68
69 if (!empty($redirect) && $redirect['type'] !== 'default') {
70 $this->_last_user_redirect = $redirect;
71 }
72 });
73
74 // Fired after the user has been logged out successfully
75 add_action('wp_logout', function() {
76 if (!empty($this->_last_user_redirect)) {
77 AAM::api()->redirect->do_redirect($this->_last_user_redirect);
78 } else {
79 $redirect = AAM::api()->logout_redirect()->get_redirect();
80
81 if (empty($redirect) || $redirect['type'] === 'default') {
82 $redirect = [
83 'type' => 'url_redirect',
84 'redirect_url' => $this->_get_default_logout_redirect()
85 ];
86 }
87
88 AAM::api()->redirect->do_redirect($redirect);
89 }
90 }, PHP_INT_MAX);
91 }
92
93 /**
94 * Get default logout redirect
95 *
96 * @return string
97 * @access private
98 *
99 * @version 7.0.1
100 */
101 private function _get_default_logout_redirect()
102 {
103 $requested_redirect_to = '';
104 $redirect_to = AAM::api()->misc->get($_REQUEST, 'redirect_to');
105 $user = wp_get_current_user();
106
107 if (!empty($redirect_to) && is_string($redirect_to)) {
108 $result = $requested_redirect_to = $redirect_to;
109 } else {
110 $result = add_query_arg([
111 'loggedout' => 'true',
112 'wp_lang' => get_user_locale(wp_get_current_user())
113 ], wp_login_url());
114 }
115
116 return apply_filters(
117 'logout_redirect', $result, $requested_redirect_to, $user
118 );
119 }
120
121 }