You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

See also: Writing Registry Plugins

The interface requirements for Organizational Identity Sources is considered Experimental, and may change across minor releases.

Plugin Requirements

  1. The name of the Plugin should match the format FooSource.
  2. The Plugin should implement a FooSource model and a corresponding controller (FoosController).
    1. This model should belongTo OrgIdentitySource.
    2. The controller should extend SOISController.
    3. When a new Org Identity Source is created, a skeletal row in the corresponding foo_sources table will be created. There is no add operation or view required. The skeletal row will point to the parent Org Identity Source.
    4. When an Org Identity Source is edited, the entry point to the Plugin will be foo_source/foo_sources/edit/#. This will be called immediately after the parent Org Identity Source is created.
    5. Note OrgIdentitySource has a hasOne (ie: 1 to 1) relationship with FooSource.
    6. The table foo_sources should include a foreign key to org_identity_sources:id.
      1. Other tables used by the plugin should reference foo_source:id.
  3. The Plugin should also implement a model named FooSourceBackend.
    1. The backend is responsible for the implementation of the backend search and retrieval capabilities.
      1. The raw record returned by the retrieve() function should not change if the underlying backend record has not changed. Registry uses the raw record to determine when the related Org Identity record must be updated.
      2. The Plugin should support mail (email address) as a searchable attribute. This capability is used by Enrollment Flows in Org Identity Source mode operating in a self service configuration.
      3. See also Supported Attributes, below.
    2. This model should extend OrgIdentitySourceBackend, and implement the abstract functions defined in the parent model (see app/Model/OrgIdentitySourceBackend.php).
    3. Note that the Plugin configuration for FooSource will be available to the backend in $this->pluginCfg.
  4. Registry will automatically track the current backend data via the org_identity_source_records table.

Supported Attributes

The Org Identity Source Backend is expected to return both a raw record (directly representing the backend datasource), and a formatted record. The formatted record is expected to represent an OrgIdentity, in typical Cake array format, along with its associated Models. The Backend may return the following supported attributes:

AttributeMulti-valued?Required?Notes
AddressYesNoSee note (info) below.
EmailAddressYesNoSee note (info) below.
IdentifierYesNoDoes not automatically include the unique key (SORID). See note (info) below.
NameYesNoDo not include Primary Name. See note (info) below.
OrgIdentity.affiliationNoNoPossible values may vary by CO; see CoExtendedType::definedTypes
OrgIdentity.titleNoNo 
OrgIdentity.oNoNo 
OrgIdentity.ouNoNo 
PrimaryNameNoYesThis Name should not also be included in the Names array.
TelephoneNumberYesNoSee note (info) below.

For multi-valued attributes, only one attribute of a given type is currently supported. For example, there can only be one official EmailAddress, though a second EmailAddress may be provided if (eg) of type personal.

Possible types may vary by CO, see CoExtendedType::definedTypes for valid types.

 

Example

$myData = array(
  'OrgIdentity' => array(
    'title' => 'Researcher',
    'o' => 'University of Impossible Equations',
    'ou' => 'Department of Timey Wimey Stuff'
  ),
  'PrimaryName' => array(
    'given' => 'Pat',
    'family' => 'Lee',
    'type' => 'official',
    'primary_name' => true
  ),
  // Note below here are multi-valued arrays
  'Identifier' => array(
    array(
      'identifier' => 'plee@university.edu',
      'type' => 'eppn',
      'login' => true
    )
  ),
  'EmailAddress' => array(
    array(
      'mail' => 'plee@university.edu',
      'type' => 'official',
      'verified' => true
    ),
    array(
      'mail' => 'plee@socialemail.com',
      'type' => 'personal',
      'verified' => false
    )
  )
);
  • No labels