MARX#36577: Security LEK: facturen zijn door alle andere leveranciers in te zien.

svn path=/Website/branches/v2016.1/; revision=29489
This commit is contained in:
Maykel Geerdink
2016-05-23 13:27:28 +00:00
parent 7a4db75119
commit 51a81d015a
2 changed files with 30 additions and 22 deletions

View File

@@ -52,18 +52,24 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur?
}
// WEB_RELMAN is onderdeel van de PRS module
var presult = user.func_enabled2("PRS", { prs_key: user_key, isOptional: true });
var isContactpersoon = user.isContactpersoon();
// Als ik een contactpersoon ben dan heb ik alleen rechten om facturen van mijn eigen bedrijf te zien/wijzigen.
fresult.iamContact = user.isContactpersoon(); // Ben ik een contactpersoon?
fresult.iamBedrijfContact = false; // Aan bedrijf toegekend en ik ben contactpersoon van dat bedrijf?
if (ref_info.lev_uit_type == 'B')
{ // Ik ga er van uit dat je NIET als vervanger van een contactpersoon van een ander bedrijf wordt aangewezen.
fresult.iamBedrijfContact = user.isContactpersoon(ref_info.lev_uit_key); // Ben ik contactpersoon van het uitvoerende bedrijf?
}
fresult.canFEwrite = fresult.canWrite("WEB_FINUSE") && isContactpersoon;
fresult.canFEwrite =(fresult.iamContact? (fresult.canRead("WEB_FINUSE") && fresult.iamBedrijfContact) : fresult.canRead("WEB_FINUSE"));
fresult.canFOwrite = fresult.canWrite("WEB_FINFOF");
fresult.canBOwrite = fresult.canWrite("WEB_FINBOF");
fresult.canGOEwrite = fresult.canWrite("WEB_FINGOE");
fresult.canWriteAny = fresult.canWrite("WEB_FINUSE") && isContactpersoon || fresult.canWrite("WEB_FINFOF") || fresult.canWrite("WEB_FINBOF");
fresult.canReadAny = (fresult.canRead("WEB_FINUSE") && isContactpersoon) ||
fresult.canWriteAny = fresult.canWrite("WEB_FINUSE") && fresult.iamContact || fresult.canWrite("WEB_FINFOF") || fresult.canWrite("WEB_FINBOF");
fresult.canReadAny = (fresult.iamContact? (fresult.canRead("WEB_FINUSE") && fresult.iamBedrijfContact) : fresult.canRead("WEB_FINUSE")) ||
fresult.canRead("WEB_FINFOF") ||
fresult.canRead("WEB_FINBOF") ||
user.isCollega(kpverantwoordelijke);
fresult.canFEread = fresult.canRead("WEB_FINUSE") && isContactpersoon;
fresult.canFEread = fresult.canRead("WEB_FINUSE") && fresult.iamContact;
fresult.canFOread = fresult.canRead("WEB_FINFOF");
fresult.canBOread = fresult.canRead("WEB_FINBOF");
fresult.canGOEread = fresult.canRead("WEB_FINGOE");
@@ -90,44 +96,44 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur?
switch (fin_status)
{
case 3: // Incompleet
fresult.canChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) ||
fresult.canChange = (fresult.canWrite("WEB_FINUSE") && fresult.iamContact) ||
fresult.canWrite("WEB_FINFOF") ||
(fresult.canWrite("WEB_FINBOF") && S("fin_bof_mag_editen") == 1);
fresult.canDelete = fresult.canWrite("WEB_FINFOF") || fresult.canWrite("WEB_FINUSE");
fresult.canDateChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF");
fresult.canRemarkChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF");
fresult.canInvLinChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF");
fresult.canDateChange = (fresult.canWrite("WEB_FINUSE") && fresult.iamContact) || fresult.canWrite("WEB_FINFOF");
fresult.canRemarkChange = (fresult.canWrite("WEB_FINUSE") && fresult.iamContact) || fresult.canWrite("WEB_FINFOF");
fresult.canInvLinChange = (fresult.canWrite("WEB_FINUSE") && fresult.iamContact) || fresult.canWrite("WEB_FINFOF");
break;
case 1: // Afgewezen
fresult.canUnReject = (fresult.canWrite("WEB_FINFOF") || fresult.canWrite("WEB_FINBOF") || user.isCollega(kpverantwoordelijke)) && (kpverantwoordelijke > 0);
break;
case -1: // Nieuwe factuur
case 2: // Ingevoerd
fresult.canChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) ||
fresult.canChange = (fresult.canWrite("WEB_FINUSE") && fresult.iamContact) ||
fresult.canWrite("WEB_FINFOF") ||
(fresult.canWrite("WEB_FINBOF") && S("fin_bof_mag_editen") == 1);
fresult.canAccept = (fresult.canWrite("WEB_FINBOF") || user.isCollega(kpverantwoordelijke)) && (kpverantwoordelijke > 0);
fresult.canDelete = fresult.canWrite("WEB_FINFOF") || fresult.canWrite("WEB_FINUSE");
fresult.canDateChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF");
fresult.canRemarkChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF");
fresult.canInvLinChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF");
fresult.canDateChange = (fresult.canWrite("WEB_FINUSE") && fresult.iamContact) || fresult.canWrite("WEB_FINFOF");
fresult.canRemarkChange = (fresult.canWrite("WEB_FINUSE") && fresult.iamContact) || fresult.canWrite("WEB_FINFOF");
fresult.canInvLinChange = (fresult.canWrite("WEB_FINUSE") && fresult.iamContact) || fresult.canWrite("WEB_FINFOF");
break;
case 5: // Financieel goedgekeurd
fresult.canUnapprove = fresult.canWrite("WEB_FINGOE") || (fresult.canWrite("WEB_FINFOF") || fresult.canWrite("WEB_FINBOF") || user.isCollega(kpverantwoordelijke)) && (kpverantwoordelijke > 0);
// Maar na wijzigen moet er opnieuw gefiatteed worden door BO.
fresult.canChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF");
fresult.canDateChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF");
fresult.canRemarkChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF");
fresult.canInvLinChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF");
fresult.canChange = (fresult.canWrite("WEB_FINUSE") && fresult.iamContact) || fresult.canWrite("WEB_FINFOF");
fresult.canDateChange = (fresult.canWrite("WEB_FINUSE") && fresult.iamContact) || fresult.canWrite("WEB_FINFOF");
fresult.canRemarkChange = (fresult.canWrite("WEB_FINUSE") && fresult.iamContact) || fresult.canWrite("WEB_FINFOF");
fresult.canInvLinChange = (fresult.canWrite("WEB_FINUSE") && fresult.iamContact) || fresult.canWrite("WEB_FINFOF");
fresult.canGoedkeur = fresult.canWrite("WEB_FINGOE") && user.isCollega(goedkeurder) && S("fin_enable_goedkeuren") == 1;
break;
case 6: // Akkoord
fresult.canUnapprove = (fresult.canWrite("WEB_FINFOF") || fresult.canWrite("WEB_FINBOF") || user.isCollega(kpverantwoordelijke)) && (kpverantwoordelijke > 0);
// Maar na wijzigen moet er opnieuw gefiatteed worden door BO.
fresult.canChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF");
fresult.canDateChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF");
fresult.canRemarkChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF");
fresult.canInvLinChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF");
fresult.canChange = (fresult.canWrite("WEB_FINUSE") && fresult.iamContact) || fresult.canWrite("WEB_FINFOF");
fresult.canDateChange = (fresult.canWrite("WEB_FINUSE") && fresult.iamContact) || fresult.canWrite("WEB_FINFOF");
fresult.canRemarkChange = (fresult.canWrite("WEB_FINUSE") && fresult.iamContact) || fresult.canWrite("WEB_FINFOF");
fresult.canInvLinChange = (fresult.canWrite("WEB_FINUSE") && fresult.iamContact) || fresult.canWrite("WEB_FINFOF");
break;
case 7: // Verwerkt
break;

View File

@@ -760,13 +760,15 @@ Perslid.prototype.isBudgethouder = function()
}
// Ben ik contactpersoon van *een* bedrijf (maakt niet uit welke)
Perslid.prototype.isContactpersoon = function()
Perslid.prototype.isContactpersoon = function(bedrijf_key)
{
var contactpersoon = false;
var sql = "SELECT COUNT(*)"
+ " FROM prs_contactpersoon cp"
+ " WHERE cp.prs_perslid_key = " + this._prs_perslid_key
+ " AND cp.prs_contactpersoon_verwijder IS NULL";
if (bedrijf_key)
sql += " AND prs_bedrijf_key = " + bedrijf_key;
var oRs = Oracle.Execute(sql);
if (oRs(0).value > 0)
contactpersoon = true;