Revision: 2051
Author: olavmrk
Date: Tue Dec 8 23:45:18 2009
Log: core:PHP: New authproc filter to run arbitrary PHP code.
http://code.google.com/p/simplesamlphp/source/detail?r=2051
Added:
/trunk/modules/core/docs
/trunk/modules/core/docs/authproc_php.txt
/trunk/modules/core/lib/Auth/Process/PHP.php
=======================================
--- /dev/null
+++ /trunk/modules/core/docs/authproc_php.txt Tue Dec 8 23:45:18 2009
@@ -0,0 +1,46 @@
+`core:PHP`
+==========
+
+This is a filter which makes it possible to run arbitrary PHP code to
motidy the attributes of an user.
+
+Parameters
+----------
+
+`class`
+: This is the name of the filter.
+ It must be `'core:PHP'`.
+
+`code`
+: The PHP code that should be run.
+ This PHP code will have one variable available - `$attributes`.
+ This is an associative array of attributes, and can be modified to add
or remove attributes.
+
+Examples
+--------
+
+Add the `mail` attribute based on the user's `uid` attribute:
+
+ 10 => array(
+ 'class' => 'core:PHP',
+ 'code' => '
+ if (empty($attributes["uid"])) {
+ throw new Exception("Missing uid attribute.");
+ }
+
+ $uid = $attributes["uid"][0];
+ $mail = $uid . "@example.net";
+ $attributes["mail"] = array($mail);
+ ',
+ ),
+
+
+Create a random number variable:
+
+ 10 => array(
+ 'class' => 'core:PHP',
+ 'code' => '
+ $attributes["random"] = array(
+ (string)rand(),
+ );
+ ',
+ ),
=======================================
--- /dev/null
+++ /trunk/modules/core/lib/Auth/Process/PHP.php Tue Dec 8 23:45:18 2009
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * Attribute filter for running arbitrary PHP code.
+ *
+ * @package simpleSAMLphp
+ * @version $Id$
+ */
+class sspmod_core_Auth_Process_PHP extends
SimpleSAML_Auth_ProcessingFilter {
+
+ /**
+ * The PHP code that should be run.
+ *
+ * @var string
+ */
+ private $code;
+
+
+ /**
+ * Initialize this filter, parse configuration
+ *
+ * @param array $config Configuration information about this filter.
+ * @param mixed $reserved For future use.
+ */
+ public function __construct($config, $reserved) {
+ parent::__construct($config, $reserved);
+
+ assert('is_array($config)');
+
+ if (!isset($config['code'])) {
+ throw new SimpleSAML_Error_Exception($this->authId . ':
Missing
required \'code\' option.');
+ }
+
+ $this->code = (string)$config['code'];
+ }
+
+
+ /**
+ * Apply the PHP code to the attribtes.
+ *
+ * @param array &$request The current request
+ */
+ public function process(&$request) {
+ assert('is_array($request)');
+ assert('array_key_exists("Attributes", $request)');
+
+ $function = create_function('&$attributes', $this->code);
+ $function($request['Attributes']);
+ }
+
+}
--
You received this message because you are subscribed to the Google Groups
"simpleSAMLphp commits" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/simplesamlphp-commits?hl=en.