Updated Login to use lnapp, and minor update to Invoice
This commit is contained in:
parent
07de13f678
commit
c1cc6b6f69
@ -34,7 +34,7 @@ class Company {
|
||||
}
|
||||
|
||||
public function admin() {
|
||||
return $this->so->account->name();
|
||||
return $this->so->account;
|
||||
}
|
||||
|
||||
public function address($ln='<br/>') {
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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 -->
|
@ -97,6 +97,10 @@ class Model_Charge extends ORM {
|
||||
return $iio;
|
||||
}
|
||||
|
||||
public function name($variable=NULL) {
|
||||
return StaticList_ItemType::get($this->type);
|
||||
}
|
||||
|
||||
public function namesub($variable=NULL) {
|
||||
return sprintf('%d@%2.2f - %s (%s)',$this->quantity,$this->amount,($this->description ? ' '.$this->description : '').($this->attributes ? ' ['.join('|',$this->attributes).']' : ''),$this->display('date_charge'));
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
<?php
|
||||
echo View::factory('field/date')->set('data',['field'=>'date_charge','value'=>$o->date_charge ? $o->date_charge : time(),'text'=>'Date Charge','enddate'=>'new Date()']);
|
||||
echo View::factory('field/account')->set('data',['field'=>'account_id','value'=>$o->account_id,'text'=>'Account','name'=>sprintf('%s: %s',$o->account->refnum(),$o->account->name()),'ajaxurl'=>URL::link('reseller','charge/ajaxlist')]);
|
||||
echo View::factory('field/account')->set('data',['field'=>'account_id','value'=>$o->account_id,'text'=>'Account','name'=>$o->account_id ? sprintf('%s: %s',$o->account->refnum(),$o->account->name()) : '','ajaxurl'=>URL::link('reseller','charge/ajaxlist')]);
|
||||
echo View::factory('field/select')->set('data',['field'=>'service_id','value'=>$o->account_id ? $o->account->service->list_select() : [],'text'=>'Service','default'=>$o->service_id,'class'=>'col-md-6']);
|
||||
echo View::factory('field/select')->set('data',['field'=>'sweep_type','value'=>Arr::merge([''=>''],StaticList_SweepType::table()),'text'=>'Sweep','default'=>is_null($o->sweep_type) ? 6 : $o->sweep_type,'class'=>'col-md-2']);
|
||||
echo View::factory('field/select')->set('data',['field'=>'type','value'=>Arr::merge([''=>''],StaticList_ItemType::table()),'text'=>'Item Type','default'=>$o->type,'class'=>'col-md-2']);
|
||||
|
@ -185,24 +185,34 @@ class Model_Invoice extends ORM implements Cartable {
|
||||
$result = array();
|
||||
$lo = $this->account->language;
|
||||
|
||||
foreach ($this->subitems() as $iio) {
|
||||
// We only summarise item_type=0
|
||||
if (! $iio->item_type == 0)
|
||||
continue;
|
||||
$track['p'] = $track = array();
|
||||
foreach ($this->items_render() as $key => $items) {
|
||||
switch ($key) {
|
||||
case 's':
|
||||
$last = '';
|
||||
foreach ($items as $iio) {
|
||||
|
||||
if ($iio->product) {
|
||||
$p = $iio->product->name($lo);
|
||||
if ($iio->product) {
|
||||
$p = $iio->title($lo);
|
||||
}
|
||||
|
||||
if (! isset($result[$p])) {
|
||||
$result[$p]['quantity'] = 0;
|
||||
$result[$p]['subtotal'] = 0;
|
||||
}
|
||||
if (! isset($result[$p])) {
|
||||
$result[$p]['quantity'] = 0;
|
||||
$result[$p]['subtotal'] = 0;
|
||||
}
|
||||
|
||||
$result[$p]['quantity']++;
|
||||
$result[$p]['subtotal'] += $iio->subtotal();
|
||||
$result[$p]['quantity']++;
|
||||
$result[$p]['subtotal'] += $iio->subtotal();
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 'other':
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ksort($result);
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
@ -170,6 +170,9 @@ class Model_Invoice_Item extends ORM {
|
||||
if (! $this->isValid())
|
||||
return sprintf('Record Error [%s-%s]',$this->item_type,$this->id);
|
||||
|
||||
if (is_null($variable) OR ! $variable instanceof Model_Language)
|
||||
$variable = Site::language();
|
||||
|
||||
switch ($this->item_type) {
|
||||
case 0:
|
||||
case 2:
|
||||
@ -278,6 +281,25 @@ class Model_Invoice_Item extends ORM {
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function title(Model_Language $lo) {
|
||||
if (! $this->isValid())
|
||||
return 'Record Error';
|
||||
|
||||
switch ($this->item_type) {
|
||||
case 0:
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
return $this->product->name($lo);
|
||||
case 5:
|
||||
return $this->_module()->name($lo);
|
||||
case 124:
|
||||
return StaticList_ItemType::get($this->item_type);
|
||||
default:
|
||||
return 'Unknown';
|
||||
}
|
||||
}
|
||||
|
||||
public function total($format=FALSE) {
|
||||
$result = $this->void ? 0 : $this->subtotal()+$this->tax()-$this->discount();
|
||||
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit a7616960f01f1019ecf2fe041a06af0d67a5e697
|
||||
Subproject commit 2b48dde8f7297e49914e742d85e14783d900902c
|
@ -1,61 +1,56 @@
|
||||
<div class="span11">
|
||||
<fieldset>
|
||||
<legend>SSL CA Certificate Edit/Update</legend>
|
||||
<fieldset class="col-md-12">
|
||||
<legend>SSL CA Certificate Edit/Update</legend>
|
||||
|
||||
<div class="dl-horizontal">
|
||||
<dt>Subject</dt>
|
||||
<dd><?php echo $o->subject(); ?></dd>
|
||||
<div class="dl-horizontal">
|
||||
<dt>Subject</dt>
|
||||
<dd><?php echo $o->subject(); ?></dd>
|
||||
|
||||
<dt>DN</dt>
|
||||
<dd><?php echo $o->dn(); ?></dd>
|
||||
<dt>DN</dt>
|
||||
<dd><?php echo $o->dn(); ?></dd>
|
||||
|
||||
<dt>Serial</dt>
|
||||
<dd><?php echo $o->serial(); ?></dd>
|
||||
<dt>Serial</dt>
|
||||
<dd><?php echo $o->serial(); ?></dd>
|
||||
|
||||
<dt>Subject Key Id</dt>
|
||||
<dd><?php echo $o->ski(); ?></dd>
|
||||
<dt>Subject Key Id</dt>
|
||||
<dd><?php echo $o->ski(); ?></dd>
|
||||
|
||||
<?php if (! $o->isRoot()) : ?>
|
||||
<dt>Issuer</dt>
|
||||
<dd>
|
||||
<?php if ($o->validParent()) : ?>
|
||||
<?php echo HTML::anchor(URL::link('reseller','ssl/edit/').$o->parent_ssl_ca_id,$o->issuer()); ?>
|
||||
<?php else : ?>
|
||||
<?php echo $o->issuer(); ?>
|
||||
<?php endif ?>
|
||||
</dd>
|
||||
<?php if (! $o->isRoot()) : ?>
|
||||
<dt>Issuer</dt>
|
||||
<dd>
|
||||
<?php if ($o->validParent()) : ?>
|
||||
<?php echo HTML::anchor(URL::link('reseller','ssl/edit/').$o->parent_ssl_ca_id,$o->issuer()); ?>
|
||||
<?php else : ?>
|
||||
<?php echo $o->issuer(); ?>
|
||||
<?php endif ?>
|
||||
</dd>
|
||||
|
||||
<dt>Issuer Serial</dt>
|
||||
<dd><?php printf('%s (%s)',$o->aki_keyid(), $o->aki_serial()); ?></dd>
|
||||
<dt>Issuer Serial</dt>
|
||||
<dd><?php printf('%s (%s)',$o->aki_keyid(), $o->aki_serial()); ?></dd>
|
||||
|
||||
<dt>Issuer Valid</dt>
|
||||
<dd><?php echo $o->validParent(TRUE); ?></dd>
|
||||
<?php endif ?>
|
||||
<dt>Issuer Valid</dt>
|
||||
<dd><?php echo $o->validParent(TRUE); ?></dd>
|
||||
<?php endif ?>
|
||||
|
||||
<dt>Valid From</dt>
|
||||
<dd><?php echo $o->valid_from(TRUE); ?></dd>
|
||||
<dt>Valid From</dt>
|
||||
<dd><?php echo $o->valid_from(TRUE); ?></dd>
|
||||
|
||||
<dt>Valid To</dt>
|
||||
<dd><?php echo $o->valid_to(TRUE); ?></dd>
|
||||
<dt>Valid To</dt>
|
||||
<dd><?php echo $o->valid_to(TRUE); ?></dd>
|
||||
|
||||
<dt>Hash</dt>
|
||||
<dd><?php echo $o->hash(); ?></dd>
|
||||
<dt>Hash</dt>
|
||||
<dd><?php echo $o->hash(); ?></dd>
|
||||
|
||||
<dt>Version</dt>
|
||||
<dd><?php echo $o->version(); ?></dd>
|
||||
<dt>Version</dt>
|
||||
<dd><?php echo $o->version(); ?></dd>
|
||||
|
||||
<dt>Key Algorithm<dt>
|
||||
<dd><?php echo $o->algorithm(); ?></dd>
|
||||
</div> <!-- /dl-horizontal -->
|
||||
</fieldset>
|
||||
<dt>Key Algorithm<dt>
|
||||
<dd><?php echo $o->algorithm(); ?></dd>
|
||||
</div> <!-- /dl-horizontal -->
|
||||
|
||||
<?php echo Form::textarea('sign_pk',$o->sign_pk,array('class'=>'span6','label'=>'Private Key','placeholder'=>'Private Key','style'=>'font-family: monospace;','rows'=>Form::textarea_rows($o->sign_pk))); ?>
|
||||
<?php echo Form::textarea('sign_cert',$o->sign_cert,array('class'=>'span6','label'=>'Public Certificate','placeholder'=>'Public Certificate','style'=>'font-family: monospace;','rows'=>Form::textarea_rows($o->sign_cert))); ?>
|
||||
<?php
|
||||
echo View::factory('field/textarea')->set('data',['field'=>'sign_pk','value'=>$o->sign_pk,'text'=>'Private Key']);
|
||||
echo View::factory('field/textarea')->set('data',['field'=>'sign_cert','value'=>$o->sign_cert,'text'=>'Public Certificate']);
|
||||
|
||||
<div class="row">
|
||||
<div class="offset2">
|
||||
<button type="submit" class="btn btn-primary">Save changes</button>
|
||||
<button type="button" class="btn">Cancel</button>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- /span -->
|
||||
echo View::factory('field/submit');
|
||||
?>
|
||||
</fieldset>
|
||||
|
Reference in New Issue
Block a user