Updated Login to use lnapp, and minor update to Invoice

This commit is contained in:
Deon George
2016-08-17 22:30:12 +10:00
parent 07de13f678
commit c1cc6b6f69
10 changed files with 107 additions and 148 deletions

View File

@@ -34,7 +34,7 @@ class Company {
}
public function admin() {
return $this->so->account->name();
return $this->so->account;
}
public function address($ln='<br/>') {

View File

@@ -11,6 +11,8 @@
* @also [logout]
*/
class Controller_Login extends lnApp_Controller_Login {
protected $login_attribute = 'username';
/**
* Enable site registration
*
@@ -23,70 +25,5 @@ class Controller_Login extends lnApp_Controller_Login {
HTTP::redirect('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())
HTTP::redirect('welcome/index');
// If the user posted their details to reset their password
if ($this->request->post()) {
// If the username is correct, create a method token
if ($this->request->post('username') AND ($ao=ORM::factory('Account',array('username'=>$this->request->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'=>Company::instance()->admin(),
'SITE_NAME'=>Company::instance()->name(),
'TOKEN'=>$mmto->token,
'TOKEN_EXPIRE_MIN'=>$token_expire,
'USER_NAME'=>$mmto->account->namesub(),
);
$et->send();
// Log the password reset
$ao->log('Password reset token sent');
}
// Redirect to our password reset, the Auth will validate the token.
} elseif ($this->request->query('token')) {
HTTP::redirect(URL::link('user','account/resetpassword?token='.$this->request->query('token')));
}
// Show our token screen even if the email was invalid.
if ($this->request->post('username'))
$output = View::factory('pages/login_reset_sent');
else
HTTP::redirect('login');
} else {
$output = View::factory('pages/login_reset');
}
Style::factory()
->type('file')
->data('media/theme/baseadmin/css/pages/login.css');
$this->template->content = $output;
$this->template->shownavbar = FALSE;
}
}
?>

View File

@@ -127,6 +127,18 @@ class Model_Account extends lnApp_Model_Account {
return $sk.sprintf('%s %s',$this->last_name,$this->first_name);
}
/**
* Generate a token for non-login authorised functinos
*/
public function token($token_expire,$module,$method,$uses) {
return ORM::factory('Module_Method_Token')
->method(array($module,$method))
->account($this)
->uses($uses)
->expire(time()+$token_expire*60)
->generate();
}
/**
* Search for accounts matching a term
*/

View File

@@ -1,21 +0,0 @@
<div class="account-container stacked">
<div class="content clearfix">
<form method="post" action="<?php echo URL::site('login/reset'); ?>">
<h1>Reset Password</h1>
<p>If you have forgotten your password, we can issue you a temporary access code via email that will allow you to change your password.</p>
<div class="login-fields">
<p>To start this process, please enter your Username. If you dont know your Username, please contact us.</p>
<div class="field">
<label for="username">Username:</label>
<input type="text" id="username" name="username" value="" placeholder="Username" class="login username-field" required/>
</div> <!-- /field -->
</div> <!-- /login-fields -->
<div class="login-actions">
<button class="button btn btn-warning btn-large">Reset</button>
</div> <!-- /login-actions -->
</form>
</div> <!-- /content -->
</div> <!-- /account-container -->