Files
Facilitor/APPL/API2/plugins/scimgroups.wsc
Arthur Egberink 1587f8fc0d KFSG#41700 -- Scim koppeling realiseren.
svn path=/Website/branches/v2017.2/; revision=35712
2017-10-17 07:29:56 +00:00

164 lines
4.3 KiB
XML

<?xml version="1.0"?>
<component>
<?component error="true" debug="true"?>
<registration
description="scimgroups"
progid="flexwhere.WSC"
version="1.00"
classid="{6D817B6F-9D08-4636-AAD9-8BD7C5EFF56A}"
>
</registration>
<public>
<!-- properties -->
<!-- methods -->
<method name="initialize">
<PARAMETER name="params"/>
</method>
<method name="transform_filter">
<PARAMETER name="filter"/>
</method>
<method name="transform_outgoing">
<PARAMETER name="params"/>
<PARAMETER name="data"/>
</method>
<method name="transform_incoming">
<PARAMETER name="params"/>
<PARAMETER name="data"/>
</method>
<method name="get_eTag">
<PARAMETER name="params"/>
<PARAMETER name="data"/>
</method>
</public>
<script language="javascript">
<![CDATA[
/* properties */
/* methods */
/*
/*
$Id$
File: scimgroups.wsc
*/
/* Globals */
var FCLT;
function initialize(params)
{
FCLT = params;
}
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)
{
// Ontvangen filter: "filter": "id eq \"KFSG_authorizationgroup_703\""
var v_filter = filter.filter.replace ("id eq \"" + FCLT.DEZE.customerId + "_authorizationgroup_", "");
v_filter = v_filter.replace("\"", "");
filter.id = v_filter;
}
return filter;
}
function get_eTag(params, data)
{
if (data && typeof data == "object" && "meta" in data)
return data.meta.version;
return null;
}
function transform_incoming(params, data)
{
FCLT.DEZE.__Log(data);
var authorizationgroup =
{
name : data["displayName"],
externalid : data["externalId"]
};
// TODO: Users negeren we nog
FCLT.DEZE.__Log(authorizationgroup);
return { authorizationgroup: authorizationgroup };
}
function transform_one_group(params, authorizationgroup)
{
FCLT.DEZE.__Log(authorizationgroup);
var unique = FCLT.DEZE.customerId + "_authorizationgroup_" + String(authorizationgroup.id);
var onegroup = {
"displayName":authorizationgroup.name,
"externalId":authorizationgroup.externalid,
"id":unique,
"schemas":[
"urn:ietf:params:scim:schemas:core:2.0:Group",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:Group"
],
"members":[],
"meta":{
"created":authorizationgroup.created,
"lastModified":authorizationgroup.lastchange?authorizationgroup.lastchange:authorizationgroup.created,
"location":FCLT.DEZE.HTTP.urlzelf() + "/appl/SCIM/Groups/" + unique,
"resourceType":"Group"
}
}
for (var j = 0; j < authorizationgroup.users.length; j++)
{
var user = authorizationgroup.users[j];
var unique = FCLT.DEZE.customerId + "_person_" + String(user.person.id);
onegroup.members.push({
"value":unique,
"type":"User",
"$ref":FCLT.DEZE.HTTP.urlzelf() + "/appl/SCIM/Users/" + unique,
"display":user.person.name
})
}
var oCrypto = new ActiveXObject("SLNKDWF.Crypto");
var eTag = '"' + oCrypto.hex_sha1(FCLT.DEZE.JSON.stringify(onegroup)).toLowerCase() + '"';
onegroup.meta["version"] = "W/" + eTag; // Weak eTag?
return onegroup;
}
function transform_outgoing(params, data)
{
if ("authorizationgroup" in data)
{
var oneauthorizationgroup = transform_one_group(params, data.authorizationgroup);
return oneauthorizationgroup;
}
if ("authorizationgroups" in data)
{
var allgroups = [];
for (var i = 0; i < data.authorizationgroups.length; i++)
{
var authorizationgroup = data.authorizationgroups[i];
allgroups.push(transform_one_group(params, authorizationgroup));
}
return {
"totalResults": data.total_count,
"itemsPerPage": allgroups.length,
"startIndex": 1,
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"Resources": allgroups
};
}
}
]]>
</script>
</component>