diff options
| author | Valery Febvre <vfebvre at easter-eggs.com> | 2004-07-20 17:20:21 +0000 |
|---|---|---|
| committer | Valery Febvre <vfebvre at easter-eggs.com> | 2004-07-20 17:20:21 +0000 |
| commit | 4a37000286d12a58aeca6280a41c5aa2bd5b6b26 (patch) | |
| tree | ad733cd15c0520e8cfa26e184d7b0e4af1328839 | |
| parent | d0a420890594745e24f8e41bd261c9615cd44c49 (diff) | |
Added method lasso_user_remove_identity
| -rw-r--r-- | lasso/id-ff/user.c | 43 | ||||
| -rw-r--r-- | lasso/id-ff/user.h | 4 |
2 files changed, 45 insertions, 2 deletions
diff --git a/lasso/id-ff/user.c b/lasso/id-ff/user.c index bfa982b7..87a015d9 100644 --- a/lasso/id-ff/user.c +++ b/lasso/id-ff/user.c @@ -78,6 +78,14 @@ lasso_user_add_identity(LassoUser *user, g_return_val_if_fail(remote_providerID!=NULL, -2); g_return_val_if_fail(identity!=NULL, -3); + LassoIdentity *old_identity; + + old_identity = lasso_user_get_identity(user, remote_providerID); + if (old_identity != NULL) { + lasso_user_remove_identity(user, remote_providerID); + lasso_identity_destroy(old_identity); + } + g_hash_table_insert(user->identities, g_strdup(remote_providerID), identity); return(0); @@ -195,7 +203,14 @@ lasso_user_get_identity(LassoUser *user, g_return_val_if_fail(user!=NULL, NULL); g_return_val_if_fail(remote_providerID!=NULL, NULL); - return(g_hash_table_lookup(user->identities, remote_providerID)); + LassoIdentity *id; + + id = (LassoIdentity*)g_hash_table_lookup(user->identities, remote_providerID); + if (id == NULL) { + debug(DEBUG, "No Identity found with remote ProviderID = %s\n", remote_providerID); + } + + return(id); } gint @@ -210,7 +225,10 @@ lasso_user_remove_assertion(LassoUser *user, /* remove the assertion */ assertion = lasso_user_get_assertion(user, remote_providerID); - g_hash_table_steal(user->assertions, remote_providerID); + if (assertion != NULL) { + g_hash_table_steal(user->assertions, remote_providerID); + lasso_node_destroy(assertion); + } /* remove the remote provider id */ for(i = 0; i<user->assertion_providerIDs->len; i++){ @@ -224,6 +242,27 @@ lasso_user_remove_assertion(LassoUser *user, return(0); } +gint +lasso_user_remove_identity(LassoUser *user, + gchar *remote_providerID) +{ + LassoIdentity *identity; + + g_return_val_if_fail(user!=NULL, -1); + g_return_val_if_fail(remote_providerID!=NULL, -2); + + /* remove the identity */ + identity = lasso_user_get_identity(user, remote_providerID); + if (identity != NULL) { + g_hash_table_steal(user->identities, remote_providerID); + } + else { + debug(DEBUG, "Failed to remove identity for remote Provider %s\n", remote_providerID); + } + + return(0); +} + /*****************************************************************************/ /* overrided parent class methods */ /*****************************************************************************/ diff --git a/lasso/id-ff/user.h b/lasso/id-ff/user.h index 9cc2964f..22a6128e 100644 --- a/lasso/id-ff/user.h +++ b/lasso/id-ff/user.h @@ -86,6 +86,10 @@ LASSO_EXPORT gchar *lasso_user_get_next_providerID (LassoUser *user); LASSO_EXPORT gint lasso_user_remove_assertion (LassoUser *user, gchar *remote_providerID); + +LASSO_EXPORT gint lasso_user_remove_identity (LassoUser *user, + gchar *remote_providerID); + #ifdef __cplusplus } #endif /* __cplusplus */ |
