Пример #1
0
 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);
 }
Пример #2
0
 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);
 }