...
- The name of the Plugin must match the format
FooAuthenticator
. - The Plugin must implement a model
FooAuthenticator
, and a corresponding Controller. (These are in addition to the other models and controllers required for Plugins.)- This Model should extend
AuthenticatorBackend
, which defines some standard interfaces and provides some behind the scenes common functionality. - The Model should set a public variable
$multiple
that is true is the Authenticator supports multiple values, or false otherwise. - The Controller should to extend
SAuthController
("Standard Authenticator" Controller), which provides some common functionality. - When a new Authenticator Backend is instantiated, a skeletal row in the corresponding
co_foo_authenticators
table will be created. There is noadd
operation or view required. The skeletal row will point to the parent Authenticator Model. - When an Authenticator Backend is edited, the entry point to the Authenticator Plugin will be
foo_authenticator/foo_authenticators/edit/#
. This will be called immediately after the Authenticator Backend is first instantiated. - Authenticator Plugins that support Authenticator Reset should set
$enableSSR = true
in the model.
- This Model should extend
- Note
Authenticator
has ahasOne
(ie: 1 to 1) relationship withFooAuthenticator
. - The table
cm_foo_authenticators
should include a foreign key tocm_authenticators:id
.- Other tables used by the plugin should reference
cm_foo_authenticators:id
.
- Other tables used by the plugin should reference
- The Plugin must implement several functions, which are defined in
Model/AuthenticatorBackend.php
. More details are in the next section. - The Plugin must implement a model for the Authenticator itself,
Model/Foo.php
. For example, for thePasswordAuthenticator
Plugin, this Model isPassword
and is defined inPassword.php
. The Plugin must also implement a corresponding Controller,Controller/FoosController.php
. This Controller should extendSAMController.php
("Standard Authenticator Model" Controller).The Authenticator's model should not
actsAs Provisioner
. SAMController will handle triggering provisioning under appropriate circumstances.- Data from Authenticator models following these conventions and with a relation to CoPerson (ie: there is a
co_person_id
foreign key) will automatically be made available to Provisioner plugins.
...