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); }