summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristophe Nowicki <cnowicki@easter-eggs.com>2004-08-19 10:29:28 +0000
committerChristophe Nowicki <cnowicki@easter-eggs.com>2004-08-19 10:29:28 +0000
commit6efe72288ad48659febde2037d6d245195c7e8cc (patch)
treef48b7ee6e9b9a05b7dfe0b9f27a671a1a67bb074
parent6fdcd66750821e615ea13ddf13ab9ad68ed523aa (diff)
downloadlasso-6efe72288ad48659febde2037d6d245195c7e8cc.tar.gz
lasso-6efe72288ad48659febde2037d6d245195c7e8cc.tar.xz
lasso-6efe72288ad48659febde2037d6d245195c7e8cc.zip
PHP Binding :
Added lasso_profile_set_session_from_dump Now lasso_cast_to_profile take to different reources Sample SP : Logout in progress
-rw-r--r--php/Attic/examples/sample-sp/index.php19
-rw-r--r--php/Attic/examples/sample-sp/logout.php32
-rw-r--r--php/environs/lasso_profile.c76
-rw-r--r--php/lasso.c1
-rw-r--r--php/php_lasso.h1
5 files changed, 98 insertions, 31 deletions
diff --git a/php/Attic/examples/sample-sp/index.php b/php/Attic/examples/sample-sp/index.php
index 0a232742..9f8b1b5f 100644
--- a/php/Attic/examples/sample-sp/index.php
+++ b/php/Attic/examples/sample-sp/index.php
@@ -26,7 +26,6 @@
$ret = @dl('lasso.' . PHP_SHLIB_SUFFIX);
if ($ret == FALSE)
{
-
print "<p align='center'><b>The Lasso Extension is not available</b><br>";
print "Please check your PHP extensions<br>";
print "You can get more informations about <b>Lasso</b> at <br>";
@@ -44,16 +43,16 @@
lasso_init();
?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Lasso Service Provider Example</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
</head>
<body>
-<br><br>
-<table border="1" align="center" frame="above">
+<p>
+<table border="1" frame="above">
<tr>
<td><b>Service Provider Administration</b></td>
</tr>
@@ -88,8 +87,9 @@
</tr>
<?php } ?>
</table>
-
-<table border="1" align="center" frame="above">
+</p>
+<p>
+<table border="1" frame="above">
<caption><b>Status</b></caption>
<tr>
<?php
@@ -140,13 +140,14 @@
?>
</tr>
</table>
+</p>
<?php
}
?>
<p>Lasso Version : <?php echo lasso_version(); ?></p>
<br>
-<p align="right">Copyright &copy; 2004 Entr'ouvert</p>
+<p>Copyright &copy; 2004 Entr'ouvert</p>
</body>
diff --git a/php/Attic/examples/sample-sp/logout.php b/php/Attic/examples/sample-sp/logout.php
index 1d4ab750..94b790b4 100644
--- a/php/Attic/examples/sample-sp/logout.php
+++ b/php/Attic/examples/sample-sp/logout.php
@@ -1,6 +1,6 @@
<?php
/*
- * Service Provider Example -- AssertionConsumer
+ * Service Provider Example -- Logout
*
* Copyright (C) 2004 Entr'ouvert
* http://lasso.entrouvert.org
@@ -23,6 +23,9 @@
*/
include "config.php.inc";
+
+ require_once 'DB.php';
+
session_start();
@@ -32,6 +35,11 @@
}
lasso_init();
+
+ $db = &DB::connect($dsn);
+
+ if (DB::isError($db))
+ die($db->getMessage());
$server_dump = file_get_contents($server_dump_filename);
@@ -39,7 +47,27 @@
$logout = lasso_logout_new($server, lassoProviderTypeSp);
- // $profile = lasso_cast_to_profile($logout);
+ $profile = lasso_cast_to_profile($logout);
+
+ lasso_profile_set_session_from_dump($profile, $_SESSION['session_dump']);
+
+ $query = "SELECT identity_dump FROM users WHERE user_id='" . $_SESSION['user_id'] . "'";
+
+ $res =& $db->query($query);
+
+ if (DB::isError($res))
+ print $res->getMessage(). "\n";
+
+ $row = $res->fetchRow();
+ $identity_dump = $row[0];
+
+ lasso_profile_set_identity_from_dump($profile, $identity_dump);
+
+ lasso_logout_init_request($logout, "");
+ lasso_logout_build_request_msg($logout);
+
+ $db->disconnect();
+
lasso_shutdown();
?>
diff --git a/php/environs/lasso_profile.c b/php/environs/lasso_profile.c
index da87a8e3..d363960f 100644
--- a/php/environs/lasso_profile.c
+++ b/php/environs/lasso_profile.c
@@ -70,54 +70,55 @@ PHP_FUNCTION(lasso_profile_new)
}
/* }}} */
-/* {{{ proto lasso_profile_dump() */
+/* TODO {{{ proto lasso_profile_dump() */
PHP_FUNCTION(lasso_profile_dump)
{
}
/* }}} */
-/* {{{ proto lasso_profile_set_remote_providerid() */
+/* TODO {{{ proto lasso_profile_set_remote_providerid() */
PHP_FUNCTION(lasso_profile_set_remote_providerid)
{
}
/* }}} */
-/* {{{ proto lasso_profile_set_response_status() */
+/* TODO {{{ proto lasso_profile_set_response_status() */
PHP_FUNCTION(lasso_profile_set_response_status)
{
}
/* }}} */
-/* {{{ proto lasso_profile_user_from_dump() */
+/* TODO {{{ proto lasso_profile_user_from_dump() */
PHP_FUNCTION(lasso_profile_user_from_dump)
{
}
/* }}} */
-/* {{{ proto lasso_profile_get_request_type_from_soap_msg() */
+/* TODO {{{ proto lasso_profile_get_request_type_from_soap_msg() */
PHP_FUNCTION(lasso_profile_get_request_type_from_soap_msg)
{
}
/* }}} */
-/* {{{ proto resource lasso_cast_to_profile(resource login) */
+/* {{{ proto resource lasso_cast_to_profile(resource login|logout) */
PHP_FUNCTION(lasso_cast_to_profile)
{
LassoProfile *ctx;
- LassoLogin *login;
-
-
+ LassoLogin *login;
+ LassoLogout *logout;
zval *parm;
-
+ char *typename;
int num_args;
int ret;
+ ctx = 0;
+
if ((num_args = ZEND_NUM_ARGS()) != 1)
WRONG_PARAM_COUNT
@@ -125,16 +126,25 @@ PHP_FUNCTION(lasso_cast_to_profile)
return;
}
- ZEND_FETCH_RESOURCE(login, LassoLogin *, &parm, -1, le_lassologin_name, le_lassologin);
-
- ctx = LASSO_PROFILE(login);
-
- /* zend_printf("ctx %p, login %p\n", ctx, login);
-
- zend_printf("msg_url %s\n", ctx->msg_url);
- zend_printf("msg_body %s\n", ctx->msg_body); */
+ typename = zend_rsrc_list_get_rsrc_type(Z_LVAL_P(parm) TSRMLS_CC);
+
+ if (strcmp(typename, le_lassologin_name) == 0)
+ {
+ ZEND_FETCH_RESOURCE(login, LassoLogin *, &parm, -1, le_lassologin_name, le_lassologin);
+ ctx = LASSO_PROFILE(login);
+ }
+ else if (strcmp(typename, le_lassologout_name) == 0)
+ {
+ ZEND_FETCH_RESOURCE(logout, LassoLogout *, &parm, -1, le_lassologout_name, le_lassologout);
+ ctx = LASSO_PROFILE(logout);
+ }
+ else
+ {
+ zend_error(E_ERROR, "Can not cast %s to LassoProfile", typename);
+ }
- ZEND_REGISTER_RESOURCE(return_value, ctx, le_lassoprofile);
+ if (ctx)
+ ZEND_REGISTER_RESOURCE(return_value, ctx, le_lassoprofile);
}
/* }}} */
@@ -369,7 +379,7 @@ PHP_FUNCTION(lasso_profile_get_nameidentifier) {
}
/* }}} */
-/* {{{ proto lasso_profile_set_identity_from_dump(resource login, string dump) */
+/* {{{ proto lasso_profile_set_identity_from_dump(resource profile, string dump) */
PHP_FUNCTION(lasso_profile_set_identity_from_dump) {
LassoProfile *ctx;
@@ -394,3 +404,29 @@ PHP_FUNCTION(lasso_profile_set_identity_from_dump) {
lasso_profile_set_identity_from_dump(ctx, dump);
}
/* }}} */
+
+/* {{{ proto lasso_profile_set_session_from_dump(resource profile, string dump) */
+PHP_FUNCTION(lasso_profile_set_session_from_dump) {
+
+ LassoProfile *ctx;
+ char *dump;
+ int dump_len;
+
+ zval *parm;
+
+ int num_args;
+ int ret;
+
+ if ((num_args = ZEND_NUM_ARGS()) != 2)
+ WRONG_PARAM_COUNT
+
+ if (zend_parse_parameters(num_args TSRMLS_CC, "zs", &parm,
+ &dump, &dump_len) == FAILURE) {
+ return;
+ }
+
+ ZEND_FETCH_RESOURCE(ctx, LassoProfile *, &parm, -1, le_lassoprofile_name, le_lassoprofile);
+
+ lasso_profile_set_session_from_dump(ctx, dump);
+}
+/* }}} */
diff --git a/php/lasso.c b/php/lasso.c
index 472a7362..d4e024eb 100644
--- a/php/lasso.c
+++ b/php/lasso.c
@@ -99,6 +99,7 @@ function_entry lasso_functions[] = {
PHP_FE(lasso_profile_is_session_dirty, NULL)
PHP_FE(lasso_profile_get_nameidentifier, NULL)
PHP_FE(lasso_profile_set_identity_from_dump, NULL)
+ PHP_FE(lasso_profile_set_session_from_dump, NULL)
/* lasso_lib_authn_request.c */
PHP_FE(lasso_cast_to_lib_authn_request, NULL)
diff --git a/php/php_lasso.h b/php/php_lasso.h
index 9da89eeb..f05079ba 100644
--- a/php/php_lasso.h
+++ b/php/php_lasso.h
@@ -109,6 +109,7 @@ PHP_FUNCTION(lasso_profile_get_session);
PHP_FUNCTION(lasso_profile_is_session_dirty);
PHP_FUNCTION(lasso_profile_get_nameidentifier);
PHP_FUNCTION(lasso_profile_set_identity_from_dump);
+PHP_FUNCTION(lasso_profile_set_session_from_dump);
/* lasso_lib_authn_request.c */
PHP_FUNCTION(lasso_cast_to_lib_authn_request);