PluginProbe
Admin and Site Enhancements (ASE) / 7.6.2
Admin and Site Enhancements (ASE) v7.6.2
9.1.1 9.1.0 9.0.2 9.0.1 9.0.0 8.9.2 8.9.1 8.9.0 8.8.8 8.8.7 8.8.6 8.8.5 8.8.4 8.8.3 8.8.2 8.8.1 8.8.0 8.7.3 8.7.2 8.7.1 8.2.1 8.2.2 8.2.3 8.3.0 8.3.1 All 273 releases
admin-site-enhancements / classes / class-redirect-after-login.php
class-redirect-after-login.php
77 lines 3.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace ASENHA\Classes;
4
5 /**
6 * Class for Redirect After Login module
7 *
8 * @since 6.9.5
9 */
10 class Redirect_After_Login {
11 /**
12 * Redirect to custom internal URL after login for user roles
13 *
14 * @param string $redirect_to_url URL to redirect to. Default is admin dashboard URL.
15 * @param string $origin_url URL the user is coming from.
16 * @param object $user logged-in user's data.
17 * @since 1.5.0
18 */
19 public function redirect_after_login( $username, $user ) {
20 $options = get_option( ASENHA_SLUG_U, array() );
21 $this->redirect_to_single_url( $username, $user );
22 }
23
24 /**
25 * Redirect all applicable user roles to a single URL
26 *
27 * @since 7.3.3
28 */
29 public function redirect_to_single_url( $username, $user ) {
30 $options = get_option( ASENHA_SLUG_U, array() );
31 $redirect_after_login_to_slug_raw = ( isset( $options['redirect_after_login_to_slug'] ) ? $options['redirect_after_login_to_slug'] : '' );
32 $relative_path = $this->get_redirect_relative_path( $redirect_after_login_to_slug_raw );
33 $redirect_after_login_for = ( isset( $options['redirect_after_login_for'] ) ? $options['redirect_after_login_for'] : array() );
34 if ( isset( $redirect_after_login_for ) && count( $redirect_after_login_for ) > 0 ) {
35 // Assemble single-dimensional array of roles for which custom URL redirection should happen
36 $roles_for_custom_redirect = array();
37 foreach ( $redirect_after_login_for as $role_slug => $custom_redirect ) {
38 if ( $custom_redirect ) {
39 $roles_for_custom_redirect[] = $role_slug;
40 }
41 }
42 // Does the user have roles data in array form?
43 if ( isset( $user->roles ) && is_array( $user->roles ) ) {
44 $current_user_roles = $user->roles;
45 }
46 // Set custom redirect URL for roles set in the settings. Otherwise, leave redirect URL to the default, i.e. admin dashboard.
47 foreach ( $current_user_roles as $role ) {
48 if ( in_array( $role, $roles_for_custom_redirect ) ) {
49 wp_safe_redirect( home_url( $relative_path ) );
50 exit;
51 }
52 }
53 }
54 }
55
56 /**
57 * Get the relative path to redirect to based on the raw redirect slug
58 *
59 * @since 7.3.3
60 */
61 public function get_redirect_relative_path( $redirect_after_login_to_slug_raw ) {
62 if ( !empty( $redirect_after_login_to_slug_raw ) ) {
63 $redirect_after_login_to_slug = trim( trim( $redirect_after_login_to_slug_raw ), '/' );
64 if ( false !== strpos( $redirect_after_login_to_slug, '.php' ) ) {
65 $slug_suffix = '';
66 } else {
67 $slug_suffix = '/';
68 }
69 $relative_path = $redirect_after_login_to_slug . $slug_suffix;
70 } else {
71 $relative_path = '';
72 }
73 return $relative_path;
74 }
75
76 }
77