mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-05 21:09:28 +00:00
Added/Extended PERMISSION-checks to Lehrauftraege
Added permission-checks to . navigation . controller methods . tabulator data query . cancel contract
This commit is contained in:
@@ -56,7 +56,10 @@ $config['navigation_header'] = array(
|
||||
'description' => 'Lehrauftrag',
|
||||
'expand' => true,
|
||||
'sort' => 40,
|
||||
'requiredPermissions' => 'lehre:r'
|
||||
'requiredPermissions' => array(
|
||||
'lehre/lehrauftrag_bestellen:r',
|
||||
'lehre/lehrauftrag_erteilen:r'
|
||||
)
|
||||
)
|
||||
)
|
||||
),
|
||||
@@ -132,6 +135,7 @@ $config['navigation_menu']['lehre/lehrauftrag/Lehrauftrag/index'] = array(
|
||||
'description' => 'Lehrauftrag bestellen',
|
||||
'icon' => '',
|
||||
'sort' => 1,
|
||||
'requiredPermissions' => 'lehre/lehrauftrag_bestellen:r',
|
||||
'target' => '_blank'
|
||||
),
|
||||
'lehrauftragErteilen' => array(
|
||||
@@ -139,6 +143,7 @@ $config['navigation_menu']['lehre/lehrauftrag/Lehrauftrag/index'] = array(
|
||||
'description' => 'Lehrauftrag erteilen',
|
||||
'icon' => '',
|
||||
'sort' => 1,
|
||||
'requiredPermissions' => 'lehre/lehrauftrag_erteilen:r',
|
||||
'target' => '_blank'
|
||||
)
|
||||
);
|
||||
|
||||
@@ -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');
|
||||
|
||||
|
||||
@@ -528,7 +528,6 @@ $this->load->view(
|
||||
// reduce to necessary fields
|
||||
return {
|
||||
'row_index' : data.row_index,
|
||||
'mitarbeiter_uid' : data.mitarbeiter_uid,
|
||||
'vertrag_id' : data.vertrag_id
|
||||
}
|
||||
});
|
||||
|
||||
@@ -281,7 +281,7 @@ $filterWidgetArray = array(
|
||||
'app' => LehrauftragAkzeptieren::APP,
|
||||
'datasetName' => 'lehrauftragAccept',
|
||||
'filterKurzbz' => 'LehrauftragAccept',
|
||||
'requiredPermissions' => 'lehre', // TODO: change permission
|
||||
'requiredPermissions' => 'lehre/lehrauftrag_akzeptieren',
|
||||
'datasetRepresentation' => 'tabulator',
|
||||
'reloadDataset' => true, // reload query on page refresh
|
||||
'customMenu' => false,
|
||||
|
||||
@@ -620,6 +620,7 @@ $(function() {
|
||||
'row_index': data.row_index,
|
||||
'mitarbeiter_uid' : data.mitarbeiter_uid,
|
||||
'vertrag_id' : data.vertrag_id,
|
||||
'lv_oe_kurzbz' : data.lv_oe_kurzbz
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -289,7 +289,7 @@ $filterWidgetArray = array(
|
||||
'app' => LehrauftragErteilen::APP,
|
||||
'datasetName' => 'lehrauftragApprove',
|
||||
'filterKurzbz' => 'LehrauftragApprove',
|
||||
'requiredPermissions' => 'lehre', // TODO: change permission
|
||||
'requiredPermissions' => 'lehre/lehrauftrag_erteilen',
|
||||
'datasetRepresentation' => 'tabulator',
|
||||
'reloadDataset' => true, // reload query on page refresh
|
||||
'customMenu' => false,
|
||||
|
||||
@@ -294,7 +294,7 @@ $filterWidgetArray = array(
|
||||
'app' => Lehrauftrag::APP,
|
||||
'datasetName' => 'lehrauftragOrder',
|
||||
'filterKurzbz' => 'LehrauftragOrder',
|
||||
'requiredPermissions' => 'lehre', // TODO: change permission
|
||||
'requiredPermissions' => 'lehre/lehrauftrag_bestellen',
|
||||
'datasetRepresentation' => 'tabulator',
|
||||
'reloadDataset' => true, // reload query on page refresh
|
||||
'customMenu' => false,
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
// * - Lehreinheitmitarbeiter Zuteilung hinzufuegen/bearbeiten/loeschen
|
||||
// * - Lehreinheitgruppe Zutelung hinzufuegen/loeschen
|
||||
// * - Lehreinheit anlegen/bearbeiten/loeschen
|
||||
// * - Lehrauftrag (Vertrag) loeschen (stornieren)
|
||||
// ****************************************
|
||||
|
||||
require_once('../../config/vilesci.config.inc.php');
|
||||
@@ -1754,43 +1755,66 @@ if(!$error)
|
||||
}
|
||||
elseif(isset($_POST['type']) && $_POST['type']=='cancelVertrag')
|
||||
{
|
||||
if(isset($_POST['vertrag_id']) && isset($_POST['mitarbeiter_uid']))
|
||||
$error = false;
|
||||
|
||||
// Check if user is entitled to cancel this contract
|
||||
if (isset($_POST['vertrag_id']) && is_numeric($_POST['vertrag_id']))
|
||||
{
|
||||
// * first find lehrveranstaltung_id of the contracts lehrveranstaltung
|
||||
$vertrag = new vertrag();
|
||||
if($vertrag->cancel($_POST['vertrag_id'], $_POST['mitarbeiter_uid']))
|
||||
$vertrag->load($_POST['vertrag_id']);
|
||||
$lva = new lehrveranstaltung($vertrag->lehrveranstaltung_id);
|
||||
|
||||
// * then check if the user has permissions to cancel the corresponding lv-organisational units
|
||||
if (!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') &&
|
||||
!$rechte->isBerechtigtMultipleOe('lehre/lehrauftrag_bestellen', $lva->getAllOe(), 'suid'))
|
||||
{
|
||||
$return = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$errormsg = 'Fehler beim Ausführen des Vertragsstornos';
|
||||
$error = true;
|
||||
$return = false;
|
||||
$errormsg = 'Keine Berechtigung';
|
||||
}
|
||||
}
|
||||
elseif(isset($_POST['vertrag_id']) && isset($_POST['person_id']))
|
||||
{
|
||||
$benutzer = new Benutzer();
|
||||
if($benutzer->getBenutzerFromPerson($_POST['person_id']))
|
||||
{
|
||||
$mitarbeiter_uid = $benutzer->result[0]->uid;
|
||||
|
||||
$vertrag = new vertrag();
|
||||
if($vertrag->cancel($_POST['vertrag_id'], $mitarbeiter_uid))
|
||||
{
|
||||
$return = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$errormsg = 'Fehler beim Ausführen des Vertragsstornos';
|
||||
$return = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$errormsg = 'Benutzer konnte nicht von PersonID geladen werden';
|
||||
$return = false;
|
||||
}
|
||||
}
|
||||
if (!$error)
|
||||
{
|
||||
if(isset($_POST['mitarbeiter_uid']))
|
||||
{
|
||||
$vertrag = new vertrag();
|
||||
if($vertrag->cancel($_POST['vertrag_id'], $_POST['mitarbeiter_uid']))
|
||||
{
|
||||
$return = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$errormsg = 'Fehler beim Ausführen des Vertragsstornos';
|
||||
$return = false;
|
||||
}
|
||||
}
|
||||
elseif(isset($_POST['person_id']))
|
||||
{
|
||||
$benutzer = new Benutzer();
|
||||
if($benutzer->getBenutzerFromPerson($_POST['person_id']))
|
||||
{
|
||||
$mitarbeiter_uid = $benutzer->result[0]->uid;
|
||||
|
||||
$vertrag = new vertrag();
|
||||
if($vertrag->cancel($_POST['vertrag_id'], $mitarbeiter_uid))
|
||||
{
|
||||
$return = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$errormsg = 'Fehler beim Ausführen des Vertragsstornos';
|
||||
$return = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$errormsg = 'Benutzer konnte nicht von PersonID geladen werden';
|
||||
$return = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$errormsg = 'VertragsID und MitarbeiterUID müssen uebergeben werden';
|
||||
|
||||
Reference in New Issue
Block a user