Added/Extended PERMISSION-checks to Lehrauftraege

Added permission-checks to
. navigation
. controller methods
. tabulator data query
. cancel contract
This commit is contained in:
Cris
2019-10-28 16:23:31 +01:00
committed by hainberg
parent 7cf812deae
commit 720f117312
10 changed files with 124 additions and 37 deletions
@@ -74,6 +74,15 @@ class Lehrauftrag extends Auth_Controller
show_error('Fehler bei Berechtigungsprüfung');
}
// If studiengang_kz get param was set, check against entitled stg
if (!is_null($studiengang_kz))
{
if (!in_array($studiengang_kz, $studiengang_kz_arr))
{
show_error('Keine Berechtigung für diesen Studiengang');
}
}
// Set studiensemester selected for studiengang dropdown
$studiensemester_kurzbz = $this->input->get('studiensemester'); // if provided by selected studiensemester
if (is_null($studiensemester_kurzbz)) // else set next studiensemester as default value
@@ -123,6 +132,12 @@ class Lehrauftrag extends Auth_Controller
$betrag = (isset($lehrauftrag->betrag)) ? $lehrauftrag->betrag : null;
$vertrag_betrag = (isset($lehrauftrag->vertrag_betrag)) ? $lehrauftrag->vertrag_betrag : null;
$studiensemester_kurzbz = (isset($lehrauftrag->studiensemester_kurzbz)) ? $lehrauftrag->studiensemester_kurzbz : null;
$studiengang_kz = (isset($lehrauftrag->studiengang_kz)) ? $lehrauftrag->studiengang_kz : null;
// Check if user is entitled to order this Lehrauftrag
if (!$this->permissionlib->isBerechtigt(self::BERECHTIGUNG_LEHRAUFTRAG_BESTELLEN, 'suid', $studiengang_kz)){
show_error('Keine Bestellberechtigung für diesen Studiengang: '. $studiengang_kz);
}
// update contract if contract exists and the betrag was changed
$hasChanged = (floatval($betrag) != floatval($vertrag_betrag)) ? true : false;
@@ -32,6 +32,7 @@ class LehrauftragAkzeptieren extends Auth_Controller
$this->load->model('accounting/Vertrag_model', 'VertragModel');
$this->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel');
$this->load->model('codex/Bisverwendung_model', 'BisverwendungModel');
$this->load->model('person/Benutzer_model', 'BenutzerModel');
// Load libraries
$this->load->library('WidgetLib');
@@ -122,15 +123,42 @@ class LehrauftragAkzeptieren extends Auth_Controller
// Loop through lehraufträge
$lehrauftrag_arr = $this->input->post('selected_data');
if(is_array($lehrauftrag_arr))
{
foreach($lehrauftrag_arr as $lehrauftrag)
{
$mitarbeiter_uid = (!is_null($lehrauftrag['mitarbeiter_uid'])) ? $lehrauftrag['mitarbeiter_uid'] : null;
$vertrag_id = (!is_null($lehrauftrag['vertrag_id'])) ? $lehrauftrag['vertrag_id'] : null;
// Check if user is entitled to accept this Lehrauftrag
// * first retrieve person_id of the contract
$this->VertragModel->addSelect('person_id');
if ($result = getData($this->VertragModel->load($vertrag_id)))
{
// * then find the uid of that contracts person_id
$this->BenutzerModel->addSelect('uid');
if ($result = getData($this->BenutzerModel->getFromPersonId($result[0]->person_id)))
{
// * finally check uid of contract against the logged in user
if ($result[0]->uid != $this->_uid)
{
show_error('Keine Berechtigung für diesen Vertrag');
}
}
else
{
show_error($result->retval);
}
}
else
{
show_error($result->retval);
}
// Set status to accepted
$result = $this->VertragModel->setStatus($vertrag_id, $mitarbeiter_uid, 'akzeptiert');
$result = $this->VertragModel->setStatus($vertrag_id, $this->_uid, 'akzeptiert');
if ($result->retval)
{
@@ -75,6 +75,15 @@ class LehrauftragErteilen extends Auth_Controller
show_error('Fehler bei Berechtigungsprüfung');
}
// If oe_kurzbz get param was set, check against entitled stg
if (!is_null($oe_kurzbz))
{
if (!in_array($oe_kurzbz, $oe_kurzbz_arr))
{
show_error('Keine Berechtigung für diese Organisationseinheit');
}
}
// Set studiensemester selected for studiengang dropdown
$studiensemester_kurzbz = $this->input->get('studiensemester'); // if provided by selected studiensemester
if (is_null($studiensemester_kurzbz)) // else set next studiensemester as default value
@@ -118,6 +127,12 @@ class LehrauftragErteilen extends Auth_Controller
{
$mitarbeiter_uid = (isset($lehrauftrag->mitarbeiter_uid)) ? $lehrauftrag->mitarbeiter_uid : null;
$vertrag_id = (isset($lehrauftrag->vertrag_id)) ? $lehrauftrag->vertrag_id : null;
$lv_oe_kurzbz = (isset($lehrauftrag->lv_oe_kurzbz)) ? $lehrauftrag->lv_oe_kurzbz : null;
// Check if user is entitled to approve this Lehrauftrag
if (!$this->permissionlib->isBerechtigt(self::BERECHTIGUNG_LEHRAUFTRAG_ERTEILEN, 'suid', $lv_oe_kurzbz)){
show_error('Keine Erteilberechtigung für diese Organisationseinheit: '. $lv_oe_kurzbz);
}
$result = $this->VertragModel->setStatus($vertrag_id, $mitarbeiter_uid, 'erteilt');