diff options
| author | Christophe Nowicki <cnowicki@easter-eggs.com> | 2004-08-19 10:29:28 +0000 |
|---|---|---|
| committer | Christophe Nowicki <cnowicki@easter-eggs.com> | 2004-08-19 10:29:28 +0000 |
| commit | 6efe72288ad48659febde2037d6d245195c7e8cc (patch) | |
| tree | f48b7ee6e9b9a05b7dfe0b9f27a671a1a67bb074 | |
| parent | 6fdcd66750821e615ea13ddf13ab9ad68ed523aa (diff) | |
| download | lasso-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.php | 19 | ||||
| -rw-r--r-- | php/Attic/examples/sample-sp/logout.php | 32 | ||||
| -rw-r--r-- | php/environs/lasso_profile.c | 76 | ||||
| -rw-r--r-- | php/lasso.c | 1 | ||||
| -rw-r--r-- | php/php_lasso.h | 1 |
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 © 2004 Entr'ouvert</p> +<p>Copyright © 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); |
