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();
|
oRs_loc.Close();
|
||||||
|
|
||||||
// // Alleen personen met rechten op de afdelingen van de contracten mogen deze inzien.
|
var afd_key = cnt_info.prs_afdeling_key_eig; // te controleren
|
||||||
// // Daarvoor hebben we de afdeling van het contract nodig.
|
if (user == cnt_info.perslid_key_eig || user == cnt_info.perslid_key_beh)
|
||||||
// var sql_afd = "SELECT k.prs_afdeling_key"
|
afd_key = null; // dan niet moeilijk doen over de afdeling
|
||||||
// + " 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();
|
|
||||||
//
|
|
||||||
// Als een contract geen locaties heeft dan heb je alle rechten op dat contract.
|
// Als een contract geen locaties heeft dan heb je alle rechten op dat contract.
|
||||||
var cresult = user.func_enabled2("CNT",
|
var cresult = user.func_enabled2("CNT",
|
||||||
{ ins_discipline_key: cnt_info.discipline_key,
|
{ ins_discipline_key: cnt_info.discipline_key,
|
||||||
loc_key: loc_arr,
|
loc_key: loc_arr,
|
||||||
prs_key: user_key, // key_eig, // TODO: Vind de juiste perslid. Je hebt prs_afdeling_key_eig
|
afd_key: afd_key,
|
||||||
afd_key: cnt_info.prs_afdeling_key_eig,
|
|
||||||
checkOptimistic: false, // checkOptimistic
|
checkOptimistic: false, // checkOptimistic
|
||||||
isOptional: true
|
isOptional: true
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1086,13 +1086,6 @@ Perslid.prototype.func_enabled2 = function _func_enabled2(module, params)
|
|||||||
// params.alg_key is geen array.
|
// params.alg_key is geen array.
|
||||||
loc_key_array.push(params.loc_key);
|
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.
|
// 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
|
// 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)
|
|| oRs.PRSwritelevel > -1 && oRs.PRSwritelevel < 9)
|
||||||
{ // Alleen als echt nodig is bepalen
|
{ // Alleen als echt nodig is bepalen
|
||||||
// TODO: Bedrijf niveau ondersteunen?
|
// 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;
|
PRSLevel = 8;
|
||||||
else
|
else // Misschien via afdeling
|
||||||
{
|
{
|
||||||
// optimalisatie: haal de andere afd_key met een losse query op.
|
if (params.prs_key)
|
||||||
var afd_key = new Perslid(params.prs_key).prs_afdeling_key();
|
{ // optimalisatie: haal de andere afd_key met een losse query op.
|
||||||
var sql = "SELECT MAX (a.niveau) niveau"
|
var afd_key = new Perslid(params.prs_key).prs_afdeling_key();
|
||||||
+ " FROM prs_v_afdeling_familie a, prs_v_afdeling_familie aa"
|
}
|
||||||
+ " WHERE a.prs_afdeling_key = " + afd_key // -- de ander
|
else
|
||||||
+ " AND a.prs_afdeling_elder_key = aa.prs_afdeling_elder_key"
|
var afd_key = params.afd_key; // Misschien al meegegeven
|
||||||
+ " AND aa.prs_afdeling_key = " + this.prs_afdeling_key() // zelf
|
if (params.afd_key > 0)
|
||||||
+ (afd_key_array.length > 0
|
{
|
||||||
? " AND aa.prs_afdeling_key IN (" + afd_key_array.join(",") + ")"
|
var sql = "SELECT MAX (a.niveau) niveau"
|
||||||
: "");
|
+ " FROM prs_v_afdeling_familie a, prs_v_afdeling_familie aa"
|
||||||
var oRs2 = Oracle.Execute(sql);
|
+ " WHERE a.prs_afdeling_key = " + afd_key // -- de ander
|
||||||
PRSLevel = (oRs2("niveau").Value == null
|
+ " AND a.prs_afdeling_elder_key = aa.prs_afdeling_elder_key"
|
||||||
? (afd_key_array.length > 0 ? -1 : -2)
|
+ " AND aa.prs_afdeling_key = " + this.prs_afdeling_key(); // zelf
|
||||||
: oRs2("niveau").Value);
|
var oRs2 = Oracle.Execute(sql);
|
||||||
oRs2.Close();
|
PRSLevel = oRs2("niveau").value || -2;
|
||||||
__Log("PRSLevel vastgesteld op: " + PRSLevel);
|
oRs2.Close();
|
||||||
|
__Log("PRSLevel vastgesteld op: " + PRSLevel);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user