API:userLoggedIn

From MODx Wiki

Jump to: navigation, search
 API Function Definition: 
userLoggedIn
Versions 
> 0.9.2 ?
Return Values
Success: Logged-In User Info
Fail: boolean false
Data Type 
mixed
Object Hierarchy 
DocumentParser
mixed userLoggedIn();


Determines if user is logged in, be it via Manager Interface, or Web Interface, and returns an array of data about the user. If no user is logged in, false is returned.

Examples

Related Functions

Function Source

File: manager/includes/document.parser.class.inc.php
Line: 1626
function userLoggedIn() {
        $userdetails= array ();
        if ($this->isFrontend() && isset ($_SESSION['webValidated'])) {
            // web user
            $userdetails['loggedIn']= true;
            $userdetails['id']= $_SESSION['webInternalKey'];
            $userdetails['username']= $_SESSION['webShortname'];
            $userdetails['usertype']= 'web'; // added by Raymond
            return $userdetails;
        } else
            if ($this->isBackend() && isset ($_SESSION['mgrValidated'])) {
                // manager user
                $userdetails['loggedIn']= true;
                $userdetails['id']= $_SESSION['mgrInternalKey'];
                $userdetails['username']= $_SESSION['mgrShortname'];
                $userdetails['usertype']= 'manager'; // added by Raymond
                return $userdetails;
            } else {
                return false;
            }
    }

Notes

The array returned contains the following values

array (
    'loggedIn' => true,
    'id' => User Id,
    'username' => User Name,
    'usertype' => (web|manager)
);

Showing manager user info on frontend

In MODx 0.9.6, this function does not display manager user info on the frontend. To correct this, replace the function source with the following code (document.parser.class.inc.php, line 1623):

function userLoggedIn() {
        $webVal = isset($_SESSION['webValidated']);
        $mgrVal = isset($_SESSION['mgrValidated']);
        if ($this->isFrontend()){
		//on frontend
        	if ($webVal){
         	//webuser is logged in
         		$auth = true;
         		$type = 'web';
         		$prefix = 'web';
        	} elseif ($mgrVal){
        	//manager is logged in
        		$auth = true;
        		$type = 'manager';
        		$prefix = 'mgr';
        	} else {
        	//neither is logged in
        		$auth = false;
        	}
        } elseif ($this->isBackend() && $mgrVal){
		//inside manager and authenticated
			$auth = true;
			$type = 'manager';
    		$prefix = 'mgr';
        } else {
		//if all else fails...
        	$auth = false;
        }
        if ($auth){
		//if some user logged in...
			$userdetails= array (
				'loggedIn' => true,
				'id' => $_SESSION[$prefix.'InternalKey'],
				'username' => $_SESSION[$prefix.'Shortname'],
				'usertype' => $type // added by Raymond
			);
            return $userdetails;
        }else{
        	return false;
        }
    }

Note that if you call this on the frontend when logged in both as web and manager users, only the web user info will be returned.

Personal tools