$e = $modx->Event;and here the weblogout
switch ($e->name) {
case "OnManagerLogin":
$dbase = $modx->dbConfig[’dbase’];
$table_prefix = $modx->dbConfig[’table_prefix’];
# process login
$username = heretheusername;
$givenPassword = herethepassword;
$captcha_code = isset($_POST[’captcha_code’])? $_POST[’captcha_code’]: ’’;
// invoke OnBeforeWebLogin event
$modx->invokeEvent("OnBeforeWebLogin",
array(
"username" => $username,
"userpassword" => $givenPassword,
"rememberme" => $_POST[’rememberme’]
));
$sql = "SELECT $dbase.".$table_prefix."web_users.*, $dbase.".$table_prefix."web_user_attributes.* FROM $dbase.".$table_prefix."web_users, $dbase.".$table_prefix."web_user_attributes WHERE $dbase.".$table_prefix."web_users.username REGEXP BINARY ’^".$username."$’ and $dbase.".$table_prefix."web_user_attributes.internalKey=$dbase.".$table_prefix."web_users.id;";
$ds = $modx->dbQuery($sql);
$limit = $modx->db->getRecordCount($ds);
if($limit==0 || $limit>1) {
$output = webLoginAlert("Incorrect username or password entered!");
return;
}
$row = $modx->db->getRow($ds);
$internalKey = $row[’internalKey’];
$dbasePassword = $row[’password’];
$failedlogins = $row[’failedlogincount’];
$blocked = $row[’blocked’];
$blockeduntildate = $row[’blockeduntil’];
$blockedafterdate = $row[’blockedafter’];
$registeredsessionid = $row[’sessionid’];
$role = $row[’role’];
$lastlogin = $row[’lastlogin’];
$nrlogins = $row[’logincount’];
$fullname = $row[’fullname’];
//$sessionRegistered = checkSession();
$email = $row[’email’];
// load user settings
if($internalKey){
$result = $modx->dbQuery("SELECT setting_name, setting_value FROM ".$dbase.".".$table_prefix."web_user_settings WHERE webuser=’$internalKey’");
while ($row = $modx->fetchRow($result, ’both’)) $modx->config[$row[0]] = $row[1];
}
if($failedlogins>=3 && $blockeduntildate>time()) { // blocked due to number of login errors.
session_destroy();
session_unset();
$output = webLoginAlert("Due to three or more failed logins, you have been blocked!");
return;
}
if($failedlogins>=3 && $blockeduntildate<time()) { // blocked due to number of login errors, but get to try again
$sql = "UPDATE $dbase.".$table_prefix."user_attributes SET failedlogincount=’0’, blockeduntil=’".(time()-1)."’ where internalKey=$internalKey";
$ds = $modx->dbQuery($sql);
}
if($blocked=="1") { // this user has been blocked by an admin, so no way he’s loggin in!
session_destroy();
session_unset();
$output = webLoginAlert("You are blocked and cannot log in!");
return;
}
// blockuntil
if($blockeduntildate>time()) { // this user has a block until date
session_destroy();
session_unset();
$output = webLoginAlert("You are blocked and cannot log in! Please try again later.");
return;
}
// blockafter
if($blockedafterdate>0 && $blockedafterdate<time()) { // this user has a block after date
session_destroy();
session_unset();
$output = webLoginAlert("You are blocked and cannot log in! Please try again later.");
return;
}
// allowed ip
if (isset($modx->config[’allowed_ip’])) {
if (strpos($modx->config[’allowed_ip’],$_SERVER[’REMOTE_ADDR’])===false) {
$output = webLoginAlert("You are not allowed to login from this location.");
return;
}
}
// allowed days
if (isset($modx->config[’allowed_days’])) {
$date = getdate();
$day = $date[’wday’]+1;
if (strpos($modx->config[’allowed_days’],"$day")===false) {
$output = webLoginAlert("You are not allowed to login at this time. Please try again later.");
return;
}
}
// invoke OnWebAuthentication event
$rt = $modx->invokeEvent("OnWebAuthentication",
array(
"userid" => $internalKey,
"username" => $username,
"userpassword" => $givenPassword,
"savedpassword" => $dbasePassword,
"rememberme" => $_POST[’rememberme’]
));
// check if plugin authenticated the user
if (!$rt||(is_array($rt) && !in_array(TRUE,$rt))) {
// check user password - local authentication
if($dbasePassword != md5($givenPassword)) {
$output = webLoginAlert("Incorrect username or password entered!");
$newloginerror = 1;
}
}
if(isset($use_captcha) && $use_captcha==1) {
if($_SESSION[’veriword’]!=$captcha_code) {
$output = webLoginAlert("The security code you entered didn’t validate! Please try to login again!");
$newloginerror = 1;
}
}
if(isset($newloginerror) && $newloginerror==1) {
$failedlogins += $newloginerror;
if($failedlogins>=3) { //increment the failed login counter, and block!
$sql = "update $dbase.".$table_prefix."web_user_attributes SET failedlogincount=’$failedlogins’, blockeduntil=’".(time()+(1*60*60))."’ where internalKey=$internalKey";
$ds = $modx->dbQuery($sql);
} else { //increment the failed login counter
$sql = "update $dbase.".$table_prefix."web_user_attributes SET failedlogincount=’$failedlogins’ where internalKey=$internalKey";
$ds = $modx->dbQuery($sql);
}
session_destroy();
session_unset();
return;
}
$currentsessionid = session_id();
if(!isset($_SESSION[’webValidated’])) {
$sql = "update $dbase.".$table_prefix."web_user_attributes SET failedlogincount=0, logincount=logincount+1, lastlogin=thislogin, thislogin=".time().", sessionid=’$currentsessionid’ where internalKey=$internalKey";
$ds = $modx->dbQuery($sql);
}
$_SESSION[’webShortname’]=$username;
$_SESSION[’webFullname’]=$fullname;
$_SESSION[’webEmail’]=$email;
$_SESSION[’webValidated’]=1;
$_SESSION[’webInternalKey’]=$internalKey;
$_SESSION[’webValid’]=base64_encode($givenPassword);
$_SESSION[’webUser’]=base64_encode($username);
$_SESSION[’webFailedlogins’]=$failedlogins;
$_SESSION[’webLastlogin’]=$lastlogin;
$_SESSION[’webnrlogins’]=$nrlogins;
$_SESSION[’webUserGroupNames’] = ’’; // reset user group names
// get user’s document groups
$dg=’’;$i=0;
$tblug = $dbase.".".$table_prefix."web_groups";
$tbluga = $dbase.".".$table_prefix."webgroup_access";
$sql = "SELECT uga.documentgroup
FROM $tblug ug
INNER JOIN $tbluga uga ON uga.webgroup=ug.webgroup
WHERE ug.webuser =".$internalKey;
$ds = $modx->db->query($sql);
while ($row = $modx->db->getRow($ds,’num’)) $dg[$i++]=$row[0];
$_SESSION[’webDocgroups’] = $dg;
// update active users list if redirectinq to another page
if($id!=$modx->documentIdentifier) {
if (getenv("HTTP_CLIENT_IP")) $ip = getenv("HTTP_CLIENT_IP");else if(getenv("HTTP_X_FORWARDED_FOR")) $ip = getenv("HTTP_X_FORWARDED_FOR");else if(getenv("REMOTE_ADDR")) $ip = getenv("REMOTE_ADDR");else $ip = "UNKNOWN";$_SESSION[’ip’] = $ip;
$itemid = isset($_REQUEST[’id’]) ? $_REQUEST[’id’] : ’NULL’ ;$lasthittime = time();$a = 998;
if($a!=1) {
// web users are stored with negative id
$sql = "REPLACE INTO $dbase.".$table_prefix."active_users(internalKey, username, lasthit, action, id, ip) values(-".$_SESSION[’webInternalKey’].", ’".$_SESSION[’webShortname’]."’, ’".$lasthittime."’, ’".$a."’, ’".$itemid."’, ’$ip’)";
if(!$ds = $modx->dbQuery($sql)) {
$output = "error replacing into active users! SQL: ".$sql;
return;
}
}
}
// invoke OnWebLogin event
$modx->invokeEvent("OnWebLogin",
array(
"userid" => $internalKey,
"username" => $username,
"userpassword" => $givenPassword,
"rememberme" => $_POST[’rememberme’]
));
return;
break;
default :
return; // stop here - this is very important.
break;
}
$e = $modx->Event;for me is very usefull.. (going crazi to do and very cut and plaste)
switch ($e->name) {
case "OnManagerLogout":
if ($isLogOut==1){
$internalKey = $_SESSION[’webInternalKey’];
$username = $_SESSION[’webShortname’];
// invoke OnBeforeWebLogout event
$modx->invokeEvent("OnBeforeWebLogout",
array(
"userid" => $internalKey,
"username" => $username
));
// if we were launched from the manager
// do NOT destroy session
if(isset($_SESSION[’mgrValidated’])) {
unset($_SESSION[’webShortname’]);
unset($_SESSION[’webFullname’]);
unset($_SESSION[’webEmail’]);
unset($_SESSION[’webValidated’]);
unset($_SESSION[’webInternalKey’]);
unset($_SESSION[’webValid’]);
unset($_SESSION[’webUser’]);
unset($_SESSION[’webFailedlogins’]);
unset($_SESSION[’webLastlogin’]);
unset($_SESSION[’webnrlogins’]);
unset($_SESSION[’webUsrConfigSet’]);
unset($_SESSION[’webUserGroupNames’]);
unset($_SESSION[’webDocgroups’]);
}
else {
// Unset all of the session variables.
$_SESSION = array();
// destroy session cookie
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), ’’, time()-42000, ’/’);
}
session_destroy();
$sessionID = md5(date(’d-m-Y H:i:s’));
session_id($sessionID);
startCMSSession();
session_destroy();
}
// invoke OnWebLogout event
$modx->invokeEvent("OnWebLogout",
array(
"userid" => $internalKey,
"username" => $username
));
break;
default :
return; // stop here - this is very important.
break;
}
)); break; default : return; // stop here - this is very important. break; }
)); } break; default : return; // stop here - this is very important. break; }
<?php
$e = $modx->Event;
switch ($e->name) {
case "OnManagerLogin":
// put all the code for manager login here
case "OnManagerLogout":
// put all the code for manager logout here
default :
return; // stop here - this is very important so that MODx will continue its own processing.
break;
}
?>
the underlined bit, is this right???? (I want to use for several users, is this a variable or a static string I have to input for only one user?)
$username = heretheusername;
$givenPassword = herethepassword;