API:userLoggedIn
From MODx Wiki
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.
[edit]
Examples
[edit]
Related Functions
[edit]
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; } }
[edit]
Notes
The array returned contains the following values
array ( 'loggedIn' => true, 'id' => User Id, 'username' => User Name, 'usertype' => (web|manager) );
[edit]
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.
