Files
Facilitor/APPL/PRS/kpn_edit_mandate_save.asp
Maykel Geerdink 1ef371a266 FSN#31220: kpn_edit_mandate_save.asp bevat XSS.
svn path=/Website/trunk/; revision=25488
2015-06-18 11:57:36 +00:00

202 lines
7.0 KiB
Plaintext

<%@language = "javascript" %>
<% /*
$Revision$
$Id$
File: kpn_edit_mandate_save
Description: SUBMIT-form
Parameters:
keys String van prs_perslidkostenplaats keys (dan multi-edit kostenplaatsen)
of: form kpn_kpnkey voor ondermandateren?
Context:
Note:
SUBMIT-form
*/ %>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../shared/save2db.inc" -->
<%
protectRequest.validateToken();
FCLTHeader.Requires({ plugins:["jQuery"] })
var kpnman_keys = getQParamIntArray("keys", []);
var authparams = user.checkAutorisation("WEB_FINMSU", true);
if (authparams && authparams.ALGwritelevel < 9)
{
var filtercode = "A"; // alles, mandateren
}
else
{
var filtercode = "B"; // kostenplaatsverantwoordelijke, ondermandateren
var authparams = user.checkAutorisation("WEB_FACMAN");
// Voor WEB_FACMAN kijken naar prs write rechten, fac_functie_min_level = 7, lezen en schrijven organisatie (Let op dat alg write rechten dan altijd -1 zijn, ook bij geen write rechten)
// Dus alleen kijken naar prs write rechten
var canSave = (authparams.PRSwritelevel < 9);
user.auth_required_or_abort(canSave);
if (kpnman_keys.length > 0 && kpnman_keys[0] > -1)
{ // Het is geen nieuwe mandate
var tobesaved = 0;
var ingesloten = [];
for (var i = 0; i < kpnman_keys.length; i++)
{
if (canSave)
{ // De rechten heb je
sql = "SELECT prs_perslidkostenplaats_key"
+ " , prs_kostenplaats_key"
+ " FROM prs_perslidkostenplaats"
+ " WHERE prs_perslidkostenplaats_key = " + kpnman_keys[i]
var oRs = Oracle.Execute(sql);
if (oRs.eof)
shared.record_not_found("<!--" + kpnman_keys[i] + "-->");
if (!oRs.eof && oRs("prs_kostenplaats_key").value)
{ // prs_kostenplaats_key heeft een waarde
ingesloten.push(kpnman_keys[i]);
tobesaved++;
}
oRs.Close();
}
}
user.auth_required_or_abort(tobesaved > 0); // We klagen niet over enkele wel en enkele niet
kpnman_keys = ingesloten;
}
}
var multi = kpnman_keys.length > 1;
var fields = [ { dbs: "prs_perslidkostenplaats_boeken", typ: "check", frm: "kpn_kpnbk" },
{ dbs: "prs_perslidkostenplaats_inzage", typ: "check", frm: "kpn_kpninz" }];
var closetab = false;
var warning = "";
if (multi)
{ // Multi update
var boeken = (Request.Form("has_kpn_kpnbk").count == 1 && Request.Form("kpn_kpnbk").count == 1)
var inzage = (Request.Form("has_kpn_kpninz").count == 1 && Request.Form("kpn_kpninz").count == 1)
if (boeken || inzage)
{
sql = buildUpdate("prs_perslidkostenplaats", fields)
+ " prs_perslidkostenplaats_key IN (" + kpnman_keys.join(",") + ")";
}
else
{
sql = "DELETE FROM prs_perslidkostenplaats WHERE prs_perslidkostenplaats_key IN (" + kpnman_keys.join(",") + ")";
}
var err = Oracle.Execute(sql, true);
if (err.friendlyMsg)
warning = err.friendlyMsg;
}
else if (kpnman_keys[0] > 0)
{ // Update
var boeken = (Request.Form("has_kpn_kpnbk").count == 1 && Request.Form("kpn_kpnbk").count == 1)
var inzage = (Request.Form("has_kpn_kpninz").count == 1 && Request.Form("kpn_kpninz").count == 1)
if (boeken || inzage)
{
sql = buildUpdate("prs_perslidkostenplaats", fields)
+ " prs_perslidkostenplaats_key = " + kpnman_keys[0];
}
else
{
sql = "DELETE FROM prs_perslidkostenplaats WHERE prs_perslidkostenplaats_key = " + kpnman_keys[0]
closetab = true;
}
var err = Oracle.Execute(sql, true);
if (err.friendlyMsg)
warning = err.friendlyMsg;
}
else // kpnman_keys == -1
{ // Insert nieuwe perslidkostenplaatsen
fields.push({ dbs: "prs_perslid_key", typ: "key", frm: "kpn_prskey" });
fields.push({ dbs: "prs_perslidkostenplaats_key", typ: "key", seq: "prs_s_prs_perslidkp_key" });
var kpn_kpnkeys = getFParamIntArray("kpn_kpnkey", []);
if (kpn_kpnkeys.length == 0 && filtercode != 'A')
{
warning = "U moet kostenplaatsen selecteren.";
}
else
{
var kpn_prskey = getFParamInt("kpn_prskey"); // Gemandateerde persoon.
kpnman_keys = [];
// Als "Alle" (kostenplaatsen) is geselecteerd samen met andere kostenplaatsen, dan zijn andere geselecteerde kostenplaatsen niet meer interessant.
if (kpn_kpnkeys.join(",").indexOf("-1") != -1)
kpn_kpnkeys = [-1];
// Als de array leeg is dan is "Alle" (kostenplaatsen) geselecteerd geweest.
if (kpn_kpnkeys.length == 0)
kpn_kpnkeys = [-1];
for (var i = 0; i < kpn_kpnkeys.length; i++)
{
// Controleer of de informatie al in de tabel aanwezig is
// (Of de persoon al rechten heeft voor de kostenplaats)
sql = "SELECT COALESCE(pk.prs_kostenplaats_key, -1)"
+ " FROM prs_perslidkostenplaats pk"
+ " WHERE COALESCE(pk.prs_kostenplaats_key, -1) = " + kpn_kpnkeys[i]
+ " AND pk.prs_perslid_key = " + kpn_prskey
+ " ORDER BY 1";
var oRsKP = Oracle.Execute(sql);
var present = (1 == 0);
if (!oRsKP.eof)
{
present = (1 == 1); // Informatie is aanwezig
}
if (!present)
{ // Informatie is niet aanwezig, dus voeg nieuwe relatie toe
if (kpn_kpnkeys[i] == -1)
{ // Als de nieuwe rechten voor alle kostenplaatsen zijn, verwijder de aanwezige relaties
sql = "DELETE prs_perslidkostenplaats"
+ " WHERE prs_perslid_key = " + kpn_prskey;
Oracle.Execute(sql);
}
else
{ // Verwijder rechten voor alle kostenplaatsen indien aanwezig
sql = "DELETE prs_perslidkostenplaats"
+ " WHERE prs_perslid_key = " + kpn_prskey
+ " AND prs_kostenplaats_key IS NULL";
Oracle.Execute(sql);
}
fields.push({ dbs: "prs_kostenplaats_key", typ: "key", val: kpn_kpnkeys[i] });
var regIns = buildInsert("prs_perslidkostenplaats", fields);
kpnman_keys[kpnman_keys.length] = regIns.sequences["prs_perslidkostenplaats_key"];
sql = regIns.sql;
var err = Oracle.Execute(sql, true);
if (err.friendlyMsg)
warning += err.friendlyMsg;
fields.pop(); // Haal de prs_kostenplaats_key (laatste fields item) er weer vanaf
}
oRsKP.Close();
}
}
}
%>
<html>
<head>
<% FCLTHeader.Generate() %>
<script>
$(document).ready(function () {
FcltMgr.closeDetail(window, { kpnman_keys: "<%=kpnman_keys.join(",")%>",
warning: "<%=safe.jsstring(warning)%>",
keepForm: <%=warning?"true":"false"%>,
close: <%=closetab || multi?"true":"false"%>,
refresh: true
}); } );
</script>
</head>
<body>
</body>
</html>