Page 1 of 1

Setting a default table based on the user logged in

PostPosted: Tue Apr 26, 2011 7:40 am
by rlevin
Using the beforeHandleRequest() function works but only when each user has one table. If I were to click on TableB, TableA would show instead since beforeHandleRequest() is called on every request. How should I approach this problem? My tables are hidden from user to user using the getNavItem() method. Ive also tried the after_action_login() method but that didn't work.

Here's what I have at the moment

Code: Select all
function after_action_login()
    {
      $auth =& Dataface_AuthenticationTool::getInstance();
      $user =& $auth->getLoggedInUser(); 
      $app = Dataface_Application::getInstance();
      $query =& $app->getQuery();
      switch($user->val('role'))
      {
         case 'ADMIN':
            $query['-table'] = 'TableA';
            break;
         case 'UserA':
            $query['-table'] = 'TableA';
            break;
         case 'UserB':
            $query['-table'] = 'TableB';
            break;
      }      
    }

Re: Setting a default table based on the user logged in

PostPosted: Tue Apr 26, 2011 8:29 am
by rlevin
Here's something else I tried

Code: Select all
function isLoggedIn()
      {
      $auth =& Dataface_AuthenticationTool::getInstance();
    $user =& $auth->getLoggedInUser();
    if(isset($user)) return true;
    return false;
      }
     
     function beforeHandleRequest(){
    if (!isset($_SESSION['loggedInAlready']) and isLoggedIn() ){
        $_SESSION['loggedInAlready'] = true;
         $auth =& Dataface_AuthenticationTool::getInstance();
           $user =& $auth->getLoggedInUser();
         switch ($user->val('role')){
            case 'ADMIN':
                  $url= 'http://www........index.php?-table=TableA';
                  break;
            case 'UserA':
               $url = 'http://www.......index.php?-table=TableA';
               break;
            case 'UserB':
               $url = 'http://www........index.php?-table=TableB';
                 break;
        }
        header('Location: '.$url);
        exit;
    }
}



This doesn't work either.

Re: Setting a default table based on the user logged in

PostPosted: Tue Apr 26, 2011 2:00 pm
by shannah
You're barking up the wrong tree by adding extra checks to see if they are logged in. The key thing to focus on when you implement the beforeHandleRequest method is that '-action' parameter.

Look at the wiki page for beforeHandleRequest for some examples on how to do this safely.
http://www.xataface.com/wiki/beforeHandleRequest
-Steve