logged_in()!= 0) { // Redirect to the user account HTTP::redirect('welcome/index'); } // Instantiate a new user $account = ORM::factory('Account'); // If there is a post and $_POST is not empty if ($_POST) { // Check Auth $status = $account->values($_POST)->check(); if (! $status) { foreach ($account->validation()->errors('form/register') as $f => $r) { // $r[0] has our reason for validation failure switch ($r[0]) { // Generic validation reason default: SystemMessage::add(array( 'title'=>_('Validation failed'), 'type'=>'error', 'body'=>sprintf(_('The defaults on your submission were not valid for field %s (%s).'),$f,$r) )); } } } $ido = ORM::factory('Module') ->where('name','=','account') ->find(); $account->id = $ido->record_id->next_id($ido->id); // Save the user details if ($account->save()) {} } SystemMessage::add(array( 'title'=>_('Already have an account?'), 'type'=>'info', 'body'=>_('If you already have an account, please login..') )); Block::add(array( 'title'=>_('Register'), 'body'=>View::factory('register') ->set('account',$account) ->set('errors',$account->validation()->errors('form/register')), )); $this->template->left = HTML::anchor('login','Login').'...'; } /** * Enable user password reset */ public function action_reset() { // Minutes to keep our token $token_expire = 15; // If user already signed-in if (Auth::instance()->logged_in()!= 0) { // Redirect to the user account HTTP::redirect('welcome/index'); } // If the user posted their details to reset their password if ($_POST) { // If the username is correct, create a method token if (! empty($_POST['username']) AND ($ao=ORM::factory('Account',array('username'=>$_POST['username']))) AND $ao->loaded()) { $mmto = ORM::factory('Module_Method_Token') ->method(array('account','user_resetpassword')) ->account($ao) ->uses(2) ->expire(time()+$token_expire*60); if ($mmto->generate()) { // Send our email with the token // @todo Need to provide an option if Email_Template is not installed/activited. // @todo Need to provide an option if account_reset_password template doesnt exist. $et = Email_Template::instance('account_reset_password'); $et->to = array('account'=>array($mmto->account_id)); $et->variables = array( 'SITE'=>URL::base(TRUE,TRUE), 'SITE_ADMIN'=>Config::sitename(), 'SITE_NAME'=>Config::sitename(), 'TOKEN'=>$mmto->token, 'TOKEN_EXPIRE_MIN'=>$token_expire, 'USER_NAME'=>sprintf('%s %s',$mmto->account->first_name,$mmto->account->last_name), ); $et->send(); // Log the password reset $ao->log('Password reset token sent'); } // Redirect to our password reset, the Auth will validate the token. } elseif (! empty($_REQUEST['token'])) { HTTP::redirect(sprintf('user/account/resetpassword?token=%s',$_REQUEST['token'])); } // Show our token screen even if the email was invalid. if (isset($_POST['username'])) Block::add(array( 'title'=>_('Reset your password'), 'body'=>View::factory('login_reset_sent'), 'style'=>array('css/login.css'=>'screen'), )); else HTTP::redirect('login'); } else { Block::add(array( 'title'=>_('Reset your password'), 'body'=>View::factory('login_reset'), 'style'=>array('css/login.css'=>'screen'), )); } } } ?>