KFSG#41700 -- Scim koppeling realiseren.

svn path=/Website/branches/v2017.2/; revision=35599
This commit is contained in:
Arthur Egberink
2017-10-06 12:09:01 +00:00
parent ab35d77fa3
commit a6db4e9b50
3 changed files with 44 additions and 16 deletions

View File

@@ -72,7 +72,7 @@ function get_eTag(params, data)
function transform_incoming(params, data) function transform_incoming(params, data)
{ {
//FCLT.DEZE.__DoLog(data); FCLT.DEZE.__DoLog(data);
var authorizationgroup = var authorizationgroup =
{ {
name : data["displayName"], name : data["displayName"],
@@ -112,6 +112,7 @@ function transform_one_group(params, authorizationgroup)
var unique = FCLT.DEZE.customerId + "_person_" + String(user.person.id); var unique = FCLT.DEZE.customerId + "_person_" + String(user.person.id);
onegroup.members.push({ onegroup.members.push({
"value":unique, "value":unique,
"type":"User",
"$ref":FCLT.DEZE.HTTP.urlzelf() + "/appl/SCIM/Users/" + unique, "$ref":FCLT.DEZE.HTTP.urlzelf() + "/appl/SCIM/Users/" + unique,
"display":user.person.name "display":user.person.name
}) })

View File

@@ -79,21 +79,20 @@ FCLT.DEZE.__DoLog(data);
{ {
id : data["id"], id : data["id"],
externalid : data["externalId"], externalid : data["externalId"],
description: data["Code"], description: data["code"],
name : data["externalId"], name : data["externalId"],
costcenter : { name: data["CostCenter"] }, // id mag achterwege blijven omdat desc_is_unique costcentre : { name: data["costCenter"] }, // id mag achterwege blijven omdat desc_is_unique
company : { name: "Schiphol Group" } company : { name: "Schiphol Group" }
}; };
var costcenter_key = -1;
var sql = "SELECT prs_kostenplaats_key FROM prs_kostenplaats " var sql = "SELECT prs_kostenplaats_key FROM prs_kostenplaats "
+ "WHERE prs_kostenplaats_verwijder IS NULL " + "WHERE prs_kostenplaats_verwijder IS NULL "
+ " AND prs_kostenplaats_nr = '" + department.costcenter.name + "'"; + " AND prs_kostenplaats_nr = " + FCLT.DEZE.safe.quoted_sql(department.costcentre.name);
var oRs = FCLT.DEZE.Oracle.Execute(sql); var oRs = FCLT.DEZE.Oracle.Execute(sql);
if (oRs.eof) if (oRs.eof)
{ {
sql = "INSERT INTO prs_kostenplaats (prs_kostenplaats_nr, prs_kostenplaats_omschrijving, prs_kostenplaats_module) " sql = "INSERT INTO prs_kostenplaats (prs_kostenplaats_nr, prs_kostenplaats_omschrijving, prs_kostenplaats_module) "
+ "VALUES ('" + department.costcenter.name + "','" + department.costcenter.name + "','PRS')"; + "VALUES (" + FCLT.DEZE.safe.quoted_sql(department.costcentre.name) + "," + FCLT.DEZE.safe.quoted_sql(department.costcentre.name) + ",'PRS')";
FCLT.DEZE.__DoLog(sql); FCLT.DEZE.__DoLog(sql);
FCLT.DEZE.Oracle.Execute(sql); FCLT.DEZE.Oracle.Execute(sql);
} }
@@ -117,7 +116,7 @@ function transform_one_department(params, department)
"code":department.description, "code":department.description,
"externalid":department.externalid, "externalid":department.externalid,
"id":unique, "id":unique,
"costcenter":costc, "costCenter":costc,
"schemas":[ "schemas":[
"urn:ietf:params:scim:schemas:core:2.0:OrgUnits", "urn:ietf:params:scim:schemas:core:2.0:OrgUnits",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:OrgUnits" "urn:ietf:params:scim:schemas:extension:enterprise:2.0:OrgUnits"

View File

@@ -76,24 +76,40 @@ function get_eTag(params, data)
// Als het object aan staat wordt de id opgeleverd, anders -id // Als het object aan staat wordt de id opgeleverd, anders -id
function transform_incoming(params, data) function transform_incoming(params, data)
{ {
//FCLT.DEZE.__DoLog(data); FCLT.DEZE.__DoLog(data);
var extension = data["urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"];
var person = var person =
{ {
login : data["userName"], login : data["userName"],
externallogin: data["userName"], externallogin: data["userName"],
externalid : data["externalId"], externalid : data["externalId"],
name : data["name"]["displayName"], // name : data["name"]["displayName"],
initials : data["userFacilitor"]["initials"],
lastname : data["name"]["familyName"], lastname : data["name"]["familyName"],
middlename : data["name"]["middleName"],
firstname : data["name"]["givenName"], firstname : data["name"]["givenName"],
deactivated : data["active"]?null:new Date() deactivated : data["active"]?null:new Date(),
employeenumber : extension["employeeNumber"]
}; };
if (data["userName"] == undefined) person.login = "";
if (data["userFacilitor"]["initials"] == undefined) person.initials = "";
if (data["name"]["middleName"] == undefined) person.middlename = "";
if (data["name"]["givenName"] == undefined) person.firstname = "";
if (extension["employeeNumber"] == undefined) person.employeenumber = "";
var dep_id = data["orgUnit"]["id"].replace (FCLT.DEZE.customerId + "_department_", "");
person["department"] = { id: dep_id };
person["function"] = { name: data["title"] } // id mag achterwege blijven omdat desc_is_unique person["function"] = { name: data["title"] } // id mag achterwege blijven omdat desc_is_unique
if (data["emails"].length) if (data["emails"])
{ {
person.email = data["emails"][0].value; // type:work/primary:true opzoeken ? person.email = data["emails"][0].value; // type:work/primary:true opzoeken ?
} }
if (data["phoneNumbers"].length) if (data["phoneNumbers"])
{ {
person.mobile = data["phoneNumbers"][0].value; // type:mobile/primary:true opzoeken ? person.mobile = data["phoneNumbers"][0].value; // type:mobile/primary:true opzoeken ?
} }
@@ -112,10 +128,14 @@ function transform_one_person(params, person)
"userName":person.externallogin || person.login, "userName":person.externallogin || person.login,
"externalId":person.externalid, "externalId":person.externalid,
"id":unique, "id":unique,
"userFacilitor":{
"initials":person.initials
},
"name":{ "name":{
"formatted":person.name, "formatted":person.name,
"familyName":person.lastname, "familyName":person.lastname,
"givenName":person.firstname "givenName":person.firstname,
"middleName":person.middlename
}, },
"schemas":[ "schemas":[
"urn:ietf:params:scim:schemas:core:2.0:User", "urn:ietf:params:scim:schemas:core:2.0:User",
@@ -146,11 +166,15 @@ function transform_one_person(params, person)
], ],
"orgunit": "orgunit":
{ {
"id":String(person.department.id), "id":FCLT.DEZE.customerId + "_department_" + String(person.department.id),
"$ref":FCLT.DEZE.HTTP.urlzelf() + "/appl/SCIM/OrgUnits/" + FCLT.DEZE.customerId + "_department_" + String(person.department.id) "$ref":FCLT.DEZE.HTTP.urlzelf() + "/appl/SCIM/OrgUnits/" + FCLT.DEZE.customerId + "_department_" + String(person.department.id)
} }
, ,
"groups":[] "groups":[],
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User" :
{
"employeeNumber":person.employeenumber
}
} }
var allgroups = []; var allgroups = [];
for (var j = 0; j < person.authorization.length; j++) for (var j = 0; j < person.authorization.length; j++)
@@ -183,7 +207,11 @@ function transform_outgoing(params, data)
if (params.limit && allusers.length > params.limit) if (params.limit && allusers.length > params.limit)
break; break;
var person = data.persons[i]; var person = data.persons[i];
allusers.push(transform_one_person(params, person)); if (person.login && person.login.indexOf('_') != 0)
{
// _ users are not part of the interface.
allusers.push(transform_one_person(params, person));
}
} }
return { return {