Added Add Node capability
This commit is contained in:
parent
83a2c85a25
commit
80c8971a46
5
application/classes/Controller/Node.php
Normal file
5
application/classes/Controller/Node.php
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<?php defined('SYSPATH') or die('No direct script access.');
|
||||||
|
|
||||||
|
class Controller_Node extends Controller_TemplateDefault {
|
||||||
|
protected $auth_required = TRUE;
|
||||||
|
}
|
61
application/classes/Controller/User/Node.php
Normal file
61
application/classes/Controller/User/Node.php
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class provides User with a TSM node functions
|
||||||
|
*
|
||||||
|
* @package TSM Access Management
|
||||||
|
* @category Controllers/User
|
||||||
|
* @author Deon George
|
||||||
|
* @copyright (c) 2009-2013 Deon George
|
||||||
|
* @license http://dev.leenooks.net/license.html
|
||||||
|
*/
|
||||||
|
class Controller_User_Node extends Controller_Node {
|
||||||
|
protected $secure_actions = array(
|
||||||
|
'add'=>0,
|
||||||
|
'view'=>0,
|
||||||
|
);
|
||||||
|
|
||||||
|
private function node_name($i) {
|
||||||
|
return sprintf('%s%02d',$this->ao->id(),$i);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function action_add() {
|
||||||
|
if ($this->request->post()) {
|
||||||
|
$n = ORM::factory('NODE')->where('EMAIL_ADDRESS','=',$this->ao->email)->find_all();
|
||||||
|
|
||||||
|
if (FALSE AND $n->count() > $this->ao->max_nodes) {
|
||||||
|
SystemMessage::add(array(
|
||||||
|
'title'=>_('Maximum nodes created'),
|
||||||
|
'type'=>'info',
|
||||||
|
'body'=>_('Additional nodes cannot be created for your account, you have already reached your maximum. If you really need more, please contact us.'),
|
||||||
|
));
|
||||||
|
|
||||||
|
HTTP::redirect(URL::link('user','welcome'));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Find a free name.
|
||||||
|
for ($i=1;$i<$n->count();$i++)
|
||||||
|
if (! Object::in_array('NODE_NAME',$this->node_name($i),$n->as_array()))
|
||||||
|
break;
|
||||||
|
|
||||||
|
$no = ORM::factory('NODE');
|
||||||
|
$no->NODE_NAME=$this->node_name($i);
|
||||||
|
$no->CONTACT=$this->ao->name();
|
||||||
|
$no->EMAILADDRESS=$this->ao->email;
|
||||||
|
$no->values($x=Arr::merge(Kohana::$config->load('tsm')->node_create,$this->request->post()));
|
||||||
|
|
||||||
|
$this->save($no);
|
||||||
|
|
||||||
|
if ($no->saved())
|
||||||
|
#HTTP::redirect(URL::link('user','node/view/'.$no->NODE_NAME));
|
||||||
|
HTTP::redirect(URL::link('user','welcome'));
|
||||||
|
}
|
||||||
|
|
||||||
|
Block::factory()
|
||||||
|
->type('form-horizontal')
|
||||||
|
->title('Register NODE')
|
||||||
|
->title_icon('fa-desktop')
|
||||||
|
->body(View::factory('node/user/add')->set('o',$this->ao));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
17
application/config/tsm.php
Normal file
17
application/config/tsm.php
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
<?php defined('SYSPATH') OR die('No direct access allowed.');
|
||||||
|
|
||||||
|
return array
|
||||||
|
(
|
||||||
|
'node_create' => array(
|
||||||
|
'PASSEXP'=>90,
|
||||||
|
'PASSWORD'=>'ch@ng3Me!',
|
||||||
|
'DOMAIN_NAME'=>'IDPR_DEMO',
|
||||||
|
'COMPRESSION'=>'Client',
|
||||||
|
'ARCHDELETE'=>'YES',
|
||||||
|
'BACKDELETE'=>'YES',
|
||||||
|
'OPTION_SET'=>'DEMO',
|
||||||
|
'DEDUPLICATION'=>'Client',
|
||||||
|
'USERID'=>'NONE',
|
||||||
|
'FORCEPWRESET'=>'YES',
|
||||||
|
),
|
||||||
|
);
|
13
application/views/node/user/add.php
Normal file
13
application/views/node/user/add.php
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<fieldset>
|
||||||
|
<legend>Register a TSM node</legend>
|
||||||
|
|
||||||
|
<p>Please give us a description for this node.<p>
|
||||||
|
<?php echo Form::input('description','',array('divclass'=>'col-md-6','label'=>'Description','placeholder'=>'Description for Node')); ?>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-offset-1">
|
||||||
|
<button type="submit" class="btn btn-primary">Save changes</button>
|
||||||
|
<button type="button" class="btn btn-default">Cancel</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -1,5 +1,5 @@
|
|||||||
<div class="shortcuts">
|
<div class="shortcuts">
|
||||||
<a href="<?php echo URL::link('user','node/add',TRUE); ?>" class="shortcut"><i class="shortcut-icon fa fa-recycle"></i><span class="shortcut-label">Create Node</span></a>
|
<a href="<?php echo URL::link('user','node/add',TRUE); ?>" class="shortcut"><i class="shortcut-icon fa fa-desktop"></i><span class="shortcut-label">Create Node</span></a>
|
||||||
<a href="<?php echo URL::link('user','ssl/add',TRUE); ?>" class="shortcut"><i class="shortcut-icon fa fa-certificate"></i><span class="shortcut-label">Create SSL</span></a>
|
<a href="<?php echo URL::link('user','ssl/add',TRUE); ?>" class="shortcut"><i class="shortcut-icon fa fa-certificate"></i><span class="shortcut-label">Create SSL</span></a>
|
||||||
<a href="<?php echo URL::link('user','admin/add',TRUE); ?>" class="shortcut"><i class="shortcut-icon fa fa-graduation-cap"></i><span class="shortcut-label">Create Admin</span></a>
|
<a href="<?php echo URL::link('user','admin/add',TRUE); ?>" class="shortcut"><i class="shortcut-icon fa fa-graduation-cap"></i><span class="shortcut-label">Create Admin</span></a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit f7567dc2507403430f3e34d3d663aee5d756fb51
|
Subproject commit db7f5f8d55fb2d467d7e70df5f7bd15b7a21efbc
|
4
modules/tsm/classes/Database/Query/Builder/Insert.php
Normal file
4
modules/tsm/classes/Database/Query/Builder/Insert.php
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||||||
|
|
||||||
|
class Database_Query_Builder_Insert extends lnApp_Database_Query_Builder_Insert {}
|
||||||
|
?>
|
@ -27,6 +27,7 @@ abstract class ORM_TSM extends ORM {
|
|||||||
protected $_formated = FALSE;
|
protected $_formated = FALSE;
|
||||||
protected $_formats = array();
|
protected $_formats = array();
|
||||||
|
|
||||||
|
protected $_custom_cols = array();
|
||||||
protected $_tsm = array();
|
protected $_tsm = array();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -55,10 +56,31 @@ abstract class ORM_TSM extends ORM {
|
|||||||
// Get a substited column name - need for DB2/DSMADMC schema differences
|
// Get a substited column name - need for DB2/DSMADMC schema differences
|
||||||
if (isset($this->_tsm[$this->_db_group]['translate']) AND array_key_exists($column,$this->_tsm[$this->_db_group]['translate']))
|
if (isset($this->_tsm[$this->_db_group]['translate']) AND array_key_exists($column,$this->_tsm[$this->_db_group]['translate']))
|
||||||
return is_null($c=$this->_tsm[$this->_db_group]['translate'][$column]) ? NULL : parent::__get($c);
|
return is_null($c=$this->_tsm[$this->_db_group]['translate'][$column]) ? NULL : parent::__get($c);
|
||||||
|
|
||||||
else
|
else
|
||||||
return parent::__get($column);
|
return parent::__get($column);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function __set($column,$value) {
|
||||||
|
if (in_array($column,$this->_custom_cols)) {
|
||||||
|
|
||||||
|
// See if the data really changed
|
||||||
|
if (! isset($this->_object[$column]) OR $value !== $this->_object[$column]) {
|
||||||
|
$this->_table_columns[$column]['data_type'] = 'custom';
|
||||||
|
|
||||||
|
$this->_object[$column] = $value;
|
||||||
|
|
||||||
|
// Data has changed
|
||||||
|
$this->_changed[$column] = $column;
|
||||||
|
|
||||||
|
// Object is no longer saved or valid
|
||||||
|
$this->_saved = $this->_valid = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else
|
||||||
|
parent::__set($column,$value);
|
||||||
|
}
|
||||||
|
|
||||||
public function find() {
|
public function find() {
|
||||||
Log::instance()->add(LOG::DEBUG,'ENTER :method',array(':method'=>__METHOD__));
|
Log::instance()->add(LOG::DEBUG,'ENTER :method',array(':method'=>__METHOD__));
|
||||||
|
|
||||||
@ -170,5 +192,12 @@ abstract class ORM_TSM extends ORM {
|
|||||||
|
|
||||||
return array_key_exists($type,$x) ? $x[$type] : $x;
|
return array_key_exists($type,$x) ? $x[$type] : $x;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function values(array $values,array $expected=NULL) {
|
||||||
|
foreach (array_intersect(array_keys($values),$this->_custom_cols) as $col)
|
||||||
|
$this->_table_columns[$col]['data_type'] = 'custom';
|
||||||
|
|
||||||
|
return parent::values($values,$expected);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
77
modules/tsm/classes/lnApp/Database/Query/Builder/Insert.php
Normal file
77
modules/tsm/classes/lnApp/Database/Query/Builder/Insert.php
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class extends Kohana's [ORM] class to create defaults for TSM.
|
||||||
|
*
|
||||||
|
* @package TSM Database Module
|
||||||
|
* @category Query
|
||||||
|
* @author Deon George
|
||||||
|
* @copyright (c) 2010-2014 Deon George
|
||||||
|
* @license http://dev.leenooks.net/license.html
|
||||||
|
*/
|
||||||
|
abstract class lnApp_Database_Query_Builder_Insert extends Kohana_Database_Query_Builder_Insert {
|
||||||
|
private $_commands = array(
|
||||||
|
'NODES'=>array(
|
||||||
|
'OPTION_SET'=>'CLOPTSET',
|
||||||
|
'DOMAIN_NAME'=>'DOMAIN',
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
public function compile($db = NULL) {
|
||||||
|
if ( ! is_object($db)) {
|
||||||
|
// Get the database instance
|
||||||
|
$db = Database::instance($db);
|
||||||
|
}
|
||||||
|
|
||||||
|
switch ($this->_table) {
|
||||||
|
case 'NODES':
|
||||||
|
$query = sprintf('REGISTER NODE %s %s %s',$this->pop_value('NODE_NAME'),$this->pop_value('PASSWORD'),$this->insert_values());
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
throw HTTP_Exception::factory(501,'Not setup for table :table',array(':table'=>$this->_table));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $query;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function get_keyalt($key) {
|
||||||
|
return isset($this->_commands[$this->_table][$key]) ? $this->_commands[$this->_table][$key] : $key;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function get_key($key) {
|
||||||
|
return array_search($key,$this->_columns);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @todo Values always go in as an array - should see if we can stop that
|
||||||
|
private function get_value($key) {
|
||||||
|
return (is_numeric($x=$this->get_key($key))) ? $this->_values[0][$x] : '';
|
||||||
|
}
|
||||||
|
|
||||||
|
private function insert_values() {
|
||||||
|
$result = '';
|
||||||
|
|
||||||
|
foreach ($this->_columns as $k=>$v) {
|
||||||
|
if ($result)
|
||||||
|
$result .= ' ';
|
||||||
|
|
||||||
|
$result .= sprintf('%s=\'%s\'',$this->get_keyalt($v),$this->get_value($v));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function pop_value($key) {
|
||||||
|
$result = NULL;
|
||||||
|
|
||||||
|
$x = $this->get_key($key);
|
||||||
|
|
||||||
|
$result = $this->get_value($key);
|
||||||
|
unset($this->_columns[$x]);
|
||||||
|
unset($this->_values[0][$x]);
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
@ -48,9 +48,6 @@ abstract class lnApp_Database_TSM extends Database {
|
|||||||
public function set_charset($charset) {}
|
public function set_charset($charset) {}
|
||||||
public function list_tables($like = NULL) {}
|
public function list_tables($like = NULL) {}
|
||||||
|
|
||||||
// Required methods
|
|
||||||
abstract protected function execute($sql);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the caching defined in the current configuration.
|
* Return the caching defined in the current configuration.
|
||||||
*
|
*
|
||||||
@ -90,7 +87,7 @@ abstract class lnApp_Database_TSM extends Database {
|
|||||||
if (isset($benchmark))
|
if (isset($benchmark))
|
||||||
Profiler::delete($benchmark);
|
Profiler::delete($benchmark);
|
||||||
|
|
||||||
SystemMessage::TSM('error',sprintf('%s (%s)',$this->execute_stdout,$this->execute_stderr),$sql);
|
SystemMessage::TSM('danger',sprintf('%s (%s)',$this->execute_stdout,$this->execute_stderr),$sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($benchmark))
|
if (isset($benchmark))
|
||||||
@ -103,7 +100,7 @@ abstract class lnApp_Database_TSM extends Database {
|
|||||||
// Return an iterator of results
|
// Return an iterator of results
|
||||||
return new Database_TSM_Result($result, $sql, $as_object, $params);
|
return new Database_TSM_Result($result, $sql, $as_object, $params);
|
||||||
elseif ($type === Database::INSERT)
|
elseif ($type === Database::INSERT)
|
||||||
throw new Kohana_Exception('Database INSERTS are not supported');
|
return new Database_TSM_Result($result, $sql, $as_object, $params);
|
||||||
elseif ($type === Database::SHOW)
|
elseif ($type === Database::SHOW)
|
||||||
return new Database_TSM_Show($result, $sql, $as_object, $params);
|
return new Database_TSM_Show($result, $sql, $as_object, $params);
|
||||||
elseif ($type === Database::SET)
|
elseif ($type === Database::SET)
|
||||||
|
@ -61,6 +61,13 @@ abstract class lnApp_Model_NODE extends ORM_TSM {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
protected $_custom_cols = array(
|
||||||
|
'EMAILADDRESS',
|
||||||
|
'FORCEPWRESET',
|
||||||
|
'PASSWORD',
|
||||||
|
'USERID',
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get all the ACTIVITIY LOG for this NODE
|
* Get all the ACTIVITIY LOG for this NODE
|
||||||
*/
|
*/
|
||||||
@ -105,6 +112,7 @@ abstract class lnApp_Model_NODE extends ORM_TSM {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Log::instance()->add(LOG::DEBUG,'EXIT :method',array(':method'=>__METHOD__));
|
Log::instance()->add(LOG::DEBUG,'EXIT :method',array(':method'=>__METHOD__));
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user