예제 #1
0
 public function indexAction()
 {
     if (!$_POST) {
         $this->forceSecure();
     }
     $form = new \FA\Form($this->current_module_config->forms->register);
     if ($_POST && $form->isValid($_POST)) {
         $data = $form->getValues();
         // Always make the e-mails lower case.
         $data['email'] = mb_strtolower($data['email'], 'UTF-8');
         $data['email2'] = mb_strtolower($data['email2'], 'UTF-8');
         // Validate length, format, used status of the username.
         $status = $this->_checkUsername($data['username']);
         if (!$status['valid']) {
             $form->addError('username', $status['message']);
         }
         // Validate e-mail address against junk providers.
         $fa_settings = $this->di->get('fa')->settings;
         $blocked_providers = explode("\n", str_replace("\r", '', $fa_settings['Junk_Email_Providers']));
         foreach ($blocked_providers as $provider) {
             $provider = trim(strtolower($provider));
             if (!empty($provider) && strpos(strtolower($data['email']), $provider) !== FALSE) {
                 $form->addError('email', 'The use of disposable e-mail addresses or e-mail forwarders has been disabled. Please use your real e-mail address.');
                 break;
             }
         }
         // Check if e-mail address uses a common "spam e-mail" pattern.
         // f4nknve3@f4nknve3.dafa88.mobi
         $spam_email_regex = '/^([a-z0-9]{8})@\\1\\./';
         if (preg_match($spam_email_regex, $data['email'])) {
             $form->addError('email', 'The use of disposable e-mail addresses or e-mail forwarders has been disabled. Please use your real e-mail address.');
         }
         // Validation successful, send e-mail
         if (!$form->hasErrors()) {
             $rr = new RegistrationRequest();
             $rr->username = $data['username'];
             $rr->email = $data['email'];
             $rr->save();
             $confirmation_code = $rr->confirmation_code;
             \FA\Messenger::send(array('to' => $data['email'], 'subject' => 'Verify Your FurAffinity Account', 'template' => 'account_registration', 'vars' => array('form_data' => $data, 'confirmation_code' => $confirmation_code)));
             $this->view->email = $data['email'];
             return $this->view->pick('register/confirm');
         }
     }
     $this->view->title = 'Register New Account';
     return $this->renderForm($form);
 }
예제 #2
0
 public function indexAction()
 {
     $form = new \FA\Form($this->current_module_config->forms->recover);
     if ($_POST && $form->isValid($_POST)) {
         $data = $form->getValues();
         $data['email'] = mb_strtolower($data['email'], 'UTF-8');
         $user = User::getRepository()->findOneBy(array('username' => $data['username'], 'email' => $data['email']));
         if ($user instanceof User) {
             $user->lostpw = \FA\Legacy\Utilities::uuid();
             $user->save();
             \FA\Messenger::send(array('to' => $user->email, 'subject' => 'Password Recovery Code', 'template' => 'account_recover', 'vars' => array('id' => $user->id, 'code' => $user->lostpw)));
             $this->alert('<b>A password recovery link has been sent to your e-mail address.</b><br>Click the link in the e-mail to reset your password.', 'green');
             return $this->redirectHome();
         } else {
             $form->addError('username', 'We could not locate an account with this username and e-mail address in our system. Please try again!');
         }
     }
     $this->view->setVar('title', 'Forgot My Password');
     return $this->renderForm($form);
 }