public function onAuthTryLogin(Am_Event_AuthTryLogin $event) { if (!$this->getConfig('auto_create')) { return; } //in case several plugins are using auto_create option if ($event->isCreated()) { return; } $login = $event->getLogin(); $isEmail = preg_match('/^.+@.+\\..+$/', $login); $found = !$isEmail ? $this->getTable()->findFirstByLogin($login) : $this->getTable()->findFirstByEmail($login); /* @var $found Am_Record */ if (!$found || !$this->canLogin($found)) { return; } // now create fake user for checkPassword $user = $this->getDi()->userTable->createRecord(); if ($isEmail) { $user->email = $login; } else { $user->login = $login; } $user->toggleFrozen(true); if (!$this->getTable()->checkPassword($found, $user, $event->getPassword())) { return; } // all checked, now create user in aMember $user = $this->getDi()->userRecord; $this->getTable()->createAmember($user, $found); if (!$user->login) { $this->skipCheckUniqLogin = true; $user->generateLogin(); $this->skipCheckUniqLogin = false; } $user->setPass($event->getPassword()); $user->insert(); if ($p_b = $this->getConfig('auto_create_billing_plan')) { try { if ($p_b == -1) { if ($this->canAutoCreateFromGroups()) { $arr = array(); foreach ($this->getConfig() as $k => $v) { if (preg_match("/^auto_create_bpgroups_(.*)/", $k, $m)) { $arr[$m[1]] = $v; } } $arr_keys = array_keys($arr); foreach ($this->getTable()->getGroups($found) as $gr_id) { if (in_array($gr_id, $arr_keys)) { $access = $this->addAccessAfterCreate($arr[$gr_id], $user); } } } } else { $access = $this->addAccessAfterCreate($p_b, $user); } // send 1-day autoresponders if supposed to $this->getDi()->emailTemplateTable->sendZeroAutoresponders($user, $access); } catch (Exception $e) { //just log $this->getDi()->errorLogTable->logException($e); } } $event->setCreated($user); }
public function onAuthTryLogin(Am_Event_AuthTryLogin $event) { if (!$this->getConfig('auto_create')) { return; } $login = $event->getLogin(); $isEmail = preg_match('/^.+@.+\\..+$/', $login); $found = !$isEmail ? $this->getTable()->findFirstByLogin($login) : $this->getTable()->findFirstByEmail($login); /* @var $found Am_Record */ if (!$found || !$this->canLogin($found)) { return; } // now create fake user for checkPassword $user = $this->getDi()->userTable->createRecord(); if ($isEmail) { $user->email = $login; } else { $user->login = $login; } $user->toggleFrozen(true); if (!$this->getTable()->checkPassword($found, $user, $event->getPassword())) { return; } // all checked, now create user in aMember $user = $this->getDi()->userRecord; $this->getTable()->createAmember($user, $found); if (!$user->login) { $this->skipCheckUniqLogin = true; $user->generateLogin(); $this->skipCheckUniqLogin = false; } $user->setPass($event->getPassword()); $user->insert(); $event->setCreated($user); }