Skip to content
Snippets Groups Projects
Commit 989ff1f7 authored by Olav Morken's avatar Olav Morken
Browse files

core:PHP: New authproc filter to run arbitrary PHP code.

git-svn-id: https://simplesamlphp.googlecode.com/svn/trunk@2051 44740490-163a-0410-bde0-09ae8108e29a
parent 20b48244
No related branches found
No related tags found
No related merge requests found
`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(),
);
',
),
<?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']);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment