157 lines
4.0 KiB
XML
157 lines
4.0 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;
|
|
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.__DoLog(data);
|
|
var authorizationgroup =
|
|
{
|
|
name : data["displayName"],
|
|
externalid : data["externalId"]
|
|
};
|
|
// TODO: Users negeren we nog
|
|
|
|
//FCLT.DEZE.__DoLog(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,
|
|
"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++)
|
|
{
|
|
if (params.limit && allgroups.length > params.limit)
|
|
break;
|
|
var authorizationgroup = data.authorizationgroups[i];
|
|
allgroups.push(transform_one_group(params, authorizationgroup));
|
|
}
|
|
|
|
return {
|
|
"totalResults": allgroups.length,
|
|
"itemsPerPage": 10,
|
|
"startIndex": 1,
|
|
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
|
|
"Resources": allgroups
|
|
};
|
|
}
|
|
}
|
|
|
|
]]>
|
|
</script>
|
|
</component>
|