You will probably need some settings for the administrator to fill in when they set up a Login Method for your Handler in the AdminCP.
Some settings are already provided. You do not need to do anything with them, as Invision Community will handle the values automatically:
- A name for the login method (the default value will be that which is provided by the getTitle() method).
- Whether AdminCP logins are enabled
- Whether new accounts are allowed
- If you are using a Username/Password handler: whether the user will provide a username or an email address to log in. If you override the acpForm() method, you will need to add this back in unless you have hardcoded a value for authType().
- If you are using an OAuth-based handler: settings for client ID, secret, and settings related to profile syncing.
There are three methods involved:
- acpForm() returns an array of form elements controlling what is displayed in the form. You can also return strings which will create headers. You will override this adding your own elements.
- acpFormSave() performs any modification of the values you want to do before saving. If not provided, the values will be saved automatically.
- testSettings() tests that the settings are valid. It should return TRUE or throw a LogicException if the values are not valid.
You can then access the values of these settings in your login handler code through $this->settings.
Here is some sample code which you could add to the sample code provided in Creating a Button Handler which would allow the administrator to change the colour of the button:
/** * ACP Settings Form * * @param string $url URL to redirect user to after successful submission * @return array List of settings to save - settings will be stored to core_login_methods.login_settings DB field * @code return array( 'savekey' => new \IPS\Helpers\Form\[Type]( ... ), ... ); * @endcode */ public function acpForm() { return array( 'my_login_handler_customization', // NOTE: Create a language string for this 'button_color' => new \IPS\Helpers\Form\Color( 'my_login_handler_button_color', $this->buttonColor() ) // NOTE: Create a language string for this ); } /** * Get the button color * * @return string */ public function buttonColor() { return isset( $this->settings['button_color'] ) ? $this->settings['button_color'] : '#ff3399'; }
Report Document