Available in 1.6 1.7 1.8 trunk

core:AttributeAlter

This filter can be used to substitute and replace different parts of the attribute value based on regular expressions.

1 Parameters

class
This is the name of the filter. It must be 'core:AttributeAlter'.
subject
The attribute in which the search is preformed. This parameter is REQUIRED and the filter will throw an exception if this parameter is not set.
pattern
The regular expression used. This parameter is REQUIRED and the filter will throw an exception if this parameter is not set. It is not possible to use backreference.
replacement
The value used to replace the searched value. This parameter is REQUIRED if %replace is not used. If %replace is used and replacement is not set, then the matched text is used instead.
target
The target attribute where the replaced attribute value is put. This parameter is OPTIONAL. If this parameter is not set subject is used as target.
%replace
Indicate whether the searched part should be replaced or the whole value. this parameter is OPTIONAL.

2 Examples

Change the domain on the mail attribute (when both the new and old domain is known):

10 => array(
    'class' => 'core:AttributeAlter',
    'subject' => 'mail',
    'pattern' => '/olddomain.com/',
    'replacement' => 'newdomain.com',
),

Change the domain on the mail attribute (when new domain is known):

10 => array(
    'class' => 'core:AttributeAlter',
    'subject' => 'mail',
    'pattern' => '/(?:[A-Za-z0-9-]+\.)+[A-Za-z]{2,6}$/',
    'replacement' => 'newdomain.com',
),

Set the eduPersonPrimaryAffiliation based on users distinguishedName:

10 => array(
    'class' => 'core:AttributeAlter',
    'subject' => 'dn',
    'pattern' => '/OU=Staff/',
    'replacement' => 'staff',
    'target' => 'eduPersonPrimaryAffiliation',
),

Change the eduPersonPrimaryAffiliation:

10 => array(
    'class' => 'core:AttributeAlter',
    'subject' => 'eduPersonPrimaryAffiliation',
    'pattern' => '/Student in school/',
    'replacement' => 'student',
    '%replace',
),

Get the domain of the email and put it in a seperat attribute:

10 => array(
    'class' => 'core:AttributeAlter',
    'subject' => 'mail',
    'pattern' => '/(?:[A-Za-z0-9-]+\.)+[A-Za-z]{2,6}$/',
    'target' => 'domain',
    '%replace',
),