예제 #1
0
 public static function createAccount($arguments)
 {
     $hardCode = array("profileID", "ssn");
     $parts = GenericInput::stripInput($arguments[0], $hardCode);
     //print_r($parts[0].'<br>'.$parts[1]);
     $num = intval($parts[0]);
     $parts[0] = $num;
     //print_r(($parts[0]+90).'<br>'.$parts[1]);
     if ($parts[0] < 0) {
         print_r("Error. accountID cannot be smaller or equal to 0<br>");
     } else {
         if ($parts[0] > 999999999) {
             print_r("Error. accountID cannot be that large<br>");
         } else {
             $account = AccountsDB::getAccountsBy('accountID', $parts[0]);
         }
     }
     // print_r($parts[1].'<br>'.$parts[2]);
     if (is_null($account[0])) {
         $param = array();
         $param['accountID'] = $parts[0];
         $param['SSN'] = intval($parts[2]);
         //     print_r(($parts[0]).'*<br>**'.$parts[1].'<br>***'.$parts[2]);
         $ProfileDB = ProfilesDB::getProfileBy('profileID', intval($parts[1]));
         if (!is_null($ProfileDB)) {
             //    print_r($account[0]->getProfileID()."***".$account[0]->getAccountID());
             //      if (is_null($account[0]->getProfileID())){
             $param['profileID'] = $ProfileDB->getProfileID();
             $param['SSN'] = $ProfileDB->getSSN();
             $account = new Account($param);
             AccountsDB::addAccount($account);
             //      }else{
             //              print_r("Error. Bank Account already has owner");
             //      }
         } else {
             //print_r( ($param['SSN']+3).'+<br>');
             $ProfileDB = ProfilesDB::getProfileBy('SSN', $param['SSN']);
             // 	print_r($ProfileDB->getProfileID().'&&<br>');
             if (is_null($ProfileDB)) {
                 $account = new Account($param);
                 //    print_r( $account->getSSN().'+<br>');
                 AccountsDB::addAccountNoOwner($account);
             } else {
                 print_r("ERROR. Profile with that SSN already exists");
             }
         }
     } else {
         print_r("Error. This Bank Account is already created<br>");
     }
 }
예제 #2
0
 public static function changePassword($arguments)
 {
     $hardCode = array("old_password", "new_password");
     $parts = GenericInput::stripInput($arguments[0], $hardCode);
     $email = $parts[0];
     $ProfileDB = ProfilesDB::getProfileBy('email', $parts[0]);
     if (!is_null($ProfileDB)) {
         if ($ProfileDB->getTimeOfTemp() == 0) {
             //	print_r($parts[0]."<br>".$parts[1]."<br>".$parts[2]."<br>");
             if (strcmp($ProfileDB->getPassword(), $parts[1]) == 0) {
                 $ProfileDB->setPassword($parts[2]);
                 ProfilesDB::editProfile($ProfileDB);
                 self::outputMessage(self::CODE_SUCCESS, 'Password Set', 'Password is Set');
             } else {
                 self::outputMessage(self::CODE_BAD_REQUEST, 'Incorrect email/password', 'Passwrod or Email was incorrect. ');
             }
         } else {
             if ($ProfileDB->getTimeOfTemp() > time()) {
                 //print_r(time().'***'.$ProfileDB->getTimeOfTemp());
                 if (strcmp($ProfileDB->getTemp(), $parts[1]) == 0) {
                     $old = new Profile($ProfileDB->getParameters());
                     $ProfileDB->setPassword($parts[2]);
                     $ProfileDB->setTimeOfTemp(0);
                     //print_r($ProfileDB->__toString());
                     ProfilesDB::editProfile($ProfileDB);
                     self::outputMessage(self::CODE_SUCCESS, 'Password Set', 'Password is Set');
                 } else {
                     self::outputMessage(self::CODE_BAD_REQUEST, 'Incorrect email/password', 'Passwrod or Email was Incorrect. ');
                 }
             } else {
                 //	print_r(time().'***'.$ProfileDB->getTimeOfTemp());
                 AccountsDB::deleteAccountsBy('profileID', $ProfileDB->getProfileID());
                 ProfilesDB::deleteProfileBy('email', $parts[0]);
                 self::outputMessage(self::CAUSE_TIME_OUT, 'Password timed out', "Account Exceeded Temporary Password Time. Please Create the Account again.");
             }
         }
     } else {
         self::outputMessage(self::CAUSE_INVALID_ACTION, 'Account not found', 'Invalid Account, Account Not Found');
     }
 }
예제 #3
0
 private static function changePassword($arguments)
 {
     //check input make sure correct
     if (!array_key_exists(0, $arguments) || !isset($_GET['old_password']) || !isset($_GET['new_password'])) {
         self::outputMessage(self::CODE_BAD_REQUEST, 'Missing arguments', 'email,old_password, new_password');
         return;
     }
     $email = $arguments[0];
     //grab the profile by email given --First Argument--
     $matchingProfile = ProfilesDB::getProfileBy('email', $email);
     if (empty($matchingProfile)) {
         self::outputMessage(self::CODE_BAD_REQUEST, 'Member not found', 'A member with the specified email does not exist.');
         return;
     }
     //Change the password
     if ($matchingProfile->getPassword() == $_GET['old_password']) {
         //put the new password in
         $matchingProfile->setPassword($_GET['new_password']);
         //This is for changing the temporary password
         if (!$matchingProfile->getPasswordChanged()) {
             if (time() < strtotime($matchingProfile->getDateCreated()) + 900000) {
                 $matchingProfile->setPasswordChanged(true);
             } else {
                 //The 15 minute expired
                 self::outputMessage(self::CODE_BAD_REQUEST, 'Profile Expired', 'The Profile already exceeded the 15 minute window to change temporary password.');
                 ProfilesDB::deleteProfileBy('email', $email);
                 return;
             }
         }
         //success
         Email::sendEmail($email, 3);
         ProfilesDB::editProfile($matchingProfile);
         self::outputMessage(self::CODE_SUCCESS, 'Password Changed', 'Your password was changed correctly', $matchingProfile);
     } else {
         self::outputMessage(self::CODE_BAD_REQUEST, 'Authorization failed.', 'Incorrect email or password.');
         return;
     }
 }
예제 #4
0
 public function testGetMemberProfileByWithNoResults()
 {
     $profile = ProfilesDB::getProfileBy('email', '*****@*****.**');
     $this->assertNull($profile, 'It should return NULL when an unknown attribute-value pair is provided');
 }
예제 #5
0
 private static function verifyMember()
 {
     if (!isset($_GET['email']) || !isset($_GET['password'])) {
         self::outputMessage(self::CODE_BAD_REQUEST, 'Missing email or password', 'Argument "email" and "password" expected.');
         return false;
     }
     // retreive member data from database
     $profile = ProfilesDB::getProfileBy('email', $_GET['email']);
     if (is_null($profile)) {
         /* TODO modify ProfilesDB to return different values on error and when no matching profile is found, then swap output message below
          * I didn't do it already, because ProfilesDB is used by non-gps-related classes, and I don't want to break them. */
         //             self::outputMessage(self::CODE_INTERNAL_SERVER_ERROR, 'Failed to verify GPS data', 'An internal error occured. Try again later.');
         self::outputMessage(self::CODE_UNAUTHORIZED, 'Authorization failed.', 'Incorrect email or password.');
         return false;
     }
     if (empty($profile->getPassword())) {
         self::outputMessage(self::CODE_UNAUTHORIZED, 'Member password not set.', 'A password must be set before the requested action can be performed.');
         return false;
     }
     // verify
     if ($_GET['password'] !== $profile->getPassword()) {
         self::outputMessage(self::CODE_UNAUTHORIZED, 'Authorization failed.', 'Incorrect email or password.');
         return false;
     }
     return $profile->getProfileID();
 }