[feature/oauth] Add get_login_data to the auth_provider_interface

PHPBB3-11673
This commit is contained in:
Joseph Warner 2013-08-02 14:05:09 -04:00
parent 381e7c347b
commit 245e71e4e2
4 changed files with 50 additions and 3 deletions

View file

@ -3367,6 +3367,26 @@ function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = fa
$s_hidden_fields['credential'] = $credential; $s_hidden_fields['credential'] = $credential;
} }
$auth_provider = $phpbb_container->get('auth.provider.' . $config['auth_method']);
$auth_provider_data = $auth_provider->get_login_data();
if ($auth_provider_data)
{
if (isset($auth_provider_data['VARS']))
{
$template->assign_vars($auth_provider_data['VARS']);
}
if (isset($auth_provider_data['BLOCK_VAR_NAME']))
{
$template->assign_block_vars($auth_provider_data['BLOCK_VAR_NAME'], $auth_provider_data['BLOCK_VARS']);
}
$template->assign_vars(array(
'PROVIDER_TEMPLATE_FILE' => $auth_provider_data['TEMPLATE_FILE'],
));
}
$oauth_login = ($config['auth_method'] == 'oauth') ? true : false; $oauth_login = ($config['auth_method'] == 'oauth') ? true : false;
if ($oauth_login) if ($oauth_login)

View file

@ -54,6 +54,14 @@ abstract class phpbb_auth_provider_base implements phpbb_auth_provider_interface
return; return;
} }
/**
* {@inheritdoc}
*/
public function get_login_data()
{
return;
}
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */

View file

@ -106,6 +106,27 @@ interface phpbb_auth_provider_interface
*/ */
public function get_acp_template($new_config); 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. * Performs additional actions during logout.
* *

View file

@ -274,9 +274,7 @@ class phpbb_auth_provider_oauth extends phpbb_auth_provider_base
} }
/** /**
* Returns an array of login data for all enabled OAuth services. * {@inheritdoc}
*
* @return array
*/ */
public function get_login_data() public function get_login_data()
{ {