Reworked how decisions are made for redirecting users on log-in
authorChuck Scott <cscott@gaslightmedia.com>
Tue, 31 Jan 2017 18:11:47 +0000 (13:11 -0500)
committerChuck Scott <cscott@gaslightmedia.com>
Tue, 31 Jan 2017 18:11:47 +0000 (13:11 -0500)
index.php

index 284fe9a..2fe59d0 100644 (file)
--- a/index.php
+++ b/index.php
@@ -250,15 +250,53 @@ if ($wpUserID) {
  */
 //
 function my_login_redirect($redirect_to, $request, $user) {
-    if (get_option('glm_members_database_frontend_login_request') == 'false') {
-        if ( isset( $user->roles ) && is_array( $user->roles ) && !in_array( 'administrator', $user->roles ) && !in_array( 'editor', $user->roles ) ) {
-            $redirect_to = get_admin_url() . "admin.php?page=glm-members-admin-menu-member";
-        }
-    } else {
+
+    // If this is a front-end request, return them to the front-end ($redirect_to should already point there)
+    if (get_option('glm_members_database_frontend_login_request') != 'false') {
+trigger_error('Front-End request', E_USER_NOTICE);
+
+        // Also clear the front-end login request flag
         update_option('glm_members_database_frontend_login_request', 'false');
+
+        return $redirect_to;
+    }
+
+    // If user is administrator send them to the main dashboard
+    if (!in_array('administrator', $current_user->roles)) {
+trigger_error('Sending to main dashboard', E_USER_NOTICE);
+        $redirect_to = admin_url();
+        return $redirect_to;
+    }
+
+    // If this is not a GLM Associate login or members are not enabled, allow the default (should be profile menu)
+    if (!current_user_can('glm_members_login') || !$config['settings']['enable_members']) {
+trigger_error('Not GLM Associate Login', E_USER_NOTICE);
+
+        return $redirect_to;
     }
+
+    // If user is an all members manager, send them to the "Members" menu
+    if (current_user_can('glm_members_members')) {
+trigger_error('Members Manager', E_USER_NOTICE);
+
+        $redirect_to = get_admin_url() . "admin.php?page=glm-members-admin-menu-members";
+         return $redirect_to;
+    }
+
+    // If user is a member manager, send them to the "Member" menu
+    if (current_user_can('glm_members_member')) {
+trigger_error('Member Manager', E_USER_NOTICE);
+
+        $redirect_to = get_admin_url() . "admin.php?page=glm-members-admin-menu-member";
+        return $redirect_to;
+    }
+
+trigger_error('Doing default', E_USER_NOTICE);
+    // If there's anything else going on, they go to what was requested
     return $redirect_to;
+
 }
+// Make sure that
 add_filter( 'woocommerce_prevent_admin_access', '__return_false' );
 add_filter("login_redirect", "my_login_redirect", 10, 3);