FSN#35817 Autorisaties via API2/Scaffolding: Code versimpeling, betere kolommen, setting S("auth_edit_advanced")
svn path=/Website/trunk/; revision=28714
This commit is contained in:
@@ -635,10 +635,10 @@ api2 = {
|
||||
var outer = "(+)";
|
||||
if ("outertoggle" in inc)
|
||||
{
|
||||
if (params.filter.has_scf_outer && params.filter.scf_outer != "on")
|
||||
if (params.filter.has_scf_outer && params.filter.scf_outer == "on")
|
||||
outer = "";
|
||||
else
|
||||
outer = inc.outertoggle.def?"(+)":"";
|
||||
outer = inc.outertoggle.def?"":"(+)";
|
||||
}
|
||||
wheres.push ( model.table + "." + model.primary + "=" + inc.model.table + "." + inc.model.fields[inc.joinfield].dbs + outer);
|
||||
}
|
||||
@@ -793,11 +793,11 @@ api2 = {
|
||||
sql2jsonval: function _sql2jsonval(oRs, fld, model)
|
||||
{
|
||||
var field = model.fields[fld];
|
||||
var sqlfieldname = (model.aliasprefix ? api2.sqlfield_alias(model, fld) : field.dbs);
|
||||
if (field.val instanceof Function)
|
||||
var val = field.val(oRs, field, model);
|
||||
var val = field.val(oRs, field, model, sqlfieldname);
|
||||
else if (field.dbs.indexOf(".") < 0)
|
||||
{
|
||||
var sqlfieldname = (model.aliasprefix ? api2.sqlfield_alias(model, fld) : field.dbs);
|
||||
var val = oRs(sqlfieldname).Value;
|
||||
}
|
||||
else
|
||||
|
||||
@@ -44,6 +44,7 @@ function model_fac_functie (functie_key, params)
|
||||
"readonly": true,
|
||||
"typ": "varchar",
|
||||
"filterdefault": this.module?":!"+this.module:null,
|
||||
"showfixedfilter": true,
|
||||
"foreign": {
|
||||
"tbl": "fac_module",
|
||||
"key": "fac_module_name",
|
||||
@@ -100,7 +101,7 @@ function model_fac_functie (functie_key, params)
|
||||
this.includes = {"authorization":
|
||||
{ "model": new model_fac_groeprechten(params),
|
||||
"joinfield": "fac_functie",
|
||||
"outertoggle": { def: true, lbl: L("fac_gebruiker_outerfunctie") }
|
||||
"outertoggle": { def: false, lbl: L("fac_gebruiker_outerfunctie") }
|
||||
}};
|
||||
}
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@ function model_fac_groep(groep_key, params)
|
||||
= {
|
||||
"model": new model_fac_groeprechten(params),
|
||||
"joinfield": "fac_groep",
|
||||
outertoggle: { def: true, lbl: L("fac_gebruiker_outergroep") }
|
||||
outertoggle: { def: false, lbl: L("fac_gebruiker_outergroep") }
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -70,9 +70,9 @@ function model_fac_groeprechten (params)
|
||||
"typ": "key",
|
||||
"hidden_fld": true,
|
||||
"foreign": {
|
||||
"tbl": "FAC_FUNCTIE",
|
||||
"key": "FAC_FUNCTIE_KEY",
|
||||
"desc": "FAC_FUNCTIE_OMSCHRIJVING"
|
||||
"tbl": "fac_functie",
|
||||
"key": "fac_functie_key",
|
||||
"desc": "fac_functie_omschrijving"
|
||||
}
|
||||
},
|
||||
"ins_discipline": {
|
||||
@@ -91,43 +91,85 @@ function model_fac_groeprechten (params)
|
||||
"dbs": "fac_gebruiker_prs_level_read",
|
||||
"label": L("fac_gebruiker_prs_level_read"),
|
||||
"typ": "number",
|
||||
"LOV": buildPrsLevelLOV()
|
||||
"foreign": foreignPRSRechten
|
||||
},
|
||||
"prs_level_write": {
|
||||
"dbs": "fac_gebruiker_prs_level_write",
|
||||
"label": L("fac_gebruiker_prs_level_write"),
|
||||
"typ": "number",
|
||||
"LOV": buildPrsLevelLOV()
|
||||
"foreign": foreignPRSRechten
|
||||
},
|
||||
"alg_level_read": {
|
||||
"dbs": "fac_gebruiker_alg_level_read",
|
||||
"label": L("fac_gebruiker_alg_level_read"),
|
||||
"typ": "number",
|
||||
"LOV": buildAlgLevelLOV()
|
||||
"foreign": foreignALGRechten
|
||||
},
|
||||
"alg_level_write": {
|
||||
"dbs": "fac_gebruiker_alg_level_write",
|
||||
"label": L("fac_gebruiker_alg_level_write"),
|
||||
"typ": "number",
|
||||
"LOV": buildAlgLevelLOV()
|
||||
"foreign": foreignALGRechten
|
||||
}
|
||||
};
|
||||
|
||||
function fnFunctieDisc(oRs, field, model)
|
||||
function fnFunctieDisc(oRs, field, model, sqlfieldname)
|
||||
{
|
||||
if (!model.hasdisc)
|
||||
return "N.v.t."; // N.v.t.
|
||||
var nn_disc = oRs(api2.sqlfield_alias(model, "ins_discipline")).Value;
|
||||
var nn_disc = oRs(sqlfieldname).Value;
|
||||
return model.module + " " + nn_disc + "/"+ model.total_disc;
|
||||
};
|
||||
function fnGroep(oRs, field, model)
|
||||
|
||||
function fnGroep(oRs, field, model, sqlfieldname)
|
||||
{
|
||||
var nn_grp = oRs(api2.sqlfield_alias(model, "fac_groep")).Value;
|
||||
var nn_grp = oRs(sqlfieldname).Value;
|
||||
if (nn_grp > 0)
|
||||
return nn_grp;
|
||||
return "";
|
||||
};
|
||||
|
||||
function foreignALGRechten(val)
|
||||
{
|
||||
switch (val)
|
||||
{
|
||||
case -3: return "";
|
||||
case -2: return L("fac_gebruiker_level_variabel");
|
||||
default: return api2.splitLOV(buildAlgLevelLOV())[val]
|
||||
}
|
||||
}
|
||||
function foreignPRSRechten(val)
|
||||
{
|
||||
switch (val)
|
||||
{
|
||||
case -3: return "";
|
||||
case -2: return L("fac_gebruiker_level_variabel");
|
||||
default: return api2.splitLOV(buildPrsLevelLOV())[val]
|
||||
}
|
||||
}
|
||||
// Levert -3 op als rechten niet van toepassing zijn op een veld
|
||||
function fnRechten(oRs, field, model, sqlfieldname)
|
||||
{
|
||||
if ("min_level" in model)
|
||||
var min_level = model.min_level
|
||||
else
|
||||
var min_level = oRs("fac_functie_min_level").Value;
|
||||
|
||||
if (!(min_level & 2) // Geen schrijfrechten
|
||||
&& (field.dbs == "fac_gebruiker_prs_level_write" || field.dbs == "fac_gebruiker_alg_level_write")
|
||||
)
|
||||
return -3; // N.v.t.
|
||||
if (!(min_level & 4) && (min_level & 8) // Geen PRS, wel ALG
|
||||
&& (field.dbs == "fac_gebruiker_prs_level_read" || field.dbs == "fac_gebruiker_prs_level_write")
|
||||
)
|
||||
return -3;
|
||||
if (!(min_level & 8) // Geen ALG rechten
|
||||
&& (field.dbs == "fac_gebruiker_alg_level_read" || field.dbs == "fac_gebruiker_alg_level_write")
|
||||
)
|
||||
return -3;
|
||||
return oRs(sqlfieldname).Value;
|
||||
};
|
||||
|
||||
if (params.functie_key > 0 && params.groep_key > 0)
|
||||
{
|
||||
this.tablesql = "(SELECT *"
|
||||
@@ -148,6 +190,7 @@ function model_fac_groeprechten (params)
|
||||
{
|
||||
var sql = "SELECT fac_functie_module"
|
||||
+ " , fac_functie_discipline"
|
||||
+ " , fac_functie_min_level"
|
||||
+ " , (SELECT COUNT(*)"
|
||||
+ " FROM ins_tab_discipline"
|
||||
+ " WHERE ins_discipline_verwijder IS NULL"
|
||||
@@ -157,36 +200,47 @@ function model_fac_groeprechten (params)
|
||||
var oRs = Oracle.Execute(sql);
|
||||
this.module = oRs("fac_functie_module").Value;
|
||||
this.hasdisc = oRs("fac_functie_discipline").Value == 1;
|
||||
this.min_level = oRs("fac_functie_min_level").Value;
|
||||
this.total_disc = oRs("nn_disc").Value;
|
||||
oRs.Close();
|
||||
if (!(min_level & (4 | 8)))
|
||||
{
|
||||
this.fields["prs_level_read"].label = L("fac_gebruiker_lezen"); // Generiekere labels
|
||||
this.fields["prs_level_write"].label = L("fac_gebruiker_schrijven");
|
||||
}
|
||||
|
||||
this.tablesql = "(SELECT MIN(fac_groeprechten_key) fac_groeprechten_key,"
|
||||
+ " fac_groep_key,"
|
||||
+ " fac_functie_key,"
|
||||
+ " COUNT(ins_discipline_key) nn_disc,"
|
||||
+ " MIN(fac_gebruiker_prs_level_read) fac_gebruiker_prs_level_read,"
|
||||
+ " MIN(fac_gebruiker_prs_level_write) fac_gebruiker_prs_level_write,"
|
||||
+ " MIN(fac_gebruiker_alg_level_read) fac_gebruiker_alg_level_read,"
|
||||
+ " MIN(fac_gebruiker_alg_level_write) fac_gebruiker_alg_level_write"
|
||||
+ " CASE WHEN COUNT(DISTINCT fac_gebruiker_prs_level_read) > 1 THEN -2 ELSE MIN(fac_gebruiker_prs_level_read) END fac_gebruiker_prs_level_read,"
|
||||
+ " CASE WHEN COUNT(DISTINCT fac_gebruiker_prs_level_write) > 1 THEN -2 ELSE MIN(fac_gebruiker_prs_level_write) END fac_gebruiker_prs_level_write,"
|
||||
+ " CASE WHEN COUNT(DISTINCT fac_gebruiker_alg_level_read) > 1 THEN -2 ELSE MIN(fac_gebruiker_alg_level_read) END fac_gebruiker_alg_level_read,"
|
||||
+ " CASE WHEN COUNT(DISTINCT fac_gebruiker_alg_level_write) > 1 THEN -2 ELSE MIN(fac_gebruiker_alg_level_write) END fac_gebruiker_alg_level_write"
|
||||
+ " FROM fac_groeprechten"
|
||||
+ " WHERE fac_functie_key = " + params.functie_key
|
||||
+ " GROUP BY fac_groep_key, fac_functie_key) fac_groeprechten";
|
||||
this.record_title += " TODO Functie: " + params.functie_key;
|
||||
{
|
||||
this.fields["ins_discipline"] =
|
||||
{
|
||||
"dbs": "nn_disc",
|
||||
"label": L("ins_discipline_key"),
|
||||
"typ": "varchar",
|
||||
val: fnFunctieDisc,
|
||||
"hidden_fld": true
|
||||
};
|
||||
}
|
||||
this.fields["prs_level_read"].val = fnRechten;
|
||||
this.fields["prs_level_write"].val = fnRechten;
|
||||
this.fields["alg_level_read"].val = fnRechten;
|
||||
this.fields["alg_level_write"].val = fnRechten;
|
||||
|
||||
this.fields["ins_discipline"] =
|
||||
{
|
||||
"dbs": "nn_disc",
|
||||
"label": L("ins_discipline_key"),
|
||||
"typ": "varchar",
|
||||
val: fnFunctieDisc,
|
||||
"hidden_fld": true
|
||||
};
|
||||
}
|
||||
else if (params.groep_key > 0)
|
||||
{
|
||||
this.tablesql = "(SELECT MIN(fac_groeprechten_key) fac_groeprechten_key,"
|
||||
+ " fac_groep_key,"
|
||||
+ " g.fac_functie_key,"
|
||||
+ " f.fac_functie_min_level,"
|
||||
+ " CASE"
|
||||
+ " WHEN fac_functie_discipline = 1"
|
||||
+ " THEN fac_functie_module || ' ' || "
|
||||
@@ -196,15 +250,19 @@ function model_fac_groeprechten (params)
|
||||
+ " WHERE ins_discipline_verwijder IS NULL"
|
||||
+ " AND ia.ins_discipline_module = fac_functie_module)"
|
||||
+ " END nn_disc,"
|
||||
+ " MIN(fac_gebruiker_prs_level_read) fac_gebruiker_prs_level_read,"
|
||||
+ " MIN(fac_gebruiker_prs_level_write) fac_gebruiker_prs_level_write,"
|
||||
+ " MIN(fac_gebruiker_alg_level_read) fac_gebruiker_alg_level_read,"
|
||||
+ " MIN(fac_gebruiker_alg_level_write) fac_gebruiker_alg_level_write"
|
||||
+ " CASE WHEN COUNT(DISTINCT fac_gebruiker_prs_level_read) > 1 THEN -2 ELSE MIN(fac_gebruiker_prs_level_read) END fac_gebruiker_prs_level_read,"
|
||||
+ " CASE WHEN COUNT(DISTINCT fac_gebruiker_prs_level_write) > 1 THEN -2 ELSE MIN(fac_gebruiker_prs_level_write) END fac_gebruiker_prs_level_write,"
|
||||
+ " CASE WHEN COUNT(DISTINCT fac_gebruiker_alg_level_read) > 1 THEN -2 ELSE MIN(fac_gebruiker_alg_level_read) END fac_gebruiker_alg_level_read,"
|
||||
+ " CASE WHEN COUNT(DISTINCT fac_gebruiker_alg_level_write) > 1 THEN -2 ELSE MIN(fac_gebruiker_alg_level_write) END fac_gebruiker_alg_level_write"
|
||||
+ " FROM fac_groeprechten g, fac_functie f"
|
||||
+ " WHERE fac_groep_key = " + params.groep_key
|
||||
+ " AND g.fac_functie_key = f.fac_functie_key"
|
||||
+ " GROUP BY fac_groep_key, g.fac_functie_key, fac_functie_discipline, fac_functie_module) fac_groeprechten";
|
||||
+ " GROUP BY fac_groep_key, g.fac_functie_key, fac_functie_discipline, fac_functie_min_level, fac_functie_module) fac_groeprechten";
|
||||
this.record_title += " TODO Groep: " + params.groep_key;
|
||||
this.fields["prs_level_read"].val = fnRechten;
|
||||
this.fields["prs_level_write"].val = fnRechten;
|
||||
this.fields["alg_level_read"].val = fnRechten;
|
||||
this.fields["alg_level_write"].val = fnRechten;
|
||||
this.fields["ins_discipline"] =
|
||||
{
|
||||
"dbs": "nn_disc",
|
||||
@@ -219,14 +277,18 @@ function model_fac_groeprechten (params)
|
||||
+ " COUNT(fac_groep_key) nn_groep,"
|
||||
+ " fac_functie_key,"
|
||||
+ " ins_discipline_key,"
|
||||
+ " MIN(fac_gebruiker_prs_level_read) fac_gebruiker_prs_level_read,"
|
||||
+ " MIN(fac_gebruiker_prs_level_write) fac_gebruiker_prs_level_write,"
|
||||
+ " MIN(fac_gebruiker_alg_level_read) fac_gebruiker_alg_level_read,"
|
||||
+ " MIN(fac_gebruiker_alg_level_write) fac_gebruiker_alg_level_write"
|
||||
+ " CASE WHEN COUNT(DISTINCT fac_gebruiker_prs_level_read) > 1 THEN -2 ELSE MIN(fac_gebruiker_prs_level_read) END fac_gebruiker_prs_level_read,"
|
||||
+ " CASE WHEN COUNT(DISTINCT fac_gebruiker_prs_level_write) > 1 THEN -2 ELSE MIN(fac_gebruiker_prs_level_write) END fac_gebruiker_prs_level_write,"
|
||||
+ " CASE WHEN COUNT(DISTINCT fac_gebruiker_alg_level_read) > 1 THEN -2 ELSE MIN(fac_gebruiker_alg_level_read) END fac_gebruiker_alg_level_read,"
|
||||
+ " CASE WHEN COUNT(DISTINCT fac_gebruiker_alg_level_write) > 1 THEN -2 ELSE MIN(fac_gebruiker_alg_level_write) END fac_gebruiker_alg_level_write"
|
||||
+ " FROM fac_groeprechten"
|
||||
+ " WHERE ins_discipline_key = " + params.disc_key
|
||||
+ " GROUP BY ins_discipline_key, fac_functie_key) fac_groeprechten";
|
||||
this.record_title += " TODO Disc: " + params.groep_key;
|
||||
this.fields["prs_level_read"].val = fnRechten;
|
||||
this.fields["prs_level_write"].val = fnRechten;
|
||||
this.fields["alg_level_read"].val = fnRechten;
|
||||
this.fields["alg_level_write"].val = fnRechten;
|
||||
this.fields["fac_groep"] =
|
||||
{
|
||||
"dbs": "nn_groep",
|
||||
|
||||
@@ -118,7 +118,7 @@ function model_ins_tab_discipline(disc_key, params)
|
||||
this.includes = {"authorization":
|
||||
{ "model": new model_fac_groeprechten(params),
|
||||
"joinfield": "ins_discipline",
|
||||
"outertoggle": { def: true, lbl: L("fac_gebruiker_outerdisc") }
|
||||
"outertoggle": { def: false, lbl: L("fac_gebruiker_outerdisc") }
|
||||
}};
|
||||
}
|
||||
|
||||
|
||||
@@ -212,7 +212,7 @@ function radioTD(name, LOV, val)
|
||||
// +2 is afzonderlijke schrijfrechten
|
||||
// +4 is PRS-scope
|
||||
// +8 is ALG-scope
|
||||
var advanced = getQParamInt("advanced", 0) == 1;
|
||||
var advanced = getQParamInt("advanced", S("auth_edit_advanced")?1:0) == 1;
|
||||
if ( prsread != algread
|
||||
|| prswrite != algwrite
|
||||
|| prsread != -1 && prsread != 9
|
||||
|
||||
@@ -212,7 +212,12 @@ function scaffolding_search(model, scf_params)
|
||||
|
||||
if (field.filter == 'like' || field.filter == 'exact' || !("filter" in field))
|
||||
{
|
||||
if (!defs.fixed)
|
||||
if (defs.fixed)
|
||||
{
|
||||
if (field.showfixedfilter)
|
||||
scf_ROFIELDTR(xmodel, fld, defs.vmin, null);
|
||||
}
|
||||
else
|
||||
scf_RWFIELDTR(xmodel, fld, defs.vmin, null, {search: true});
|
||||
}
|
||||
else if (field.filter == "range")
|
||||
|
||||
Reference in New Issue
Block a user