예제 #1
0
 public function action_index()
 {
     // load language
     \Lang::load('account');
     // load config from db.
     $cfg_values = array('member_allow_register', 'member_verification');
     $config = \Model_Config::getvalues($cfg_values);
     $output['config'] = $config;
     unset($cfg_values);
     // pre-set form values
     $output['account_username'] = null;
     $output['account_email'] = null;
     $output['account_password'] = null;
     $output['account_confirm_password'] = null;
     $output['captcha'] = null;
     if (\Input::method() == 'POST' && $config['member_allow_register']['value'] == '1') {
         // store data to array for send to model with add/register method.
         $data['account_username'] = trim(\Input::post('account_username'));
         $data['account_display_name'] = \Security::htmlentities($data['account_username']);
         $data['account_email'] = \Security::strip_tags(trim(\Input::post('account_email')));
         $data['account_password'] = trim(\Input::post('account_password'));
         // validate form.
         $validate = \Validation::forge();
         $validate->add_callable(new \Extension\FsValidate());
         $validate->add('account_username', \Lang::get('account_username'), array(), array('required', 'noSpaceBetweenText'));
         $validate->add('account_email', \Lang::get('account_email'), array(), array('required', 'valid_email'));
         $validate->add('account_password', \Lang::get('account_password'), array(), array('required'));
         $validate->add('account_confirm_password', \Lang::get('account_confirm_password'), array(), array('required'))->add_rule('match_field', 'account_password');
         if (!\Extension\NoCsrf::check()) {
             // validate token failed
             $output['form_status'] = 'error';
             $output['form_status_message'] = \Lang::get('fslang_invalid_csrf_token');
         } elseif (!$validate->run()) {
             // validate failed
             $output['form_status'] = 'error';
             $output['form_status_message'] = $validate->show_errors();
         } else {
             // validate pass
             include APPPATH . 'vendor' . DS . 'securimage' . DS . 'securimage.php';
             $securimage = new \Securimage();
             if ($securimage->check(\Input::post('captcha')) == false) {
                 $output['form_status'] = 'error';
                 $output['form_status_message'] = \Lang::get('account_wrong_captcha_code');
             } else {
                 $continue_register = true;
             }
             // if captcha pass
             if (isset($continue_register) && $continue_register === true) {
                 // register action
                 $result = \Model_Accounts::registerAccount($data);
                 if ($result === true) {
                     $output['hide_register_form'] = true;
                     // if member verification is need, show those message. if no need, just show success message.
                     if ($config['member_verification']['value'] == '0') {
                         $output['form_status'] = 'success';
                         $output['form_status_message'] = \Lang::get('account_registration_complted');
                     } elseif ($config['member_verification']['value'] == '1') {
                         $output['form_status'] = 'success';
                         $output['form_status_message'] = \Lang::get('account_registration_completed_need_confirm');
                     } elseif ($config['member_verification']['value'] == '2') {
                         $output['form_status'] = 'success';
                         $output['form_status_message'] = \Lang::get('account_registration_completed_need_admin_verify');
                     }
                 } else {
                     $output['form_status'] = 'error';
                     $output['form_status_message'] = $result;
                 }
             }
         }
         // re-populate form
         $output['account_username'] = trim(\Input::post('account_username'));
         $output['account_email'] = trim(\Input::post('account_email'));
         //$output['account_password'] = trim(\Input::post('account_password'));
         //$output['account_confirm_password'] = trim(\Input::post('account_confirm_password'));
         //$output['captcha'] = \Input::post('captcha');
     }
     // <head> output ----------------------------------------------------------------------------------------------
     $output['page_title'] = $this->generateTitle(\Lang::get('account_register'));
     // <head> output ----------------------------------------------------------------------------------------------
     return $this->generatePage('front/templates/account/register_v', $output, false);
 }