public function xSecuritySaveAction() { $this->request->defineParams(array('password' => array('type' => 'string', 'validator' => array(Scalr_Validator::NOEMPTY => true)), 'cpassword' => array('type' => 'string', 'validator' => array(Scalr_Validator::NOEMPTY => true)))); $this->request->validate(); if ($this->getParam('password') != $this->getParam('cpassword')) { $this->request->addValidationErrors('cpassword', 'Two passwords are not equal'); } $subnets = array(); $whitelist = trim($this->getParam('security_ip_whitelist')); if ($whitelist) { $whitelist = explode(',', $whitelist); foreach ($whitelist as $mask) { $sub = Scalr_Util_Network::convertMaskToSubnet($mask); if ($sub) { $subnets[] = $sub; } else { $this->request->addValidationErrors('security_ip_whitelist', sprintf('Not valid mask: %s', $mask)); } } } if (count($subnets) && !Scalr_Util_Network::isIpInSubnets($this->request->getRemoteAddr(), $subnets)) { $this->request->addValidationErrors('security_ip_whitelist', 'New IP access whitelist doesn\'t correspond your current IP address'); } if ($this->request->isValid()) { $updateSession = false; if ($this->getParam('password') != '******') { $this->user->updatePassword($this->getParam('password')); $updateSession = true; } $this->user->setVar(Scalr_Account_User::VAR_SECURITY_IP_WHITELIST, count($subnets) ? serialize($subnets) : ''); $this->user->save(); if ($updateSession) { Scalr_Session::create($this->user->getId()); } $this->response->success('Secuity settings successfully updated'); } else { $this->response->failure(); $this->response->data($this->request->getValidationErrors()); } }
public function Run() { $container = Scalr::getContainer(); $db = $container->adodb; $time = microtime(true); $rows = $db->GetAll('SELECT * FROM account_user_settings WHERE name = ? AND value != ""', array(Scalr_Account_User::SETTING_SECURITY_IP_WHITELIST)); foreach ($rows as $row) { $value = explode(',', $row['value']); $result = array(); foreach ($value as $v) { $vC = Scalr_Util_Network::convertMaskToSubnet($v); if ($vC) { $result[] = $vC; } } $val = serialize($result); $db->Execute('INSERT INTO account_user_vars (user_id, name, value) VALUES(?,?,?)', array($row['user_id'], Scalr_Account_User::VAR_SECURITY_IP_WHITELIST, $val)); } print "Done.\n"; $t = round(microtime(true) - $time, 2); printf("Upgrade process took %0.2f seconds\n\n", $t); }
/** * @param $password * @param $cpassword * @param $securityIpWhitelist */ public function xSecuritySaveAction($password, $cpassword, $securityIpWhitelist) { $validator = new Validator(); $validator->validate($password, 'password', Validator::NOEMPTY); $validator->validate($cpassword, 'cpassword', Validator::NOEMPTY); $validator->addErrorIf($password && $cpassword && $password != $cpassword, ['password', 'cpassword'], 'Two passwords are not equal'); $subnets = array(); $securityIpWhitelist = trim($securityIpWhitelist); if ($securityIpWhitelist) { $whitelist = explode(',', $securityIpWhitelist); foreach ($whitelist as $mask) { $sub = Scalr_Util_Network::convertMaskToSubnet($mask); if ($sub) { $subnets[] = $sub; } else { $validator->addError('securityIpWhitelist', sprintf('Not valid mask: %s', $mask)); } } } if (count($subnets) && !Scalr_Util_Network::isIpInSubnets($this->request->getRemoteAddr(), $subnets)) { $validator->addError('securityIpWhitelist', 'New IP access whitelist doesn\'t correspond your current IP address'); } if ($validator->isValid($this->response)) { $updateSession = false; if ($password != '******') { $this->user->updatePassword($password); $updateSession = true; } $this->user->setVar(Scalr_Account_User::VAR_SECURITY_IP_WHITELIST, count($subnets) ? serialize($subnets) : ''); $this->user->save(); if ($updateSession) { Scalr_Session::create($this->user->getId()); } $this->response->success('Security settings successfully updated'); } }
/** * @param RawData $password * @param RawData $cpassword * @param $securityIpWhitelist * @param RawData $currentPassword optional */ public function xSecuritySaveAction(RawData $password, RawData $cpassword, $securityIpWhitelist, RawData $currentPassword = null) { $validator = new Validator(); if ($password != '******') { $validator->addErrorIf(!$this->user->checkPassword($currentPassword), ['currentPassword'], 'Invalid password'); } $validator->validate($password, 'password', Validator::NOEMPTY); $validator->validate($cpassword, 'cpassword', Validator::NOEMPTY); $validator->addErrorIf($password && $cpassword && $password != $cpassword, ['password', 'cpassword'], 'Two passwords are not equal'); $subnets = array(); $securityIpWhitelist = trim($securityIpWhitelist); if ($securityIpWhitelist) { $whitelist = explode(',', $securityIpWhitelist); foreach ($whitelist as $mask) { $sub = Scalr_Util_Network::convertMaskToSubnet($mask); if ($sub) { $subnets[] = $sub; } else { $validator->addError('securityIpWhitelist', sprintf('Not valid mask: %s', $mask)); } } } if (count($subnets) && !Scalr_Util_Network::isIpInSubnets($this->request->getRemoteAddr(), $subnets)) { $validator->addError('securityIpWhitelist', 'New IP access whitelist doesn\'t correspond your current IP address'); } if ($validator->isValid($this->response)) { $updateSession = false; if ($password != '******') { $this->user->updatePassword($password); $updateSession = true; // Send notification E-mail $this->getContainer()->mailer->sendTemplate(SCALR_TEMPLATES_PATH . '/emails/password_change_notification.eml', array('{{fullname}}' => $this->user->fullname ? $this->user->fullname : $this->user->getEmail()), $this->user->getEmail(), $this->user->fullname); } $this->user->setVar(Scalr_Account_User::VAR_SECURITY_IP_WHITELIST, count($subnets) ? serialize($subnets) : ''); $this->user->save(); if ($updateSession) { Scalr_Session::create($this->user->getId()); $this->response->data(['specialToken' => Scalr_Session::getInstance()->getToken()]); } $this->response->success('Security settings successfully updated'); } }