summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Clapies <nclapies@entrouvert.com>2004-07-26 16:01:59 +0000
committerNicolas Clapies <nclapies@entrouvert.com>2004-07-26 16:01:59 +0000
commitc3fa9bdbe41f4d1076fecec4aaa4aaa4a8caec2d (patch)
tree5c6f4c001df51dc6fab5d9dfca60bffcae9407b4
parentae959a9e38e85986b8e8a910cec9aaca1274565b (diff)
downloadlasso-c3fa9bdbe41f4d1076fecec4aaa4aaa4a8caec2d.tar.gz
lasso-c3fa9bdbe41f4d1076fecec4aaa4aaa4a8caec2d.tar.xz
lasso-c3fa9bdbe41f4d1076fecec4aaa4aaa4a8caec2d.zip
acces to RelayState in logout object
-rw-r--r--lasso/id-ff/logout.c48
-rw-r--r--lasso/id-ff/logout.h25
-rw-r--r--python/environs/py_logout.c26
-rw-r--r--python/lasso.py28
4 files changed, 75 insertions, 52 deletions
diff --git a/lasso/id-ff/logout.c b/lasso/id-ff/logout.c
index 1bf252d6..99b40a8a 100644
--- a/lasso/id-ff/logout.c
+++ b/lasso/id-ff/logout.c
@@ -25,6 +25,9 @@
#include <lasso/environs/logout.h>
+#define LASSO_LOGOUT_NODE "LassoLogout"
+#define LASSO_REMOTE_PROVIDERID_NODE "RemoteProviderID"
+
static GObjectClass *parent_class = NULL;
struct _LassoLogoutPrivate
@@ -40,9 +43,20 @@ gchar *
lasso_logout_dump(LassoLogout *logout)
{
gchar *dump = NULL;
+ LassoNode *logout_node = NULL;
+ LassoNodeClass *logout_class = NULL;
g_return_val_if_fail(LASSO_IS_LOGOUT(logout), NULL);
+ logout_node = lasso_node_new();
+ logout_class = LASSO_NODE_GET_CLASS(logout_node);
+ logout_class->set_name(logout_node, LASSO_LOGOUT_NODE);
+
+ /* back up */
+/* lasso_node_add_child(logout_node, logout->first_request); */
+/* lasso_node_add_child(logout_node, logout->first_response); */
+/* lasso_node_set_prop(logout_node, LASSO_REMOTE_PROVIDERID_NODE, logout->first_remote_providerID); */
+
return(dump);
}
@@ -163,7 +177,9 @@ lasso_logout_get_next_providerID(LassoLogout *logout)
current_provider_id = g_strdup(g_ptr_array_index(profileContext->user->assertion_providerIDs, i));
if(logout->first_remote_providerID!=NULL){
if(xmlStrEqual(current_provider_id, logout->first_remote_providerID)){
- /* message(G_LOG_LEVEL_INFO, "It's the ProviderID of the SP requester (%s) : %s, pass it\n", logout->first_remote_providerID, current_provider_id); */
+ debug("It's the ProviderID of the SP requester (%s) : %s, pass it\n",
+ logout->first_remote_providerID,
+ current_provider_id);
xmlFree(current_provider_id);
continue;
}
@@ -224,7 +240,7 @@ lasso_logout_init_request(LassoLogout *logout,
}
break;
default:
- message(G_LOG_LEVEL_ERROR, "Unknown provider type\n");
+ message(G_LOG_LEVEL_ERROR, "Invalid provider type\n");
return(-4);
}
@@ -270,8 +286,8 @@ gint lasso_logout_load_user_dump(LassoLogout *logout,
}
gint lasso_logout_load_request_msg(LassoLogout *logout,
- gchar *request_msg,
- lassoHttpMethods request_method)
+ gchar *request_msg,
+ lassoHttpMethods request_method)
{
LassoProfileContext *profileContext;
@@ -290,10 +306,10 @@ gint lasso_logout_load_request_msg(LassoLogout *logout,
profileContext->request = lasso_logout_request_new_from_export(request_msg, lassoNodeExportTypeQuery);
break;
case lassoHttpMethodGet:
- message(G_LOG_LEVEL_WARNING, "TODO, implement the get method\n");
+ debug("TODO, implement the get method\n");
break;
default:
- message(G_LOG_LEVEL_ERROR, "Unknown request method\n");
+ message(G_LOG_LEVEL_ERROR, "Invalid request method\n");
return(-3);
}
if(profileContext->request==NULL){
@@ -302,8 +318,10 @@ gint lasso_logout_load_request_msg(LassoLogout *logout,
}
/* get the NameIdentifier to load user dump */
- LASSO_PROFILE_CONTEXT(logout)->nameIdentifier = lasso_node_get_child_content(profileContext->request,
- "NameIdentifier", NULL);
+ profileContext->nameIdentifier = lasso_node_get_child_content(profileContext->request,
+ "NameIdentifier", NULL);
+ profileContext->msg_relayState = lasso_node_get_child_content(profileContext->request,
+ "RelayState", NULL);
return(0);
}
@@ -501,7 +519,7 @@ lasso_logout_dispose(LassoLogout *logout)
}
logout->private->dispose_has_run = TRUE;
- debug("ProfileContext object 0x%x disposed ...\n", logout);
+ debug("Logout object 0x%x disposed ...\n", logout);
/* unref reference counted objects */
lasso_node_destroy(logout->first_request);
@@ -575,9 +593,8 @@ GType lasso_logout_get_type() {
}
LassoLogout *
-lasso_logout_new(lassoProviderTypes provider_type,
- LassoServer *server,
- LassoUser *user)
+lasso_logout_new(LassoServer *server,
+ lassoProviderTypes provider_type)
{
LassoLogout *logout;
@@ -585,10 +602,9 @@ lasso_logout_new(lassoProviderTypes provider_type,
/* set the logout object */
logout = g_object_new(LASSO_TYPE_LOGOUT,
- "provider_type", provider_type,
- "server", server,
- "user", user,
- NULL);
+ "server", server,
+ "provider_type", provider_type,
+ NULL);
return(logout);
}
diff --git a/lasso/id-ff/logout.h b/lasso/id-ff/logout.h
index 42644ca7..8f300820 100644
--- a/lasso/id-ff/logout.h
+++ b/lasso/id-ff/logout.h
@@ -65,10 +65,9 @@ struct _LassoLogoutClass {
LASSO_EXPORT GType lasso_logout_get_type (void);
-LASSO_EXPORT LassoLogout* lasso_logout_new (lassoProviderTypes provider_type,
- LassoServer *server,
- LassoUser *user);
-
+LASSO_EXPORT LassoLogout* lasso_logout_new (LassoServer *server,
+ lassoProviderTypes provider_type);
+
LASSO_EXPORT gint lasso_logout_build_request_msg (LassoLogout *logout);
LASSO_EXPORT gint lasso_logout_build_response_msg (LassoLogout *logout);
@@ -78,25 +77,25 @@ LASSO_EXPORT void lasso_logout_destroy (LassoLogout *log
LASSO_EXPORT gchar* lasso_logout_get_next_providerID (LassoLogout *logout);
LASSO_EXPORT gint lasso_logout_init_request (LassoLogout *logout,
- gchar *remote_providerID);
+ gchar *remote_providerID);
LASSO_EXPORT gint lasso_logout_load_user_dump (LassoLogout *logout,
- gchar *user_dump);
+ gchar *user_dump);
LASSO_EXPORT gint lasso_logout_load_request_msg (LassoLogout *logout,
- gchar *request_msg,
- lassoHttpMethods request_method);
+ gchar *request_msg,
+ lassoHttpMethods request_method);
LASSO_EXPORT gint lasso_logout_process_request (LassoLogout *logout);
LASSO_EXPORT gint lasso_logout_process_request_msg (LassoLogout *logout,
- gchar *request_msg,
- lassoHttpMethods request_method);
+ gchar *request_msg,
+ lassoHttpMethods request_method);
LASSO_EXPORT gint lasso_logout_process_response_msg (LassoLogout *logout,
- gchar *response_msg,
- lassoHttpMethods response_method);
-
+ gchar *response_msg,
+ lassoHttpMethods response_method);
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
diff --git a/python/environs/py_logout.c b/python/environs/py_logout.c
index f2aef5a1..0146c844 100644
--- a/python/environs/py_logout.c
+++ b/python/environs/py_logout.c
@@ -25,6 +25,8 @@
#include "../lassomod.h"
+#include "../xml/py_xml.h"
+
#include "py_logout.h"
PyObject *LassoLogout_wrap(LassoLogout *logout) {
@@ -57,16 +59,20 @@ PyObject *logout_getattr(PyObject *self, PyObject *args) {
if (!strcmp(attr, "__members__"))
return Py_BuildValue("[ssss]", "user", "msg_url", "msg_body",
"nameIdentifier", "msg_relayState");
- if (!strcmp(attr, "user"))
- return (LassoUser_wrap(LASSO_PROFILE_CONTEXT(logout)->user));
if (!strcmp(attr, "msg_url"))
return (charPtrConst_wrap(LASSO_PROFILE_CONTEXT(logout)->msg_url));
if (!strcmp(attr, "msg_body"))
return (charPtrConst_wrap(LASSO_PROFILE_CONTEXT(logout)->msg_body));
- if (!strcmp(attr, "nameIdentifier"))
- return (charPtrConst_wrap(LASSO_PROFILE_CONTEXT(logout)->nameIdentifier));
if (!strcmp(attr, "msg_relayState"))
return (charPtrConst_wrap(LASSO_PROFILE_CONTEXT(logout)->msg_relayState));
+ if (!strcmp(attr, "nameIdentifier"))
+ return (charPtrConst_wrap(LASSO_PROFILE_CONTEXT(logout)->nameIdentifier));
+ if (!strcmp(attr, "request"))
+ return (LassoNode_wrap(LASSO_PROFILE_CONTEXT(logout)->request));
+ if (!strcmp(attr, "response"))
+ return (LassoNode_wrap(LASSO_PROFILE_CONTEXT(logout)->response));
+ if (!strcmp(attr, "user"))
+ return (LassoUser_wrap(LASSO_PROFILE_CONTEXT(logout)->user));
Py_INCREF(Py_None);
return (Py_None);
@@ -75,19 +81,17 @@ PyObject *logout_getattr(PyObject *self, PyObject *args) {
PyObject *logout_new(PyObject *self, PyObject *args) {
gint provider_type;
- PyObject *server_obj, *user_obj;
+ PyObject *server_obj;
LassoLogout *logout;
- if (CheckArgs(args, "IOo:logout_new")) {
- if(!PyArg_ParseTuple(args, (char *) "IO|O:logout_new",
- &provider_type, &server_obj, &user_obj))
+ if (CheckArgs(args, "OI:logout_new")) {
+ if(!PyArg_ParseTuple(args, (char *) "Oi:logout_new",
+ &server_obj, &provider_type))
return NULL;
}
else return NULL;
- logout = lasso_logout_new(provider_type,
- LassoServer_get(server_obj),
- LassoUser_get(user_obj));
+ logout = lasso_logout_new(LassoServer_get(server_obj), provider_type);
return (LassoLogout_wrap(logout));
}
diff --git a/python/lasso.py b/python/lasso.py
index 1190445a..2f77c19a 100644
--- a/python/lasso.py
+++ b/python/lasso.py
@@ -990,26 +990,30 @@ class Logout:
def __isprivate(self, name):
return name == '_o'
- def __init__(self, _obj):
- """
- The constructor
- """
- self._o = _obj
-
def __getattr__(self, name):
if self.__isprivate(name):
return self.__dict__[name]
if name[:2] == "__" and name[-2:] == "__" and name != "__members__":
raise AttributeError, name
-
ret = lassomod.logout_getattr(self, name)
- if ret:
- if name=="user":
- ret = User(_obj=ret)
+ if ret is None:
+ return None
+ if name == "user":
+ ret = User(_obj=ret)
+ if name == "request":
+ ret = LogoutRequest(_obj=ret)
+ if name == "response":
+ ret = LogoutResponse(_obj=ret)
return ret
- def new(cls, provider_type, server, user = None):
- obj = lassomod.logout_new(provider_type, server, user)
+ def __init__(self, _obj):
+ """
+ The constructor
+ """
+ self._o = _obj
+
+ def new(cls, server, provider_type):
+ obj = lassomod.logout_new(server, provider_type)
return Logout(obj)
new = classmethod(new)