summaryrefslogtreecommitdiffstats
path: root/lasso/id-ff/user.c
diff options
context:
space:
mode:
authorNicolas Clapies <nclapies@entrouvert.com>2004-07-06 19:11:01 +0000
committerNicolas Clapies <nclapies@entrouvert.com>2004-07-06 19:11:01 +0000
commitc122a7727a1b873eee2293496d9b4db238ce2fd4 (patch)
treea7242a857e4d5e56f2d36217b40cd660907ae8d5 /lasso/id-ff/user.c
parentb455c8fd195c27ff488cbde7abece94a580d1807 (diff)
downloadlasso-c122a7727a1b873eee2293496d9b4db238ce2fd4.tar.gz
lasso-c122a7727a1b873eee2293496d9b4db238ce2fd4.tar.xz
lasso-c122a7727a1b873eee2293496d9b4db238ce2fd4.zip
*** empty log message ***
Diffstat (limited to 'lasso/id-ff/user.c')
-rw-r--r--lasso/id-ff/user.c145
1 files changed, 76 insertions, 69 deletions
diff --git a/lasso/id-ff/user.c b/lasso/id-ff/user.c
index 971f4d4c..e48a20a5 100644
--- a/lasso/id-ff/user.c
+++ b/lasso/id-ff/user.c
@@ -29,52 +29,53 @@
/*****************************************************************************/
static void
-lasso_user_node_identity_add(xmlChar *key, LassoIdentity *identity, LassoNode *userNode)
+lasso_user_dump_assertion(gpointer key,
+ gpointer value,
+ LassoNode *assertions)
{
- LassoNode *node, *child;
- LassoNodeClass *class;
-
- /* set the Identity node */
-/* node = lasso_node_new(); */
-/* class = LASSO_NODE_GET_CLASS(LASSO_NODE(node)); */
-/* class->set_name(LASSO_NODE(node), "Identity"); */
-
- /* add the remote provider id */
-/* class->new_child(node, "RemoteProviderID", key, FALSE); */
-
- /* add the local name identifier */
-/* child = lasso_node_new(); */
-/* class = LASSO_NODE_GET_CLASS(LASSO_NODE(node)); */
-/* class->set_name(LASSO_NODE(node), "LocalNameIdentifier"); */
-/* class->lasso_node_add_child(child, identity->local_nameIdentifier); */
-/* class->lasso_node_add_child(node, child); */
-
- /* add the remote provider id */
-/* child = lasso_node_new(); */
-/* class = LASSO_NODE_GET_CLASS(LASSO_NODE(node)); */
-/* class->set_name(LASSO_NODE(node), "RemoteNameIdentifier"); */
-/* lasso_node_add_child(child, identity->remote_nameIdentifier); */
-/* lasso_node_add_child(node, child); */
-
- /* add the identity node to the user node */
-/* lasso_node_add_child(userNode, identity); */
+
+}
+
+static void
+lasso_user_dump_identity(gpointer key,
+ gpointer value,
+ LassoNode *identities)
+{
+ LassoNode *identity_node;
+ LassoNodeClass *identity_class;
+ xmlChar *dump;
+
+ dump = lasso_identity_dump(value);
+ identity_node = lasso_node_new_from_dump(dump);
+ identity_class = LASSO_NODE_GET_CLASS(identity_node);
+ identity_class->add_child(identities, identity_node, TRUE);
}
xmlChar *
-lasso_user_export(LassoUser *user)
+lasso_user_dump(LassoUser *user)
{
- LassoNode *user_node, *identities, *assertions, *assertion_artifacts;
- LassoNodeClass *class;
+ LassoNode *user_node, *assertions_node, *identities_node;
+ LassoNodeClass *user_class, *assertions_class, *identities_class;
- /* set the user node */
user_node = lasso_node_new();
- class = LASSO_NODE_GET_CLASS(LASSO_NODE(user_node));
- class->set_name(LASSO_NODE(user_node), "User");
-
- /* insert all of the identity of the user */
- g_hash_table_foreach(user->identities, lasso_user_node_identity_add, user);
-
- return(lasso_node_export(user));
+ user_class = LASSO_NODE_GET_CLASS(user_node);
+ user_class->set_name(user_node, "User");
+
+ /* dump the assertions */
+ assertions_node = lasso_node_new();
+ assertions_class = LASSO_NODE_GET_CLASS(assertions_node);
+ assertions_class->set_name(assertions_node, "Assertions");
+ g_hash_table_foreach(user->assertions, lasso_user_dump_assertion, assertions_node);
+ user_class->add_child(user_node, assertions_node, FALSE);
+
+ /* dump the identities */
+ identities_node = lasso_node_new();
+ identities_class = LASSO_NODE_GET_CLASS(identities_node);
+ identities_class->set_name(identities_node, "Identities");
+ g_hash_table_foreach(user->identities, lasso_user_dump_identity, identities_node);
+ user_class->add_child(user_node, identities_node, FALSE);
+
+ return(lasso_node_export(user_node));
}
void
@@ -82,45 +83,23 @@ lasso_user_add_assertion(LassoUser *user,
xmlChar *remote_providerID,
LassoNode *assertion)
{
- g_hash_table_insert(user->assertions, remote_providerID, assertion);
+ g_hash_table_insert(user->assertions, g_strdup(remote_providerID), assertion);
}
LassoNode *
lasso_user_get_assertion(LassoUser *user,
- xmlChar *nameIdentifier)
-{
- return(g_hash_table_lookup(user->assertions, nameIdentifier));
-}
-
-void
-lasso_user_store_response(LassoUser *user,
- xmlChar *assertionArtifact,
- LassoResponse *response)
+ xmlChar *remote_providerID)
{
- g_hash_table_insert(user->assertion_artifacts,
- g_strdup(assertionArtifact),
- lasso_node_copy(LASSO_NODE(response)));
+ return(g_hash_table_lookup(user->assertions, remote_providerID));
}
-LassoNode *lasso_user_get_assertionArtifact(LassoUser *user,
- xmlChar *artifact)
-{
- LassoNode *assertion;
-
- assertion = g_hash_table_lookup(user->assertion_artifacts, artifact);
- if(assertion){
- g_hash_table_steal(user->assertion_artifacts, artifact);
- }
-
- return(assertion);
-}
void
lasso_user_add_identity(LassoUser *user,
xmlChar *remote_providerID,
LassoIdentity *identity)
{
- g_hash_table_insert(user->identities, remote_providerID, identity);
+ g_hash_table_insert(user->identities, g_strdup(remote_providerID), identity);
}
LassoIdentity*
@@ -130,6 +109,7 @@ lasso_user_get_identity(LassoUser *user,
return(g_hash_table_lookup(user->identities, remote_providerID));
}
+
/*****************************************************************************/
/* instance and class init functions */
/*****************************************************************************/
@@ -139,7 +119,6 @@ lasso_user_instance_init(LassoUser *user)
{
user->identities = g_hash_table_new(g_str_hash, g_str_equal);
user->assertions = g_hash_table_new(g_str_hash, g_str_equal);
- user->assertion_artifacts = g_hash_table_new(g_str_hash, g_str_equal);
}
static void
@@ -172,15 +151,43 @@ GType lasso_user_get_type() {
}
LassoUser*
-lasso_user_new(xmlChar *user_str)
+lasso_user_new()
+{
+ LassoUser *user;
+
+ user = LASSO_USER(g_object_new(LASSO_TYPE_USER, NULL));
+
+ return(user);
+}
+
+LassoUser*
+lasso_user_new_from_dump(xmlChar *dump)
{
+ LassoNode *user_node, *identities_node;
+ LassoNodeClass *identities_class;
+ LassoIdentity *identity;
+ xmlNodePtr xmlNode;
LassoUser *user;
+ xmlChar *remote_providerID;
user = LASSO_USER(g_object_new(LASSO_TYPE_USER, NULL));
- if(user_str){
- /* parse the user str */
+ user_node = lasso_node_new_from_dump(dump);
+
+ /* set the assertions */
+
+ /* set the identities */
+ identities_node = lasso_node_get_child(user, "Identities", NULL);
+ identities_class = LASSO_NODE_GET_CLASS(user_node);
+ xmlNode = identities_class->get_xmlNode(identities_node);
+ xmlNode = xmlNode->children;
+ while(xmlNode){
+ if(xmlNode->type==XML_ELEMENT_NODE && xmlStrEqual(xmlNode->name, "Identity")){
+ identity = lasso_identity_new(xmlGetProp(xmlNode, "RemoteProviderID"));
+ lasso_identity_set_localNameIdentifier(user);
+ }
}
+
return(user);
}