Ejemplo n.º 1
0
 public function action_register()
 {
     if (Auth\Auth::check()) {
         Fuel\Core\Session::set_flash('error', 'You cannot register as a user whilst you are logged in.');
         Fuel\Core\Response::redirect('/');
     }
     $val = Fuel\Core\Validation::forge('user_registration_validator');
     // add validation rules
     $val->add('fullname', 'Your fullname')->add_rule('required')->add_rule('min_length', 3)->add_rule('max_length', 255);
     $val->add('password', 'Your password')->add_rule('required')->add_rule('min_length', 5);
     $val->add('confirm_password', 'Confirm password')->add_rule('required');
     if (\Fuel\Core\Input::method() == 'POST') {
         // run validation on POST
         if ($val->run(\Fuel\Core\Input::post())) {
             try {
                 $created = Auth\Auth::create_user(\Fuel\Core\Input::post('username'), \Fuel\Core\Input::post('password'), \Fuel\Core\Input::post('email'), 1, array('fullname' => \Fuel\Core\Input::post('fullname')));
                 if ($created) {
                     Fuel\Core\Session::set_flash('success', 'New account created.');
                     Fuel\Core\Response::redirect('user');
                 } else {
                     Fuel\Core\Session::set_flash('error', 'Registration error: Failed to create account.');
                 }
             } catch (\SimpleUserUpdateException $ex) {
                 // duplicate email address
                 if ($ex->getCode() == 2) {
                     Fuel\Core\Session::set_flash('error', 'Email already exists.');
                 } elseif ($ex->getCode() == 3) {
                     Fuel\Core\Session::set_flash('error', 'Username already exists.');
                 } else {
                     Fuel\Core\Session::set_flash('error', $ex->getMessage());
                 }
             }
         } else {
             // validation failed
             Fuel\Core\Session::set_flash('registration_error', 'Registration error: Invalid user data.');
         }
     }
     $this->template->user_is_admin = $this->check_user_is_admin();
     $this->template->title = 'Register';
     $this->template->content = Fuel\Core\View::forge('user/register', array('val' => $val), false);
 }