FSN#37973 Herkansing contract PRS-scope authorisatie
svn path=/Website/branches/v2016.2/; revision=31073
This commit is contained in:
@@ -972,30 +972,15 @@ cnt = { setcontractstatus:
|
||||
}
|
||||
oRs_loc.Close();
|
||||
|
||||
// // Alleen personen met rechten op de afdelingen van de contracten mogen deze inzien.
|
||||
// // Daarvoor hebben we de afdeling van het contract nodig.
|
||||
// var sql_afd = "SELECT k.prs_afdeling_key"
|
||||
// + " FROM cnt_contract c"
|
||||
// + " , prs_afdeling k"
|
||||
// + " WHERE c.prs_kostenplaats_key = k.prs_kostenplaats_key"
|
||||
// + " AND c.cnt_contract_key = " + pcnt_contract_key;
|
||||
// var oRs_afd = Oracle.Execute(sql_afd);
|
||||
// var afd_arr = [];
|
||||
// while (!oRs_afd.eof)
|
||||
// {
|
||||
// var ors_afd_key = oRs_afd("prs_afdeling_key").Value;
|
||||
// if (ors_afd_key)
|
||||
// afd_arr.push(ors_afd_key);
|
||||
// oRs_afd.MoveNext();
|
||||
// }
|
||||
// oRs_afd.Close();
|
||||
//
|
||||
var afd_key = cnt_info.prs_afdeling_key_eig; // te controleren
|
||||
if (user == cnt_info.perslid_key_eig || user == cnt_info.perslid_key_beh)
|
||||
afd_key = null; // dan niet moeilijk doen over de afdeling
|
||||
|
||||
// Als een contract geen locaties heeft dan heb je alle rechten op dat contract.
|
||||
var cresult = user.func_enabled2("CNT",
|
||||
{ ins_discipline_key: cnt_info.discipline_key,
|
||||
loc_key: loc_arr,
|
||||
prs_key: user_key, // key_eig, // TODO: Vind de juiste perslid. Je hebt prs_afdeling_key_eig
|
||||
afd_key: cnt_info.prs_afdeling_key_eig,
|
||||
afd_key: afd_key,
|
||||
checkOptimistic: false, // checkOptimistic
|
||||
isOptional: true
|
||||
});
|
||||
|
||||
@@ -1086,13 +1086,6 @@ Perslid.prototype.func_enabled2 = function _func_enabled2(module, params)
|
||||
// params.alg_key is geen array.
|
||||
loc_key_array.push(params.loc_key);
|
||||
}
|
||||
var afd_key_array = [];
|
||||
if (typeof params.afd_key == "object" && params.afd_key instanceof Array)
|
||||
// params.afd_key is een array.
|
||||
afd_key_array = params.afd_key;
|
||||
else if (params.afd_key > 0)
|
||||
// params.afd_key is een enkele key.
|
||||
afd_key_array.push(params.afd_key);
|
||||
|
||||
// twee vars die aangeven hoe dichtbij parameters alg_key en prs_key bij 'onszelf' zitten.
|
||||
// alglevel=5 geeft bijvoorbeeld aan dat wij een werkplek hebben op alg_key
|
||||
@@ -1176,28 +1169,30 @@ Perslid.prototype.func_enabled2 = function _func_enabled2(module, params)
|
||||
|| oRs.PRSwritelevel > -1 && oRs.PRSwritelevel < 9)
|
||||
{ // Alleen als echt nodig is bepalen
|
||||
// TODO: Bedrijf niveau ondersteunen?
|
||||
if (PRSLevel == -2 && params.prs_key)
|
||||
if (PRSLevel == -2) // Nog geen uitsluitsel
|
||||
{
|
||||
if (params.prs_key == user_key && afd_key_array.length == 0)
|
||||
if (params.prs_key == user_key) // snel klaar, altijd goed
|
||||
PRSLevel = 8;
|
||||
else
|
||||
else // Misschien via afdeling
|
||||
{
|
||||
// optimalisatie: haal de andere afd_key met een losse query op.
|
||||
var afd_key = new Perslid(params.prs_key).prs_afdeling_key();
|
||||
var sql = "SELECT MAX (a.niveau) niveau"
|
||||
+ " FROM prs_v_afdeling_familie a, prs_v_afdeling_familie aa"
|
||||
+ " WHERE a.prs_afdeling_key = " + afd_key // -- de ander
|
||||
+ " AND a.prs_afdeling_elder_key = aa.prs_afdeling_elder_key"
|
||||
+ " AND aa.prs_afdeling_key = " + this.prs_afdeling_key() // zelf
|
||||
+ (afd_key_array.length > 0
|
||||
? " AND aa.prs_afdeling_key IN (" + afd_key_array.join(",") + ")"
|
||||
: "");
|
||||
var oRs2 = Oracle.Execute(sql);
|
||||
PRSLevel = (oRs2("niveau").Value == null
|
||||
? (afd_key_array.length > 0 ? -1 : -2)
|
||||
: oRs2("niveau").Value);
|
||||
oRs2.Close();
|
||||
__Log("PRSLevel vastgesteld op: " + PRSLevel);
|
||||
if (params.prs_key)
|
||||
{ // optimalisatie: haal de andere afd_key met een losse query op.
|
||||
var afd_key = new Perslid(params.prs_key).prs_afdeling_key();
|
||||
}
|
||||
else
|
||||
var afd_key = params.afd_key; // Misschien al meegegeven
|
||||
if (params.afd_key > 0)
|
||||
{
|
||||
var sql = "SELECT MAX (a.niveau) niveau"
|
||||
+ " FROM prs_v_afdeling_familie a, prs_v_afdeling_familie aa"
|
||||
+ " WHERE a.prs_afdeling_key = " + afd_key // -- de ander
|
||||
+ " AND a.prs_afdeling_elder_key = aa.prs_afdeling_elder_key"
|
||||
+ " AND aa.prs_afdeling_key = " + this.prs_afdeling_key(); // zelf
|
||||
var oRs2 = Oracle.Execute(sql);
|
||||
PRSLevel = oRs2("niveau").value || -2;
|
||||
oRs2.Close();
|
||||
__Log("PRSLevel vastgesteld op: " + PRSLevel);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user