fix sending from non dataobject source
[Pman.Base] / Pman / Login.php
index 861f49b..6a20063 100644 (file)
@@ -47,7 +47,7 @@ class Pman_Login extends Pman
     {
         $this->initErrorHandling();
         
-         //DB_DataObject::DebugLevel(1);
+         // DB_DataObject::DebugLevel(5);
         if (!empty($_REQUEST['logout'])) {
            return $this->logout();
         }
@@ -234,7 +234,7 @@ class Pman_Login extends Pman
         if(!$u->loginPublic()){
             $this->jerr('Switch fail');
         }
-        
+         
         $this->jok('OK');
     }
     
@@ -252,6 +252,12 @@ class Pman_Login extends Pman
         if (!empty($_REQUEST['logout'])) {
            return $this->logout();
         }
+         
+        if(!empty($_REQUEST['check_owner_company'])) {
+            $core_company = DB_DataObject::factory('core_company');
+            $core_company->comptype = 'OWNER';
+            $this->jok($core_company->count());
+        }
         
         if (!empty($_REQUEST['passwordRequest'])) { //|| (strpos($_REQUEST['username'], '@') < 1)) {
             return $this->passwordRequest($_REQUEST['passwordRequest']);   
@@ -281,7 +287,8 @@ class Pman_Login extends Pman
                $this->jerr("Invalid request to reset password");
            }
            
-           $this->verifyCheckSum($_REQUEST['id'], $_REQUEST['ts'], $_REQUEST['key']);
+           $this->verifyResetPassword($_REQUEST['id'], $_REQUEST['ts'], $_REQUEST['key']);
+           $this->jok("Checksum is ok");
        }
        
        // this is 'classic' change password...
@@ -310,7 +317,9 @@ class Pman_Login extends Pman
             }
         }
         
-        //$u->active = 1;
+       // this was removed before - not quite sure why.
+       // when a duplicate login account is created, this stops the old one from interfering..
+        $u->active = 1;
         
         // empty username = not really a hacking attempt.
         
@@ -326,12 +335,12 @@ class Pman_Login extends Pman
             exit;
         }
         
-        if (!$u->active()) {
+        if (!$u->active()) { 
             $this->jerror('LOGIN-BAD','Account disabled');
         }
         
         if(!empty($u->oath_key) && empty($_REQUEST['oath_password'])){
-            $this->jerror('LOGIN-BAD','Your account requires Two-Factor Authentication');
+            $this->jerror('LOGIN-2FA','Your account requires Two-Factor Authentication');
         }
         
         // check if config allows non-owner passwords.
@@ -405,9 +414,11 @@ class Pman_Login extends Pman
         // sort out sender.
         $cm = DB_DataObject::factory('core_email');
         if (!$cm->get('name', 'ADMIN_PASSWORD_RESET')) {
-            $this->jerr("no template ADMIN_PASSWORD_RESET exists - please run importer ");
-            
+            $this->jerr("no template  Admin password reset (ADMIN_PASSWORD_RESET) exists - please run importer ");
         }
+       if (!$cm->active) {
+           $this->jerr("template for Admin password reset has been disabled");
+       }
         /*
         
         $g = DB_DAtaObject::factory('Groups');
@@ -451,7 +462,7 @@ class Pman_Login extends Pman
         $sent = $mailer->send();
        if (is_a($sent,'PEAR_Error') ) {
            $this->addEvent('SYSERR',false, $sent->getMessage());
-            $this->jerr($ret->getMessage());
+            $this->jerr($sent->getMessage());
         }
        
         $this->addEvent('PASSREQ',$u, $u->email);
@@ -465,6 +476,7 @@ class Pman_Login extends Pman
     function verifyResetPassword($id,$t, $key)
     {
        $au = $this->getAuthUser();
+       print_R($au);
         if ($au) {
             $this->jerr( "Already Logged in - no need to use Password Reset");
         }
@@ -478,7 +490,7 @@ class Pman_Login extends Pman
         
         // validate key.. 
         if ($key != $u->genPassKey($t)) {
-            $this->jerr("Password reset link is not valid ($key)");
+            $this->jerr("Password reset link is not valid (key)");
         }
        
        if ($t < strtotime("NOW - 1 DAY")) {
@@ -494,26 +506,8 @@ class Pman_Login extends Pman
     function resetPassword($id,$t, $key, $newpass )
     {
         
-        $au = $this->getAuthUser();
-        if ($au) {
-            $this->jerr( "Already Logged in - no need to use Password Reset");
-        }
-        
-        $u = DB_DataObject::factory('core_person');
-        //$u->company_id = $this->company->id;
-        $u->active = 1;
-        if (!$u->get($id) || !strlen($u->passwd)) {
-            $this->jerr("Password reset link is not valid (id)");
-        }
-        
-        // validate key.. 
-        if ($key != $u->genPassKey($t)) {
-            $this->jerr("Password reset link is not valid ($key)");
-        }
+        $u = $this->verifyResetPassword($id,$t,$key);
        
-       if ($t < strtotime("NOW - 1 DAY")) {
-            $this->jerr("Password reset link has expired");
-        }
        
         $uu = clone($u);
         $u->no_reset_sent = 0;
@@ -521,7 +515,8 @@ class Pman_Login extends Pman
            $u->setPassword($newpass);
        }
         $u->update($uu);
-        $u->login();
+       $this->addEvent("CHANGEPASS", $u);
+
         $this->jok("Password has been Updated");
     }
     
@@ -589,22 +584,22 @@ class Pman_Login extends Pman
             
             $core_ip_access->sendXMPP();
             
-            $this->jerr('NEW-IP-ADDRESS', array('ip' => $ip));
+            $this->jerror('NEW-IP-ADDRESS', "New IP Address = needs approving", array('ip' => $ip));
             
             return;
         }
         
         if(empty($core_ip_access->status)){
-            $this->jerr('PENDING-IP-ADDRESS', array('ip' => $ip));
+            $this->jerror('PENDING-IP-ADDRESS', "IP is still pending approval", array('ip' => $ip));
         }
         
         if($core_ip_access->status == -1){
-            $this->jerr('BLOCKED-IP-ADDRESS', array('ip' => $ip));
+            $this->jerror('BLOCKED-IP-ADDRESS', "Your IP is blocked", array('ip' => $ip));
             return;
         }
         
         if($core_ip_access->status == -2 && strtotime($core_ip_access->expire_dt) < strtotime('NOW')){
-            $this->jerr('BLOCKED-IP-ADDRESS', array('ip' => $ip));
+            $this->jerrpr('BLOCKED-IP-ADDRESS', "Your IP is blocked", array('ip' => $ip));
             return;
         }