v7‰PNG
IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ±üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0AºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT
TwoFactor.php 0000644 00000014465 15210161557 0007202 0 ustar 00 addAdvCheckbox('enable_admin')
->setLabel(___('Enable for Admins'));
$form->addAdvCheckbox('enable_user')
->setLabel(___('Enable for Users'));
}
function needInject()
{
return defined('AM_ADMIN') && AM_ADMIN ?
$this->getConfig('enable_admin') :
$this->getConfig('enable_user');
}
function onGetMemberLinks(Am_Event $e)
{
if ($this->getConfig('enable_user')) {
$e->addReturn(___('Two-Factor Authentication (%s)', $this->isEnabled($e->getUser()) ? ___('Enabled') : ___('Disabled')), $this->getDi()->url($this->getId(),false));
}
}
function onAdminMenu(Am_Event $e)
{
if ($this->getConfig('enable_admin')) {
$m = $e->getMenu()->findOneBy('id', 'configuration');
$m->addPage(array(
'id' => $this->getId(),
'module' => 'default',
'controller' => 'admin-' . $this->getId(),
'action' => 'index',
'label' => ___('2Factor Authentication')
));
}
}
function onAuthControllerHandler(Am_Event $e)
{
if ($this->getSession()->user) {
$e->setReturn(array($this, 'doLogin'));
$e->stop();
}
}
function onAuthControllerHTML(Am_Event $e)
{
if ($this->getSession()->user) {
$form = new Am_Form($this->getId(), array(
'method' => 'post'
));
$fs = $form->addFieldset()
->setLabel('Confirm Your Identity');
$user = trim(sprintf('%s %s (%s)', $this->getSession()->user['name_f'], $this->getSession()->user['name_l'], $this->getSession()->user['login']));
$fs->addStatic()
->setContent(sprintf("
%s
", Am_Html::escape($user)))
->setLabel(___('User'));
$this->_initTwoFactorForm($fs, $this->loadUser($this->getSession()->user));
$btns = $fs->addGroup();
$btns->addSubmit('_submit', array('value' => ___('Confirm')));
$btns->addSubmit('_cancel', array('value' => ___('Cancel')));
$btns->setSeparator(' ');
foreach ($e->getHiddenVars() as $k => $v)
$form->addHidden($k)->setValue($v);
$e->setReturn((string) $form);
$e->stop();
}
}
function onAuthControllerSetUser(Am_Event $e)
{
if (!$this->needInject()) return;
if (!$this->isEnabled($e->getReturn())) return;
if ($this->getSession()->passed)
return;
if (!$this->preauth($e->getReturn(), $e->getIp())) {
$this->getSession()->user = $e->getReturn()->toArray();
$this->getSession()->ip = $e->getIp();
$e->setReturn(null);
$e->stop();
} else {
$this->getSession()->passed = true;
}
}
function onAuthAfterLogout(Am_Event $e)
{
$this->getSession()->unsetAll();
}
function onAuthAdminAfterLogout(Am_Event $e)
{
$this->getSession()->unsetAll();
}
function doLogin(Am_Auth_Abstract $auth, Am_Mvc_Request $r)
{
$post = $r->getPost();
if (isset($post['_cancel'])) {
$this->getSession()->unsetAll();
return new Am_Auth_Result(Am_Auth_Result::AUTH_CONTINUE);
} elseif ($this->isValid($this->loadUser($this->getSession()->user), $r)) {
$this->getSession()->passed = true;
$user = $this->loadUser($this->getSession()->user);
$ip = $this->getSession()->ip;
$e = new Am_Event(Am_Event::AUTH_CONTROLLER_SET_USER, array('ip' => $ip));
$e->setReturn($user);
$this->getDi()->hook->call($e);
if ($user = $e->getReturn()) {
$auth->setUser($user, $ip);
}
unset($this->getSession()->user);
unset($this->getSession()->ip);
return $auth->getUsername() ?
new Am_Auth_Result(Am_Auth_Result::SUCCESS) :
new Am_Auth_Result(Am_Auth_Result::AUTH_CONTINUE);
} else {
return new Am_Auth_Result(Am_Auth_Result::INVALID_INPUT, ___('There is issue with second factor Authentication'));
}
}
function isEnabled(Am_Record $user)
{
return $this->getData($user, 'enabled');
}
function disable(Am_Record $user)
{
$this->setData($user, 'enabled', 0);
$user->save();
}
function enable(Am_Record $user)
{
$this->setData($user, 'enabled', 1);
$user->save();
}
function getSession()
{
$suffix = defined('AM_ADMIN') && AM_ADMIN ? 'Admin' : 'User';
if (!$this->{'session' . $suffix}) {
$this->{'session' . $suffix} = new Zend_Session_Namespace('misc.' . $this->getId() . ".$suffix");
}
return $this->{'session' . $suffix};
}
function loadUser($user)
{
return defined('AM_ADMIN') && AM_ADMIN ?
$this->getDi()->adminTable->load($user['admin_id']) :
$this->getDi()->userTable->load($user['user_id']);
}
function getData(Am_Record $user, $key = null)
{
return $user->data()->get($this->getId() . ($key ? '.' . $key : ''));
}
function setData(Am_Record $user, $key, $val)
{
$user->data()->set($this->getId() . ($key ? '.' . $key : ''), $val);
}
function log($req, $resp, $title)
{
if (!$this->_isDebug)
return;
$l = $this->getDi()->invoiceLogRecord;
$l->paysys_id = $this->getId();
$l->title = $title;
$l->add($req);
$l->add($resp);
}
}