Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
0 / 0
100.00% covered (success)
100.00%
0 / 0
CRAP
100.00% covered (success)
100.00%
0 / 0
<?php
/**
*
* This file is part of the phpBB Forum Software package.
*
* @copyright (c) phpBB Limited <https://www.phpbb.com>
* @license GNU General Public License, version 2 (GPL-2.0)
*
* For full copyright and license information, please see
* the docs/CREDITS.txt file.
*
*/
namespace phpbb\auth\provider;
/**
* The interface authentication provider classes have to implement.
*/
interface provider_interface
{
    /**
     * Checks whether the user is currently identified to the authentication
     * provider.
     * Called in acp_board while setting authentication plugins.
     * Changing to an authentication provider will not be permitted in acp_board
     * if there is an error.
     *
     * @return     boolean|string     False if the user is identified, otherwise an
     *                            error message, or null if not implemented.
     */
    public function init();
    /**
     * Performs login.
     *
     * @param    string    $username     The name of the user being authenticated.
     * @param    string    $password    The password of the user.
     * @return    array    An associative array of the format:
     *                        array(
     *                            'status' => status constant
     *                            'error_msg' => string
     *                            'user_row' => array
     *                        )
     *                    A fourth key of the array may be present:
     *                    'redirect_data'    This key is only used when 'status' is
     *                    equal to LOGIN_SUCCESS_LINK_PROFILE and its value is an
     *                    associative array that is turned into GET variables on
     *                    the redirect url.
     */
    public function login($username, $password);
    /**
     * Autologin function
     *
     * @return     array|null    containing the user row, empty if no auto login
     *                         should take place, or null if not impletmented.
     */
    public function autologin();
    /**
     * This function is used to output any required fields in the authentication
     * admin panel. It also defines any required configuration table fields.
     *
     * @return    array|null    Returns null if not implemented or an array of the
     *                        configuration fields of the provider.
     */
    public function acp();
    /**
     * This function updates the template with variables related to the acp
     * options with whatever configuraton values are passed to it as an array.
     * It then returns the name of the acp file related to this authentication
     * provider.
     *
     * @param \phpbb\config\config    $new_config    Contains the new configuration values
     *                                             that have been set in acp_board.
     * @return array|null        Returns null if not implemented or an array with
     *                            the template file name and an array of the vars
     *                            that the template needs that must conform to the
     *                            following example:
     *                            array(
     *                                'TEMPLATE_FILE'    => string,
     *                                'TEMPLATE_VARS'    => array(...),
     *                            )
     *                            An optional third element may be added to this
     *                            array: 'BLOCK_VAR_NAME'. If this is present,
     *                            then its value should be a string that is used
     *                            to designate the name of the loop used in the
     *                            ACP template file. When this is present, an
     *                            additional key named 'BLOCK_VARS' is required.
     *                            This must be an array containing at least one
     *                            array of variables that will be assigned during
     *                            the loop in the template. An example of this is
     *                            presented below:
     *                            array(
     *                                'BLOCK_VAR_NAME'    => string,
     *                                'BLOCK_VARS'        => array(
     *                                    'KEY IS UNIMPORTANT' => array(...),
     *                                ),
     *                                'TEMPLATE_FILE'    => string,
     *                                'TEMPLATE_VARS'    => array(...),
     *                            )
     */
    public function get_acp_template($new_config);
    /**
    * Returns an array of data necessary to build custom elements on the login
    * form.
    *
    * @return    array|null    If this function is not implemented on an auth
    *                        provider then it returns null. If it is implemented
    *                        it will return an array of up to four elements of
    *                        which only 'TEMPLATE_FILE'. If 'BLOCK_VAR_NAME' is
    *                        present then 'BLOCK_VARS' must also be present in
    *                        the array. The fourth element 'VARS' is also
    *                        optional. The array, with all four elements present
    *                        looks like the following:
    *                        array(
    *                            'TEMPLATE_FILE'        => string,
    *                            'BLOCK_VAR_NAME'    => string,
    *                            'BLOCK_VARS'        => array(...),
    *                            'VARS'                => array(...),
    *                        )
    */
    public function get_login_data();
    /**
     * Performs additional actions during logout.
     *
     * @param     array    $data            An array corresponding to
     *                                    \phpbb\session::data
     * @param     boolean    $new_session    True for a new session, false for no new
     *                                    session.
     */
    public function logout($data, $new_session);
    /**
     * The session validation function checks whether the user is still logged
     * into phpBB.
     *
     * @param     array     $user
     * @return     boolean    true if the given user is authenticated, false if the
     *                     session should be closed, or null if not implemented.
     */
    public function validate_session($user);
    /**
    * Checks to see if $login_link_data contains all information except for the
    * user_id of an account needed to successfully link an external account to
    * a forum account.
    *
    * @param    array    $login_link_data    Any data needed to link a phpBB account to
    *                                an external account.
    * @return    string|null    Returns a string with a language constant if there
    *                        is data missing or null if there is no error.
    */
    public function login_link_has_necessary_data($login_link_data);
    /**
    * Links an external account to a phpBB account.
    *
    * @param    array    $link_data    Any data needed to link a phpBB account to
    *                                an external account.
    */
    public function link_account(array $link_data);
    /**
    * Returns an array of data necessary to build the ucp_auth_link page
    *
    * @param int $user_id User ID for whom the data should be retrieved.
    *                        defaults to 0, which is not a valid ID. The method
    *                        should fall back to the current user's ID in this
    *                        case.
    * @return    array|null    If this function is not implemented on an auth
    *                        provider then it returns null. If it is implemented
    *                        it will return an array of up to four elements of
    *                        which only 'TEMPLATE_FILE'. If 'BLOCK_VAR_NAME' is
    *                        present then 'BLOCK_VARS' must also be present in
    *                        the array. The fourth element 'VARS' is also
    *                        optional. The array, with all four elements present
    *                        looks like the following:
    *                        array(
    *                            'TEMPLATE_FILE'        => string,
    *                            'BLOCK_VAR_NAME'    => string,
    *                            'BLOCK_VARS'        => array(...),
    *                            'VARS'                => array(...),
    *                        )
    */
    public function get_auth_link_data($user_id = 0);
    /**
    * Unlinks an external account from a phpBB account.
    *
    * @param    array    $link_data    Any data needed to unlink a phpBB account
    *                                from a phpbb account.
    */
    public function unlink_account(array $link_data);
}