mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-20 05:29:29 +00:00
ACL-System
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
<?php
|
||||
if (! defined('BASEPATH'))
|
||||
exit('No direct script access allowed');
|
||||
|
||||
$config['fhc_version'] = '3.2';
|
||||
|
||||
@@ -6,7 +8,7 @@ $config['fhc_acl'] = array
|
||||
(
|
||||
'public.tbl_person' => 'basis/person',
|
||||
'public.tbl_prestudent' => 'basis/person',
|
||||
'public.tbl_organisationseinheit' => 'basis/organisationseinheit'
|
||||
,
|
||||
'public.tbl_prestudentstatus' => 'basis/person',
|
||||
'public.tbl_organisationseinheit' => 'basis/organisationseinheit',
|
||||
'public.tbl_sprache' => 'admin'
|
||||
);
|
||||
|
||||
@@ -22,7 +22,12 @@ class ModelTest extends FHC_Controller
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$this->session->uid='admin'; // Should normaly be set through auth
|
||||
//$this->session->uid='admin'; // Should normaly be set through auth
|
||||
$this->load->model('person/Person_model');
|
||||
$this->Person_model->setUID('admin'); // Should normaly be set through auth
|
||||
$res = $this->Person_model->getPerson(null, 'asdf\' OR person_id=1; SELECT 1; --');
|
||||
var_dump($res->result_object());
|
||||
|
||||
$this->load->model('person/Prestudent_model');
|
||||
$id=null;
|
||||
|
||||
@@ -35,7 +40,7 @@ class ModelTest extends FHC_Controller
|
||||
);
|
||||
$res = $this->Prestudent_model->insert($data);
|
||||
if ($res->error)
|
||||
echo 'Error: ',$res->error, ', Code: ',$res->code,' -> ',$res->msg,': ',$res->retval,'<br/>';
|
||||
echo 'Error: ',$res->error, ', Code: ',$res->fhcCode,' -> ',$res->msg,': ',$res->retval,'<br/>';
|
||||
else
|
||||
$id=$res->retval;
|
||||
|
||||
@@ -48,7 +53,7 @@ class ModelTest extends FHC_Controller
|
||||
);
|
||||
$res = $this->Prestudent_model->update($id, $data);
|
||||
if ($res->error)
|
||||
echo 'Error: ',$res->error, ', Code: ',$res->code,' -> ',$res->msg,': ',$res->retval,'<br/>';
|
||||
echo 'Error: ',$res->error, ', Code: ',$res->fhcCode,' -> ',$res->msg,': ',$res->retval,'<br/>';
|
||||
else
|
||||
$id=$res->retval;
|
||||
|
||||
@@ -62,21 +67,55 @@ class ModelTest extends FHC_Controller
|
||||
);
|
||||
$res = $this->Prestudent_model->replace($data);
|
||||
if ($res->error)
|
||||
echo 'Error: ',$res->error, ', Code: ',$res->code,' -> ',$res->msg,': ',$res->retval;
|
||||
echo 'Error: ',$res->error, ', Code: ',$res->fhcCode,' -> ',$res->msg,': ',$res->retval;
|
||||
else
|
||||
echo 'Error: ',$res->error, ', Code: ',$res->code,' -> ',$res->msg,': ',$res->retval;*/
|
||||
echo 'Error: ',$res->error, ', Code: ',$res->fhcCode,' -> ',$res->msg,': ',$res->retval;*/
|
||||
|
||||
// Load PreStudent
|
||||
$res = $this->Prestudent_model->load($id);
|
||||
if ($res->error)
|
||||
echo 'Error: ',$res->error, ', Code: ',$res->code,' -> ',$res->msg,': ',$res->retval,'<br/>';
|
||||
echo 'Error: ',$res->error, ', Code: ',$res->fhcCode,' -> ',$res->msg,': ',$res->retval,'<br/>';
|
||||
else
|
||||
var_dump($res->retval);
|
||||
|
||||
// Insert PreStudentStatus
|
||||
$this->load->model('person/Prestudentstatus_model');
|
||||
$data = array
|
||||
(
|
||||
'prestudent_id' => $id,
|
||||
'status_kurzbz' => 'Interessent',
|
||||
'studiensemester_kurzbz' => 'WS2001',
|
||||
'ausbildungssemester' => 1
|
||||
);
|
||||
$res = $this->Prestudentstatus_model->insert($data);
|
||||
var_dump($res->retval);
|
||||
|
||||
// Load PreStudentStatus
|
||||
$res = $this->Prestudentstatus_model->load($data);
|
||||
var_dump($res->retval->result_object());
|
||||
$res = $this->Prestudentstatus_model->load(array($id,'Interessent', 'WS2001', 1));
|
||||
var_dump($res->retval->result_object());
|
||||
|
||||
// Update PreStudentStatus
|
||||
$res = $this->Prestudentstatus_model->update($data, array
|
||||
(
|
||||
'prestudent_id' => $id,
|
||||
'status_kurzbz' => 'Bewerber',
|
||||
'studiensemester_kurzbz' => 'WS2011',
|
||||
'ausbildungssemester' => 2
|
||||
));
|
||||
var_dump($res->retval);
|
||||
$res = $this->Prestudentstatus_model->update(array($id,'Bewerber', 'WS2011', 2), $data );
|
||||
var_dump($res->retval);
|
||||
|
||||
// Delete PreStudentStatus
|
||||
$res = $this->Prestudentstatus_model->delete($data);
|
||||
var_dump($res->retval);
|
||||
|
||||
// Delete PreStudent
|
||||
$res = $this->Prestudent_model->delete($id);
|
||||
if ($res->error)
|
||||
echo 'Error: ',$res->error, ', Code: ',$res->code,' -> ',$res->msg,': ',$res->retval,'<br/>';
|
||||
echo 'Error: ',$res->error, ', Code: ',$res->fhcCode,' -> ',$res->msg,': ',$res->retval,'<br/>';
|
||||
else
|
||||
var_dump($res->retval);
|
||||
|
||||
@@ -91,12 +130,12 @@ class ModelTest extends FHC_Controller
|
||||
);
|
||||
$res = $this->Organisationseinheit_model->insert($data);
|
||||
if ($res->error)
|
||||
echo 'Error: ',$res->error, ', Code: ',$res->code,' -> ',$res->msg,': ',$res->retval,'<br/>';
|
||||
echo 'Error: ',$res->error, ', Code: ',$res->fhcCode,' -> ',$res->msg,': ',$res->retval,'<br/>';
|
||||
else
|
||||
$id = $data['oe_kurzbz'];
|
||||
var_dump($res);
|
||||
|
||||
// Update PreStudent
|
||||
// Update OE
|
||||
$data = array
|
||||
(
|
||||
'freigabegrenze' => 1234.56,
|
||||
@@ -105,14 +144,14 @@ class ModelTest extends FHC_Controller
|
||||
);
|
||||
$res = $this->Organisationseinheit_model->update($id, $data);
|
||||
if ($res->error)
|
||||
echo 'Error: ',$res->error, ', Code: ',$res->code,' -> ',$res->msg,': ',$res->retval,'<br/>';
|
||||
echo 'Error: ',$res->error, ', Code: ',$res->fhcCode,' -> ',$res->msg,': ',$res->retval,'<br/>';
|
||||
else
|
||||
$id=$res->retval;
|
||||
|
||||
// Delete PreStudent
|
||||
|
||||
// Delete Organisationseinheit
|
||||
$res = $this->Organisationseinheit_model->delete($id);
|
||||
if ($res->error)
|
||||
echo 'Error: ',$res->error, ', Code: ',$res->code,' -> ',$res->msg,': ',$res->retval,'<br/>';
|
||||
echo 'Error: ',$res->error, ', Code: ',$res->fhcCode,' -> ',$res->msg,': ',$res->retval,'<br/>';
|
||||
else
|
||||
var_dump($res->retval);
|
||||
|
||||
@@ -127,7 +166,7 @@ class ModelTest extends FHC_Controller
|
||||
);
|
||||
$res = $this->Sprache_model->insert($data);
|
||||
if ($res->error)
|
||||
echo 'Error: ',$res->error, ', Code: ',$res->code,' -> ',$res->msg,': ',$res->retval,'<br/>';
|
||||
echo 'Error: ',$res->error, ', Code: ',$res->fhcCode,' -> ',$res->msg,': ',$res->retval,'<br/>';
|
||||
else
|
||||
$id = $data['sprache'];
|
||||
var_dump($res);
|
||||
@@ -141,24 +180,37 @@ class ModelTest extends FHC_Controller
|
||||
);
|
||||
$res = $this->Sprache_model->update($id, $data);
|
||||
if ($res->error)
|
||||
echo 'Error: ',$res->error, ', Code: ',$res->code,' -> ',$res->msg,': ',$res->retval,'<br/>';
|
||||
echo 'Error: ',$res->error, ', Code: ',$res->fhcCode,' -> ',$res->msg,': ',$res->retval,'<br/>';
|
||||
else
|
||||
$id=$res->retval; //echo $id;
|
||||
|
||||
// Load Sprache
|
||||
$res = $this->Sprache_model->load($id);
|
||||
if ($res->error)
|
||||
echo 'Error: ',$res->error, ', Code: ',$res->code,' -> ',$res->msg,': ',$res->retval,'<br/>';
|
||||
echo 'Error: ',$res->error, ', Code: ',$res->fhcCode,' -> ',$res->msg,': ',$res->retval,'<br/>';
|
||||
else
|
||||
{
|
||||
$result = $res->retval->result_object();
|
||||
var_dump($result);
|
||||
var_dump($this->Sprache_model->pgArrayPhp($result[0]->bezeichnung));
|
||||
var_dump($this->Sprache_model->pgBoolPhp($result[0]->content));
|
||||
}
|
||||
|
||||
// Load All Sprache
|
||||
$res = $this->Sprache_model->loadWhere();
|
||||
if ($res->error)
|
||||
echo 'Error: ',$res->error, ', Code: ',$res->fhcCode,' -> ',$res->msg,': ',$res->retval,'<br/>';
|
||||
else
|
||||
{
|
||||
var_dump($res->retval);
|
||||
$result = $res->retval->result_object();
|
||||
var_dump($result);
|
||||
}
|
||||
|
||||
// Delete Sprache
|
||||
$res = $this->Sprache_model->delete($id);
|
||||
if ($res->error)
|
||||
echo 'Error: ',$res->error, ', Code: ',$res->code,' -> ',$res->msg,': ',$res->retval,'<br/>';
|
||||
echo 'Error: ',$res->error, ', Code: ',$res->fhcCode,' -> ',$res->msg,': ',$res->retval,'<br/>';
|
||||
else
|
||||
var_dump($res->retval);
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ class DB_Model extends FHC_Model
|
||||
return $this->_error(lang('fhc_'.FHC_NODBTABLE), FHC_MODEL_ERROR);
|
||||
|
||||
// Check rights
|
||||
if (! $this->fhc_db_acl->isBerechtigt((string)($this->acl[$this->dbTable]), 'i'))
|
||||
if (! $this->fhc_db_acl->isBerechtigt($this->acl[$this->dbTable], 'i'))
|
||||
return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> '.$this->acl[$this->dbTable], FHC_MODEL_ERROR);
|
||||
|
||||
// DB-INSERT
|
||||
@@ -54,7 +54,7 @@ class DB_Model extends FHC_Model
|
||||
return $this->_error(lang('fhc_'.FHC_NODBTABLE), FHC_MODEL_ERROR);
|
||||
|
||||
// Check rights
|
||||
if (! $this->fhc_db_acl->isBerechtigt((string)($this->acl[$this->dbTable]), 'ui'))
|
||||
if (! $this->fhc_db_acl->isBerechtigt($this->acl[$this->dbTable], 'ui'))
|
||||
return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> '.$this->acl[$this->dbTable], FHC_MODEL_ERROR);
|
||||
|
||||
// DB-REPLACE
|
||||
@@ -80,11 +80,20 @@ class DB_Model extends FHC_Model
|
||||
return $this->_error(lang('fhc_'.FHC_NOPK), FHC_MODEL_ERROR);
|
||||
|
||||
// Check rights
|
||||
if (! $this->fhc_db_acl->isBerechtigt((string)($this->acl[$this->dbTable]), 'u'))
|
||||
if (! $this->fhc_db_acl->isBerechtigt($this->acl[$this->dbTable], 'u'))
|
||||
return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> '.$this->acl[$this->dbTable], FHC_MODEL_ERROR);
|
||||
|
||||
// DB-UPDATE
|
||||
$this->db->where($this->pk, $id);
|
||||
// Check for composite Primary Key
|
||||
if (is_array($id))
|
||||
{
|
||||
if (isset($id[0]))
|
||||
$this->db->where($this->_arrayMergeIndex($this->pk, $id));
|
||||
else
|
||||
$this->db->where($id);
|
||||
}
|
||||
else
|
||||
$this->db->where($this->pk, $id);
|
||||
if ($this->db->update($this->dbTable, $data))
|
||||
return $this->_success($id);
|
||||
else
|
||||
@@ -92,9 +101,9 @@ class DB_Model extends FHC_Model
|
||||
}
|
||||
|
||||
/** ---------------------------------------------------------------
|
||||
* Load data from DB-Table
|
||||
* Load single data from DB-Table
|
||||
*
|
||||
* @param string $id Primary Key for SELECT
|
||||
* @param string $id ID (Primary Key) for SELECT ... WHERE
|
||||
* @return array
|
||||
*/
|
||||
public function load($id)
|
||||
@@ -106,12 +115,46 @@ class DB_Model extends FHC_Model
|
||||
return $this->_error(lang('fhc_'.FHC_NOPK), FHC_MODEL_ERROR);
|
||||
|
||||
// Check rights
|
||||
if (! $this->fhc_db_acl->isBerechtigt((string)($this->acl[$this->dbTable]), 's'))
|
||||
if (! $this->fhc_db_acl->isBerechtigt($this->acl[$this->dbTable], 's'))
|
||||
return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> '.$this->acl[$this->dbTable], FHC_MODEL_ERROR);
|
||||
|
||||
// DB-SELECT
|
||||
$result = $this->db->get_where($this->dbTable, array($this->pk => $id));
|
||||
//var_dump($result);
|
||||
// Check for composite Primary Key
|
||||
if (is_array($id))
|
||||
{
|
||||
if (isset($id[0]))
|
||||
$result = $this->db->get_where($this->dbTable, $this->_arrayMergeIndex($this->pk, $id));
|
||||
else
|
||||
$result = $this->db->get_where($this->dbTable, $id);
|
||||
}
|
||||
else
|
||||
$result = $this->db->get_where($this->dbTable, array($this->pk => $id));
|
||||
if ($result)
|
||||
return $this->_success($result);
|
||||
else
|
||||
return $this->_error($this->db->error(), FHC_DB_ERROR);
|
||||
}
|
||||
|
||||
/** ---------------------------------------------------------------
|
||||
* Load data from DB-Table
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function loadWhere($where = null)
|
||||
{
|
||||
// Check Class-Attributes
|
||||
if(is_null($this->dbTable))
|
||||
return $this->_error(lang('fhc_'.FHC_NODBTABLE), FHC_MODEL_ERROR);
|
||||
|
||||
// Check rights
|
||||
if (! $this->fhc_db_acl->isBerechtigt($this->acl[$this->dbTable], 's'))
|
||||
return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> '.$this->acl[$this->dbTable], FHC_MODEL_ERROR);
|
||||
|
||||
// DB-SELECT
|
||||
if (is_null($where))
|
||||
$result = $this->db->get($this->dbTable);
|
||||
else
|
||||
$result = $this->db->get_where($this->dbTable, $where);
|
||||
if ($result)
|
||||
return $this->_success($result);
|
||||
else
|
||||
@@ -137,16 +180,44 @@ class DB_Model extends FHC_Model
|
||||
return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> '.$this->acl[$this->dbTable], FHC_MODEL_ERROR);
|
||||
|
||||
// DB-DELETE
|
||||
if ($this->db->delete($this->dbTable, array($this->pk => $id)))
|
||||
// Check for composite Primary Key
|
||||
if (is_array($id))
|
||||
{
|
||||
if (isset($id[0]))
|
||||
$result = $this->db->delete($this->dbTable, $this->_arrayMergeIndex($this->pk, $id));
|
||||
else
|
||||
$result = $this->db->delete($this->dbTable, $id);
|
||||
}
|
||||
else
|
||||
$result = $this->db->delete($this->dbTable, array($this->pk => $id));
|
||||
if ($result)
|
||||
return $this->_success($id);
|
||||
else
|
||||
return $this->_error($this->db->error(), FHC_DB_ERROR);
|
||||
}
|
||||
|
||||
/** ---------------------------------------------------------------
|
||||
* Convert PG-Boolean to PHP-Boolean
|
||||
*
|
||||
* @param char $b PG-Char to convert
|
||||
* @return bool
|
||||
*/
|
||||
public function pgBoolPhp($b)
|
||||
{
|
||||
if (is_null($b))
|
||||
return null;
|
||||
elseif ($b==='t')
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
/** ---------------------------------------------------------------
|
||||
* Convert PG-Array to PHP-Array
|
||||
*
|
||||
* @param integer config.php error code numbers
|
||||
* @param string $s PG-String to convert
|
||||
* @param string $start start-point for recursive iterations
|
||||
* @param string $end end-point for recursive iterations
|
||||
* @return array
|
||||
*/
|
||||
public function pgArrayPhp($s,$start=0,&$end=NULL)
|
||||
@@ -195,6 +266,22 @@ class DB_Model extends FHC_Model
|
||||
return $return;
|
||||
}
|
||||
|
||||
/** ---------------------------------------------------------------
|
||||
* Invalid ID
|
||||
*
|
||||
* @param array $i Array with indexes.
|
||||
* @param array $v Array with values.
|
||||
* @return array
|
||||
*/
|
||||
protected function _arrayMergeIndex($i,$v)
|
||||
{
|
||||
if (count($i) != count($v))
|
||||
return false;
|
||||
for ($j=0; $j < count($i); $j++)
|
||||
$a[$i[$j]] = $v[$j];
|
||||
return $a;
|
||||
}
|
||||
|
||||
/** ---------------------------------------------------------------
|
||||
* Invalid ID
|
||||
*
|
||||
|
||||
@@ -17,6 +17,17 @@ class FHC_Model extends CI_Model
|
||||
$this->load->library('FHC_DB_ACL',array('uid' => $uid));
|
||||
}
|
||||
|
||||
/** ---------------------------------------------------------------
|
||||
* Set UID
|
||||
*
|
||||
* @param string $uid
|
||||
* @return bool
|
||||
*/
|
||||
public function setUID($uid)
|
||||
{
|
||||
return $this->fhc_db_acl->setUID($uid);
|
||||
}
|
||||
|
||||
/** ---------------------------------------------------------------
|
||||
* Success
|
||||
*
|
||||
@@ -27,7 +38,7 @@ class FHC_Model extends CI_Model
|
||||
{
|
||||
$return = new stdClass();
|
||||
$return->error = EXIT_SUCCESS;
|
||||
$return->code = $message;
|
||||
$return->fhcCode = $message;
|
||||
$return->msg = lang('fhc_' . $message);
|
||||
$return->retval = $retval;
|
||||
return $return;
|
||||
@@ -42,7 +53,7 @@ class FHC_Model extends CI_Model
|
||||
{
|
||||
$return = new stdClass();
|
||||
$return->error = EXIT_MODEL;
|
||||
$return->code = $message;
|
||||
$return->fhcCode = $message;
|
||||
$return->msg = lang('fhc_' . $message);
|
||||
$return->retval = $retval;
|
||||
return $return;
|
||||
|
||||
@@ -34,7 +34,7 @@ require_once(FCPATH.'include/benutzerberechtigung.class.php');
|
||||
class FHC_DB_ACL
|
||||
{
|
||||
public $bb;
|
||||
protected $uid;
|
||||
protected $_uid;
|
||||
|
||||
/**
|
||||
* Auth Username, Password over FH-Complete
|
||||
@@ -46,12 +46,23 @@ class FHC_DB_ACL
|
||||
function __construct($param)
|
||||
{
|
||||
$this->bb = new benutzerberechtigung();
|
||||
$this->uid = $param['uid'];
|
||||
$this->_uid = $param['uid'];
|
||||
}
|
||||
|
||||
function isBerechtigt($berechtigung_kurzbz, $art=null, $oe_kurzbz=null, $kostenstelle_id=null)
|
||||
{
|
||||
$this->bb->getBerechtigungen($this->uid);
|
||||
$this->bb->getBerechtigungen($this->_uid);
|
||||
return $this->bb->isBerechtigt($berechtigung_kurzbz, $oe_kurzbz=null, $art=null, $kostenstelle_id=null);
|
||||
}
|
||||
|
||||
/** ---------------------------------------------------------------
|
||||
* Set UID
|
||||
*
|
||||
* @param string $uid
|
||||
* @return bool
|
||||
*/
|
||||
public function setUID($uid)
|
||||
{
|
||||
return $this->_uid = $uid;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,8 +19,8 @@ class Person_model extends DB_Model
|
||||
|
||||
// Checks if the operation is permitted by the API caller
|
||||
// All the code should be put inside this if statement
|
||||
if(isAllowed($this->getAddonID(), 'person'))
|
||||
{
|
||||
/*if(isAllowed($this->getAddonID(), 'person'))
|
||||
{*/
|
||||
if((isset($code)) && (isset($email)))
|
||||
{
|
||||
$result = $this->_getPersonByCodeAndEmail($code, $email);
|
||||
@@ -33,7 +33,7 @@ class Person_model extends DB_Model
|
||||
{
|
||||
$result = $this->_getPersonByID($personId);
|
||||
}
|
||||
}
|
||||
//}
|
||||
|
||||
return $result;
|
||||
}
|
||||
@@ -826,4 +826,4 @@ class Person_model extends DB_Model
|
||||
->where("p.zugangscode", $code);
|
||||
return $this->db->get()->result_array();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ class Prestudent_model extends DB_Model
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
@@ -19,11 +19,23 @@ class Prestudent_model extends DB_Model
|
||||
*/
|
||||
public function loadPrestudentPerson($prestudentID)
|
||||
{
|
||||
// Check the rights
|
||||
if (! $this->fhc_db_acl->isBerechtigt('basis/person', 's'))
|
||||
return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> basis/person', FHC_MODEL_ERROR);
|
||||
|
||||
// Prepare SQL-Query
|
||||
$this->db->select('*')
|
||||
->from('public.tbl_prestudent')
|
||||
->join('public.tbl_person', 'person_id')
|
||||
->where('prestudent_id', $prestudentID);
|
||||
return $this->db->get()->result_array();
|
||||
// Do the query
|
||||
$result = $this->db->get()->result_object();
|
||||
|
||||
// Return the result
|
||||
if ($result)
|
||||
return $this->_success($result);
|
||||
else
|
||||
return $this->_error($this->db->error(), FHC_DB_ERROR);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user