mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-19 13:09:27 +00:00
- core/Auth_Controller does NOT load anymore hlp_authentication helper
- Added function getAuthPersonId to hlp_authentication helper - Added function isLogged to hlp_common helper - hlp_authentication helper functions getAuthPersonId and getAuthUID make use of isLogged function - AuthLib loads hlp_authentication helper after a successful login or if a user is already logged - FilterLib does NOT load anymore hlp_authentication helper - FilterLib does NOT use anymore BenutzerModel and getAuthUID, but retrieves user data directly using the person_id from getAuthPersonId
This commit is contained in:
@@ -14,9 +14,6 @@ class Auth_Controller extends FHC_Controller
|
||||
// Loads authentication library and starts authentication
|
||||
$this->load->library('AuthLib');
|
||||
|
||||
// Loads authentication helper
|
||||
$this->load->helper('hlp_authentication');
|
||||
|
||||
// Checks if the caller is allowed to access to this content
|
||||
$this->_isAllowed($requiredPermissions);
|
||||
}
|
||||
|
||||
@@ -2,20 +2,35 @@
|
||||
|
||||
if (!defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------------------------------
|
||||
// Functions needed to manage the user authentication
|
||||
// ------------------------------------------------------------------------
|
||||
// NOTE: the following functions do NOT prompt a login page if the user is NOT logged in
|
||||
// -----------------------------------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* It calls the AuthLib, if the user is NOT logged then the login page is shown
|
||||
* If the user is NOT logged then a null value is returned.
|
||||
* If the user is alredy logged, then it is possible to access to the authentication object
|
||||
* that contains the person_id of the logged user
|
||||
* NOTE: if a user is logged then a person_id is always present!
|
||||
*/
|
||||
function getAuthPersonId()
|
||||
{
|
||||
$ci =& get_instance(); // get CI instance
|
||||
|
||||
return isLogged() ? ($ci->authlib->getAuthObj())->{AuthLib::AO_PERSON_ID} : null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* If the user is NOT logged then a null value is returned.
|
||||
* If the user is alredy logged, then it is possible to access to the authentication object
|
||||
* that contains the username of the logged user
|
||||
*
|
||||
* @return string or null
|
||||
* NOTE: if the user is logged with a "foreign" method (ex. Bewerbungstool),
|
||||
* then it is possible that the username is null!
|
||||
*/
|
||||
function getAuthUID()
|
||||
{
|
||||
$ci =& get_instance(); // get CI instance
|
||||
|
||||
return ($ci->authlib->getAuthObj())->{AuthLib::AO_USERNAME};
|
||||
return isLogged() ? ($ci->authlib->getAuthObj())->{AuthLib::AO_USERNAME} : null;
|
||||
}
|
||||
|
||||
@@ -224,3 +224,19 @@ function isDateWorkingDay($date, $days = null)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the current user is logged by checking that the AuthLib is loaded and
|
||||
* it is present the authentication object in session
|
||||
* NOTE: it is placed here instead of being placed in the helper hlp_authentication_helper
|
||||
* because hlp_authentication_helper is loaded after the authentication.
|
||||
* It is very useful to use this function even in those parts of the code that are accessible
|
||||
* even when a user is NOT authenticated!!!
|
||||
* If and only if this function returns true, then all the functions present in hlp_authentication_helper can be used!
|
||||
*/
|
||||
function isLogged()
|
||||
{
|
||||
$ci =& get_instance(); // get CI instance
|
||||
|
||||
return isset($ci->authlib) && $ci->authlib->getAuthObj() != null;
|
||||
}
|
||||
|
||||
@@ -30,7 +30,6 @@ class AuthLib
|
||||
/**
|
||||
* Construct
|
||||
*
|
||||
*
|
||||
* @param bool $authenticate If the authentication must be performed.
|
||||
*/
|
||||
public function __construct($authenticate = true)
|
||||
@@ -483,6 +482,8 @@ class AuthLib
|
||||
|
||||
/**
|
||||
* Stores the authentication object into the authentication session
|
||||
* Everything was fine, the user at this point is authenticated, it is possible to store the authentication object
|
||||
* in the user session
|
||||
*/
|
||||
private function _storeSessionAuthObj($authObj)
|
||||
{
|
||||
@@ -552,7 +553,12 @@ class AuthLib
|
||||
$this->_showError(getData($auth)); // display a generic error message and logs the occurred error
|
||||
}
|
||||
}
|
||||
// else the user is already logged, then continue with the execution
|
||||
// else the user is already logged, then loads authentication helper and continue with the execution
|
||||
// NOTE: it is needed only here because:
|
||||
// - it is called when a user is already logged in
|
||||
// - it is called after login the user
|
||||
// - it is NOT called in case of fatal error or wrong authentication
|
||||
$this->_ci->load->helper('hlp_authentication');
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -108,9 +108,6 @@ class FiltersLib
|
||||
{
|
||||
$this->_ci =& get_instance(); // get code igniter instance
|
||||
|
||||
// Loads authentication helper
|
||||
$this->_ci->load->helper('hlp_authentication'); // NOTE: needed to load custom filters do not remove!
|
||||
|
||||
$this->_filterUniqueId = $this->_getFilterUniqueId($params); // sets the id for the related filter widget
|
||||
}
|
||||
|
||||
@@ -185,11 +182,8 @@ class FiltersLib
|
||||
{
|
||||
// Loads the needed models
|
||||
$this->_ci->load->model('system/Filters_model', 'FiltersModel');
|
||||
$this->_ci->load->model('person/Benutzer_model', 'BenutzerModel'); // to get the default custom filter
|
||||
|
||||
$this->_ci->FiltersModel->resetQuery(); // reset any previous built query
|
||||
|
||||
$this->_ci->FiltersModel->addJoin('public.tbl_benutzer', 'person_id', 'LEFT'); // left join with benutzer table
|
||||
$this->_ci->FiltersModel->addSelect('system.tbl_filters.*'); // select only from table filters
|
||||
$this->_ci->FiltersModel->addOrder('sort', 'ASC'); // sort on column sort
|
||||
$this->_ci->FiltersModel->addLimit(1); // if more than one filter is set as default only one will be retrieved
|
||||
@@ -223,7 +217,7 @@ class FiltersLib
|
||||
$whereParameters = array(
|
||||
'app' => $app,
|
||||
'dataset_name' => $datasetName,
|
||||
'uid' => getAuthUID(),
|
||||
'person_id' => getAuthPersonId(),
|
||||
'default_filter' => true
|
||||
);
|
||||
|
||||
@@ -260,10 +254,10 @@ class FiltersLib
|
||||
$jsonEncodedFilter = null;
|
||||
|
||||
// If the definition contains data and they are valid
|
||||
if (hasData($definition) && isset($definition->retval[0]->filter) && trim($definition->retval[0]->filter) != '')
|
||||
if (hasData($definition) && isset(getData($definition)[0]->filter) && trim(getData($definition)[0]->filter) != '')
|
||||
{
|
||||
// Get the json definition of the filter
|
||||
$tmpJsonEncodedFilter = json_decode($definition->retval[0]->filter);
|
||||
$tmpJsonEncodedFilter = json_decode(getData($definition)[0]->filter);
|
||||
|
||||
// Checks required filter's properies
|
||||
if (isset($tmpJsonEncodedFilter->name)
|
||||
@@ -585,87 +579,76 @@ class FiltersLib
|
||||
$saveCustomFilter = false; // by default returns a failure
|
||||
|
||||
// Checks parameter customFilterDescription if not valid stop the execution
|
||||
if (isEmptyString($customFilterDescription))
|
||||
{
|
||||
return $saveCustomFilter;
|
||||
}
|
||||
if (isEmptyString($customFilterDescription)) return $saveCustomFilter;
|
||||
|
||||
$this->_ci->load->model('system/Filters_model', 'FiltersModel'); // to load the filter definitions
|
||||
$this->_ci->load->model('person/Benutzer_model', 'BenutzerModel'); // to get the person_id of the authenticated user
|
||||
|
||||
$this->_ci->FiltersModel->resetQuery(); // reset any previous built query
|
||||
$this->_ci->BenutzerModel->resetQuery(); // reset any previous built query
|
||||
|
||||
// Loads data for the authenticated user
|
||||
$authBenutzer = $this->_ci->BenutzerModel->loadWhere(array('uid' => getAuthUID()));
|
||||
if (hasData($authBenutzer)) // if data are found
|
||||
// person_id of the authenticated user
|
||||
$authPersonId = getAuthPersonId();
|
||||
// Postgres array for the description
|
||||
$descPGArray = str_replace('%desc%', $customFilterDescription, '{"%desc%", "%desc%", "%desc%", "%desc%"}');
|
||||
|
||||
// Loads the definition to check if is already present in the DB
|
||||
$definition = $this->_ci->FiltersModel->loadWhere(array(
|
||||
'app' => $this->getSessionElement(self::APP_PARAMETER),
|
||||
'dataset_name' => $this->getSessionElement(self::DATASET_NAME_PARAMETER),
|
||||
'description' => $descPGArray,
|
||||
'person_id' => $authPersonId
|
||||
));
|
||||
|
||||
// New definition to be json encoded
|
||||
$jsonDeifinition = new stdClass();
|
||||
$jsonDeifinition->name = $customFilterDescription; // name of the filter
|
||||
|
||||
// Generates the "column" property
|
||||
$jsonDeifinition->columns = array();
|
||||
$selectedFields = $this->getSessionElement(self::SESSION_SELECTED_FIELDS); // retrieved the selected fields
|
||||
for ($i = 0; $i < count($selectedFields); $i++)
|
||||
{
|
||||
// person_id of the authenticated user
|
||||
$authPersonId = $authBenutzer->retval[0]->person_id;
|
||||
// Postgres array for the description
|
||||
$descPGArray = str_replace('%desc%', $customFilterDescription, '{"%desc%", "%desc%", "%desc%", "%desc%"}');
|
||||
// Each element is an object with a property called "name"
|
||||
$jsonDeifinition->columns[$i] = new stdClass();
|
||||
$jsonDeifinition->columns[$i]->name = $selectedFields[$i];
|
||||
}
|
||||
|
||||
// Loads the definition to check if is already present in the DB
|
||||
$definition = $this->_ci->FiltersModel->loadWhere(array(
|
||||
'app' => $this->getSessionElement(self::APP_PARAMETER),
|
||||
'dataset_name' => $this->getSessionElement(self::DATASET_NAME_PARAMETER),
|
||||
'description' => $descPGArray,
|
||||
'person_id' => $authPersonId
|
||||
));
|
||||
// List of applied filters
|
||||
$jsonDeifinition->filters = $this->getSessionElement(self::SESSION_FILTERS);
|
||||
|
||||
// New definition to be json encoded
|
||||
$jsonDeifinition = new stdClass();
|
||||
$jsonDeifinition->name = $customFilterDescription; // name of the filter
|
||||
// If it is already present
|
||||
if (hasData($definition))
|
||||
{
|
||||
// update it
|
||||
$this->_ci->FiltersModel->update(
|
||||
array(
|
||||
'app' => $this->getSessionElement(self::APP_PARAMETER),
|
||||
'dataset_name' => $this->getSessionElement(self::DATASET_NAME_PARAMETER),
|
||||
'description' => $descPGArray,
|
||||
'person_id' => $authPersonId
|
||||
),
|
||||
array(
|
||||
'filter' => json_encode($jsonDeifinition)
|
||||
)
|
||||
);
|
||||
|
||||
// Generates the "column" property
|
||||
$jsonDeifinition->columns = array();
|
||||
$selectedFields = $this->getSessionElement(self::SESSION_SELECTED_FIELDS); // retrieved the selected fields
|
||||
for ($i = 0; $i < count($selectedFields); $i++)
|
||||
{
|
||||
// Each element is an object with a property called "name"
|
||||
$jsonDeifinition->columns[$i] = new stdClass();
|
||||
$jsonDeifinition->columns[$i]->name = $selectedFields[$i];
|
||||
}
|
||||
$saveCustomFilter = true;
|
||||
}
|
||||
else // otherwise insert a new one
|
||||
{
|
||||
$this->_ci->FiltersModel->insert(
|
||||
array(
|
||||
'app' => $this->getSessionElement(self::APP_PARAMETER),
|
||||
'dataset_name' => $this->getSessionElement(self::DATASET_NAME_PARAMETER),
|
||||
'filter_kurzbz' => uniqid($authPersonId, true),
|
||||
'description' => $descPGArray,
|
||||
'person_id' => $authPersonId,
|
||||
'sort' => null,
|
||||
'default_filter' => false,
|
||||
'filter' => json_encode($jsonDeifinition),
|
||||
'oe_kurzbz' => null
|
||||
)
|
||||
);
|
||||
|
||||
// List of applied filters
|
||||
$jsonDeifinition->filters = $this->getSessionElement(self::SESSION_FILTERS);
|
||||
|
||||
// If it is already present
|
||||
if (hasData($definition))
|
||||
{
|
||||
// update it
|
||||
$this->_ci->FiltersModel->update(
|
||||
array(
|
||||
'app' => $this->getSessionElement(self::APP_PARAMETER),
|
||||
'dataset_name' => $this->getSessionElement(self::DATASET_NAME_PARAMETER),
|
||||
'description' => $descPGArray,
|
||||
'person_id' => $authPersonId
|
||||
),
|
||||
array(
|
||||
'filter' => json_encode($jsonDeifinition)
|
||||
)
|
||||
);
|
||||
|
||||
$saveCustomFilter = true;
|
||||
}
|
||||
else // otherwise insert a new one
|
||||
{
|
||||
$this->_ci->FiltersModel->insert(
|
||||
array(
|
||||
'app' => $this->getSessionElement(self::APP_PARAMETER),
|
||||
'dataset_name' => $this->getSessionElement(self::DATASET_NAME_PARAMETER),
|
||||
'filter_kurzbz' => uniqid($authPersonId, true),
|
||||
'description' => $descPGArray,
|
||||
'person_id' => $authPersonId,
|
||||
'sort' => null,
|
||||
'default_filter' => false,
|
||||
'filter' => json_encode($jsonDeifinition),
|
||||
'oe_kurzbz' => null
|
||||
)
|
||||
);
|
||||
|
||||
$saveCustomFilter = true;
|
||||
}
|
||||
$saveCustomFilter = true;
|
||||
}
|
||||
|
||||
return $saveCustomFilter;
|
||||
@@ -721,7 +704,7 @@ class FiltersLib
|
||||
$childrenPersonalArray = array(); // contains all the children elements in menu enty for personal filters
|
||||
|
||||
// Loops through loaded filters
|
||||
foreach ($filters->retval as $filter)
|
||||
foreach (getData($filters) as $filter)
|
||||
{
|
||||
// Generate a menu entry
|
||||
$menuEntry = $this->_ci->navigationlib->oneLevel(
|
||||
|
||||
Reference in New Issue
Block a user