KFSG#41700 -- Scim koppeling realiseren (Error afhandeling)
svn path=/Website/branches/v2017.2/; revision=35721
This commit is contained in:
@@ -134,6 +134,12 @@ api2_rest = {
|
||||
/* global */ JSON_Result = true; // Zelf doen we er niets mee maar
|
||||
// shared.simple_page kijkt er naar
|
||||
|
||||
var orgError = api2.error;
|
||||
api2.error = function (code, msg)
|
||||
{
|
||||
api2_rest.plugin.error_handler(code, msg, orgError);
|
||||
}
|
||||
|
||||
api2_rest.authenticate();
|
||||
// Kip-ei: de omzetting naar new model() mag pas als je geauthenticeerd bent
|
||||
// Hierboven willen we het echter al wel meegeven
|
||||
@@ -870,6 +876,16 @@ api2_rest = {
|
||||
hook = null;
|
||||
return outdata;
|
||||
},
|
||||
error_handler: function(code, msg, orgHandler)
|
||||
{
|
||||
var hook = api2_rest.find_plugin();
|
||||
if ("error_handler" in hook)
|
||||
outdata = hook.error_handler(code, msg, orgHandler);
|
||||
else
|
||||
outdata = orgHandler(code, msg);
|
||||
hook = null;
|
||||
return outdata;
|
||||
},
|
||||
transform_incoming: function(params, data)
|
||||
{
|
||||
var outdata = data;
|
||||
|
||||
@@ -81,7 +81,7 @@ function model_prs_afdeling()
|
||||
},
|
||||
"created": {
|
||||
"dbs": "prs_afdeling_aanmaak",
|
||||
"label": "Aanmaakdatum"),
|
||||
"label": "Aanmaakdatum",
|
||||
"typ": "datetime",
|
||||
"readonly": true
|
||||
}
|
||||
|
||||
@@ -17,6 +17,11 @@
|
||||
<method name="initialize">
|
||||
<PARAMETER name="params"/>
|
||||
</method>
|
||||
<method name="error_handler">
|
||||
<PARAMETER name="code"/>
|
||||
<PARAMETER name="msg"/>
|
||||
<PARAMETER name="orgHandler"/>
|
||||
</method>
|
||||
<method name="transform_filter">
|
||||
<PARAMETER name="filter"/>
|
||||
</method>
|
||||
@@ -56,6 +61,32 @@ function initialize(params)
|
||||
FCLT = params;
|
||||
}
|
||||
|
||||
function error_handler(code, msg, orgHandler)
|
||||
{
|
||||
code = code || 500;
|
||||
var data = {
|
||||
"schemas" : ["urn:ietf:params:scim:api:messages:2.0:Error"],
|
||||
"scimType": "invalidValue",
|
||||
"detail" : msg,
|
||||
"status" : code
|
||||
};
|
||||
|
||||
FCLT.DEZE.Response.ContentType = "application/json";
|
||||
FCLT.DEZE.Response.Write(FCLT.DEZE.JSON.stringify(data, null, 2));
|
||||
var codestr = String(code);
|
||||
if (typeof code == "number")
|
||||
{
|
||||
var codestr = { 400: "Bad request",
|
||||
403: "Forbidden",
|
||||
404: "Not Found",
|
||||
422: "Unprocessable Entity" }[code];
|
||||
if (codestr)
|
||||
code = code + " " + codestr;
|
||||
}
|
||||
FCLT.DEZE.Response.Status = code;
|
||||
FCLT.DEZE.Response.End;
|
||||
}
|
||||
|
||||
function transform_filter(filter)
|
||||
{
|
||||
if ("count" in filter)
|
||||
@@ -87,9 +118,42 @@ function transform_incoming(params, data)
|
||||
name : data["displayName"],
|
||||
externalid : data["externalId"]
|
||||
};
|
||||
// TODO: Users negeren we nog
|
||||
|
||||
var groep_key = data["id"].replace (FCLT.DEZE.customerId + "_authorizationgroup_", "");
|
||||
|
||||
var sql = "DELETE fac_rapport WHERE fac_rapport_node = 'SCIMGROUPS'";
|
||||
FCLT.DEZE.Oracle.Execute(sql);
|
||||
|
||||
if (data["members"])
|
||||
{
|
||||
var oRs;
|
||||
for (var j = 0; j < data["members"].length; j++)
|
||||
{
|
||||
if (data["members"][j].value)
|
||||
{
|
||||
member = data["members"][j].value;
|
||||
sql = "INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_regel, fac_rapport_volgnr) "
|
||||
+ " VALUES('SCIMGROUPS', " + groep_key + ", " + FCLT.DEZE.safe.quoted_sql(member.replace (FCLT.DEZE.customerId + "_person_", "")) + ")";
|
||||
oRs = FCLT.DEZE.Oracle.Execute(sql);
|
||||
}
|
||||
}
|
||||
// We slaan de groep key tijdelijk op in fac_arapport_regel
|
||||
// en de perslid_key in het volgnummer omdat deze uniek moet zijn.
|
||||
sql = "INSERT INTO fac_gebruikersgroep ( fac_groep_key, prs_perslid_key) "
|
||||
+ "SELECT fac_rapport_regel, fac_rapport_volgnr FROM fac_rapport r "
|
||||
+ " WHERE NOT EXISTS (SELECT fac_gebruikersgroep_key "
|
||||
+ " FROM fac_gebruikersgroep gg WHERE gg.prs_perslid_key = fac_rapport_volgnr AND gg.fac_groep_key = r.fac_rapport_regel)";
|
||||
FCLT.DEZE.Oracle.Execute(sql);
|
||||
|
||||
FCLT.DEZE.__Log(authorizationgroup);
|
||||
sql = "DELETE fac_gebruikersgroep gg "
|
||||
+ " WHERE fac_groep_key = " + groep_key
|
||||
+ " AND NOT EXISTS (SELECT fac_rapport_volgnr "
|
||||
+ " FROM fac_rapport r WHERE gg.prs_perslid_key = fac_rapport_volgnr AND gg.fac_groep_key = r.fac_rapport_regel)";
|
||||
FCLT.DEZE.Oracle.Execute(sql);
|
||||
//oRs.Close();
|
||||
}
|
||||
|
||||
//FCLT.DEZE.__DoLog(authorizationgroup);
|
||||
|
||||
return { authorizationgroup: authorizationgroup };
|
||||
}
|
||||
|
||||
@@ -17,6 +17,11 @@
|
||||
<method name="initialize">
|
||||
<PARAMETER name="params"/>
|
||||
</method>
|
||||
<method name="error_handler">
|
||||
<PARAMETER name="code"/>
|
||||
<PARAMETER name="msg"/>
|
||||
<PARAMETER name="orgHandler"/>
|
||||
</method>
|
||||
<method name="transform_filter">
|
||||
<PARAMETER name="filter"/>
|
||||
</method>
|
||||
@@ -58,6 +63,32 @@ function initialize(params)
|
||||
FCLT = params;
|
||||
}
|
||||
|
||||
function error_handler(code, msg, orgHandler)
|
||||
{
|
||||
code = code || 500;
|
||||
var data = {
|
||||
"schemas" : ["urn:ietf:params:scim:api:messages:2.0:Error"],
|
||||
"scimType": "invalidValue",
|
||||
"detail" : msg,
|
||||
"status" : code
|
||||
};
|
||||
|
||||
FCLT.DEZE.Response.ContentType = "application/json";
|
||||
FCLT.DEZE.Response.Write(FCLT.DEZE.JSON.stringify(data, null, 2));
|
||||
var codestr = String(code);
|
||||
if (typeof code == "number")
|
||||
{
|
||||
var codestr = { 400: "Bad request",
|
||||
403: "Forbidden",
|
||||
404: "Not Found",
|
||||
422: "Unprocessable Entity" }[code];
|
||||
if (codestr)
|
||||
code = code + " " + codestr;
|
||||
}
|
||||
FCLT.DEZE.Response.Status = code;
|
||||
FCLT.DEZE.Response.End;
|
||||
}
|
||||
|
||||
function transform_filter(filter)
|
||||
{
|
||||
if ("count" in filter)
|
||||
|
||||
@@ -17,6 +17,11 @@
|
||||
<method name="initialize">
|
||||
<PARAMETER name="params"/>
|
||||
</method>
|
||||
<method name="error_handler">
|
||||
<PARAMETER name="code"/>
|
||||
<PARAMETER name="msg"/>
|
||||
<PARAMETER name="orgHandler"/>
|
||||
</method>
|
||||
<method name="transform_filter">
|
||||
<PARAMETER name="filter"/>
|
||||
</method>
|
||||
@@ -55,18 +60,44 @@ function initialize(params)
|
||||
FCLT = params;
|
||||
}
|
||||
|
||||
function error_handler(code, msg, orgHandler)
|
||||
{
|
||||
code = code || 500;
|
||||
var data = {
|
||||
"schemas" : ["urn:ietf:params:scim:api:messages:2.0:Error"],
|
||||
"scimType": "invalidValue",
|
||||
"detail" : msg,
|
||||
"status" : code
|
||||
};
|
||||
|
||||
FCLT.DEZE.Response.ContentType = "application/json";
|
||||
FCLT.DEZE.Response.Write(FCLT.DEZE.JSON.stringify(data, null, 2));
|
||||
var codestr = String(code);
|
||||
if (typeof code == "number")
|
||||
{
|
||||
var codestr = { 400: "Bad request",
|
||||
403: "Forbidden",
|
||||
404: "Not Found",
|
||||
422: "Unprocessable Entity" }[code];
|
||||
if (codestr)
|
||||
code = code + " " + codestr;
|
||||
}
|
||||
FCLT.DEZE.Response.Status = code;
|
||||
FCLT.DEZE.Response.End;
|
||||
}
|
||||
|
||||
function transform_filter(filter)
|
||||
{
|
||||
if ("count" in filter)
|
||||
filter.limit = filter.count;
|
||||
if ("startIndex" in filter)
|
||||
filter.offset = filter.startIndex - 1;
|
||||
if ("filter" in filter)
|
||||
if ("filter" in filter)
|
||||
{
|
||||
// Ontvangen filter: "filter": "id eq \"KFSG_person_703\""
|
||||
var v_filter = filter.filter.replace ("id eq \"" + FCLT.DEZE.customerId + "_person_", "");
|
||||
v_filter = v_filter.replace("\"", "");
|
||||
filter.id = v_filter;
|
||||
filter.id = v_filter;
|
||||
}
|
||||
return filter;
|
||||
}
|
||||
@@ -105,17 +136,20 @@ function transform_incoming(params, data)
|
||||
var dep_id = "";
|
||||
if (facilitor["orgUnit"] && facilitor["orgUnit"]["value"] )
|
||||
dep_id = facilitor["orgUnit"]["value"].replace (FCLT.DEZE.customerId + "_department_", "");
|
||||
else
|
||||
else
|
||||
dep_id = 1; // bij het aanmaken van een nieuwe persoon is de afdeling nog leeg. Dan tijdelijke even onder onbekend hangen.
|
||||
|
||||
person["department"] = { id: dep_id };
|
||||
person["function"] = { name: facilitor["title"] } // id mag achterwege blijven omdat desc_is_unique
|
||||
|
||||
person["function"] = { name: get_element(facilitor["title"]) } // id mag achterwege blijven omdat desc_is_unique
|
||||
|
||||
if (data["emails"])
|
||||
{
|
||||
person.email = data["emails"][0].value; // type:work/primary:true opzoeken ?
|
||||
person.email = get_element(data["emails"][0].value); // type:work/primary:true opzoeken ?
|
||||
}
|
||||
|
||||
|
||||
person.mobile = "";
|
||||
person.phone = "";
|
||||
if (data["phoneNumbers"])
|
||||
{
|
||||
for (var j = 0; j < data["phoneNumbers"].length; j++)
|
||||
@@ -127,20 +161,26 @@ function transform_incoming(params, data)
|
||||
{
|
||||
person.phone = get_element(data["phoneNumbers"][j].value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Als de functie (srt_perslid) nog niet bestaat gaan we deze aanmaken.
|
||||
var sql = "SELECT prs_srtperslid_key FROM prs_srtperslid "
|
||||
+ "WHERE prs_srtperslid_verwijder IS NULL "
|
||||
+ " AND prs_srtperslid_omschrijving = " + FCLT.DEZE.safe.quoted_sql(person["function"]["name"]);
|
||||
var oRs = FCLT.DEZE.Oracle.Execute(sql);
|
||||
|
||||
if (oRs.eof)
|
||||
person["function"] = { name: get_element(facilitor["title"]) } // id mag achterwege blijven omdat desc_is_unique
|
||||
|
||||
if (person["function"]["name"])
|
||||
{
|
||||
sql = "INSERT INTO prs_srtperslid (prs_srtperslid_omschrijving) "
|
||||
+ "VALUES (" + FCLT.DEZE.safe.quoted_sql(person["function"]["name"]) + ")";
|
||||
FCLT.DEZE.Oracle.Execute(sql);
|
||||
// Als de functie (srt_perslid) nog niet bestaat gaan we deze aanmaken.
|
||||
var sql = "SELECT prs_srtperslid_key FROM prs_srtperslid "
|
||||
+ "WHERE prs_srtperslid_verwijder IS NULL "
|
||||
+ " AND prs_srtperslid_upper = " + FCLT.DEZE.safe.quoted_sql(person["function"]["name"].toUpperCase());
|
||||
var oRs = FCLT.DEZE.Oracle.Execute(sql);
|
||||
|
||||
if (oRs.eof)
|
||||
{
|
||||
sql = "INSERT INTO prs_srtperslid (prs_srtperslid_omschrijving) "
|
||||
+ "VALUES (" + FCLT.DEZE.safe.quoted_sql(person["function"]["name"]) + ")";
|
||||
FCLT.DEZE.Oracle.Execute(sql);
|
||||
}
|
||||
}
|
||||
return { person: person };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user