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() {
|
public function admin() {
|
||||||
return $this->so->account->name();
|
return $this->so->account;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function address($ln='<br/>') {
|
public function address($ln='<br/>') {
|
||||||
|
@ -11,6 +11,8 @@
|
|||||||
* @also [logout]
|
* @also [logout]
|
||||||
*/
|
*/
|
||||||
class Controller_Login extends lnApp_Controller_Login {
|
class Controller_Login extends lnApp_Controller_Login {
|
||||||
|
protected $login_attribute = 'username';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enable site registration
|
* Enable site registration
|
||||||
*
|
*
|
||||||
@ -23,70 +25,5 @@ class Controller_Login extends lnApp_Controller_Login {
|
|||||||
|
|
||||||
HTTP::redirect('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);
|
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
|
* 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;
|
return $iio;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function name($variable=NULL) {
|
||||||
|
return StaticList_ItemType::get($this->type);
|
||||||
|
}
|
||||||
|
|
||||||
public function namesub($variable=NULL) {
|
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'));
|
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
|
<?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/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'=>'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'=>'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']);
|
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();
|
$result = array();
|
||||||
$lo = $this->account->language;
|
$lo = $this->account->language;
|
||||||
|
|
||||||
foreach ($this->subitems() as $iio) {
|
$track['p'] = $track = array();
|
||||||
// We only summarise item_type=0
|
foreach ($this->items_render() as $key => $items) {
|
||||||
if (! $iio->item_type == 0)
|
switch ($key) {
|
||||||
continue;
|
case 's':
|
||||||
|
$last = '';
|
||||||
|
foreach ($items as $iio) {
|
||||||
|
|
||||||
if ($iio->product) {
|
if ($iio->product) {
|
||||||
$p = $iio->product->name($lo);
|
$p = $iio->title($lo);
|
||||||
|
}
|
||||||
|
|
||||||
if (! isset($result[$p])) {
|
if (! isset($result[$p])) {
|
||||||
$result[$p]['quantity'] = 0;
|
$result[$p]['quantity'] = 0;
|
||||||
$result[$p]['subtotal'] = 0;
|
$result[$p]['subtotal'] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
$result[$p]['quantity']++;
|
$result[$p]['quantity']++;
|
||||||
$result[$p]['subtotal'] += $iio->subtotal();
|
$result[$p]['subtotal'] += $iio->subtotal();
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'other':
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ksort($result);
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -170,6 +170,9 @@ class Model_Invoice_Item extends ORM {
|
|||||||
if (! $this->isValid())
|
if (! $this->isValid())
|
||||||
return sprintf('Record Error [%s-%s]',$this->item_type,$this->id);
|
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) {
|
switch ($this->item_type) {
|
||||||
case 0:
|
case 0:
|
||||||
case 2:
|
case 2:
|
||||||
@ -278,6 +281,25 @@ class Model_Invoice_Item extends ORM {
|
|||||||
return $result;
|
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) {
|
public function total($format=FALSE) {
|
||||||
$result = $this->void ? 0 : $this->subtotal()+$this->tax()-$this->discount();
|
$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 class="col-md-12">
|
||||||
<fieldset>
|
<legend>SSL CA Certificate Edit/Update</legend>
|
||||||
<legend>SSL CA Certificate Edit/Update</legend>
|
|
||||||
|
|
||||||
<div class="dl-horizontal">
|
<div class="dl-horizontal">
|
||||||
<dt>Subject</dt>
|
<dt>Subject</dt>
|
||||||
<dd><?php echo $o->subject(); ?></dd>
|
<dd><?php echo $o->subject(); ?></dd>
|
||||||
|
|
||||||
<dt>DN</dt>
|
<dt>DN</dt>
|
||||||
<dd><?php echo $o->dn(); ?></dd>
|
<dd><?php echo $o->dn(); ?></dd>
|
||||||
|
|
||||||
<dt>Serial</dt>
|
<dt>Serial</dt>
|
||||||
<dd><?php echo $o->serial(); ?></dd>
|
<dd><?php echo $o->serial(); ?></dd>
|
||||||
|
|
||||||
<dt>Subject Key Id</dt>
|
<dt>Subject Key Id</dt>
|
||||||
<dd><?php echo $o->ski(); ?></dd>
|
<dd><?php echo $o->ski(); ?></dd>
|
||||||
|
|
||||||
<?php if (! $o->isRoot()) : ?>
|
<?php if (! $o->isRoot()) : ?>
|
||||||
<dt>Issuer</dt>
|
<dt>Issuer</dt>
|
||||||
<dd>
|
<dd>
|
||||||
<?php if ($o->validParent()) : ?>
|
<?php if ($o->validParent()) : ?>
|
||||||
<?php echo HTML::anchor(URL::link('reseller','ssl/edit/').$o->parent_ssl_ca_id,$o->issuer()); ?>
|
<?php echo HTML::anchor(URL::link('reseller','ssl/edit/').$o->parent_ssl_ca_id,$o->issuer()); ?>
|
||||||
<?php else : ?>
|
<?php else : ?>
|
||||||
<?php echo $o->issuer(); ?>
|
<?php echo $o->issuer(); ?>
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
</dd>
|
</dd>
|
||||||
|
|
||||||
<dt>Issuer Serial</dt>
|
<dt>Issuer Serial</dt>
|
||||||
<dd><?php printf('%s (%s)',$o->aki_keyid(), $o->aki_serial()); ?></dd>
|
<dd><?php printf('%s (%s)',$o->aki_keyid(), $o->aki_serial()); ?></dd>
|
||||||
|
|
||||||
<dt>Issuer Valid</dt>
|
<dt>Issuer Valid</dt>
|
||||||
<dd><?php echo $o->validParent(TRUE); ?></dd>
|
<dd><?php echo $o->validParent(TRUE); ?></dd>
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
|
|
||||||
<dt>Valid From</dt>
|
<dt>Valid From</dt>
|
||||||
<dd><?php echo $o->valid_from(TRUE); ?></dd>
|
<dd><?php echo $o->valid_from(TRUE); ?></dd>
|
||||||
|
|
||||||
<dt>Valid To</dt>
|
<dt>Valid To</dt>
|
||||||
<dd><?php echo $o->valid_to(TRUE); ?></dd>
|
<dd><?php echo $o->valid_to(TRUE); ?></dd>
|
||||||
|
|
||||||
<dt>Hash</dt>
|
<dt>Hash</dt>
|
||||||
<dd><?php echo $o->hash(); ?></dd>
|
<dd><?php echo $o->hash(); ?></dd>
|
||||||
|
|
||||||
<dt>Version</dt>
|
<dt>Version</dt>
|
||||||
<dd><?php echo $o->version(); ?></dd>
|
<dd><?php echo $o->version(); ?></dd>
|
||||||
|
|
||||||
<dt>Key Algorithm<dt>
|
<dt>Key Algorithm<dt>
|
||||||
<dd><?php echo $o->algorithm(); ?></dd>
|
<dd><?php echo $o->algorithm(); ?></dd>
|
||||||
</div> <!-- /dl-horizontal -->
|
</div> <!-- /dl-horizontal -->
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<?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
|
||||||
<?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))); ?>
|
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">
|
echo View::factory('field/submit');
|
||||||
<div class="offset2">
|
?>
|
||||||
<button type="submit" class="btn btn-primary">Save changes</button>
|
</fieldset>
|
||||||
<button type="button" class="btn">Cancel</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div> <!-- /span -->
|
|
||||||
|
Reference in New Issue
Block a user