[feature/oauth] Use DB for OAuth token storage

PHPBB3-11673
This commit is contained in:
Joseph Warner 2013-07-13 16:51:38 -04:00
parent 37f099b014
commit 24bf333e16
5 changed files with 66 additions and 17 deletions

View file

@ -42,6 +42,5 @@ services:
- @config - @config
- @request - @request
- @user - @user
- @cache.driver
tags: tags:
- { name: auth.provider } - { name: auth.provider }

View file

@ -923,6 +923,15 @@ function get_schema_struct()
), ),
); );
$schemda_data['auth_provider_oauth'] = array(
'COLUMNS' => array(
'user_id' => array('UINT', 0), // phpbb_users.user_id
'oauth_provider' => array('VCHAR'), // Name of the OAuth provider
'oauth_token' => array('TEXT_UNI'), // Serialized token
),
'PRIMARY_KEY' => array('user_id', 'oauth_provider'),
);
$schema_data['phpbb_banlist'] = array( $schema_data['phpbb_banlist'] = array(
'COLUMNS' => array( 'COLUMNS' => array(
'ban_id' => array('UINT', NULL, 'auto_increment'), 'ban_id' => array('UINT', NULL, 'auto_increment'),

View file

@ -28,9 +28,16 @@ class phpbb_auth_oauth_token_storage implements TokenStorageInterface
/** /**
* Cache driver. * Cache driver.
* *
* @var phpbb_cache_driver_interface * @var phpbb_db_driver
*/ */
protected $driver; protected $db;
/**
* Name of the OAuth provider
*
* @var string
*/
protected $service_name;
/** /**
* @var object|TokenInterface * @var object|TokenInterface
@ -40,11 +47,12 @@ class phpbb_auth_oauth_token_storage implements TokenStorageInterface
/** /**
* Creates token storage for phpBB. * Creates token storage for phpBB.
* *
* @param phpbb_cache_driver_interface $driver The cache driver * @param phpbb_db_driver $db
*/ */
public function __construct(phpbb_cache_driver_interface $driver) public function __construct(phpbb_db_driver $db, $service_name)
{ {
$this->driver = $driver; $this->db = $db;
$this->service_name = $service_name;
} }
/** /**

View file

@ -53,13 +53,6 @@ class phpbb_auth_provider_oauth extends phpbb_auth_provider_base
*/ */
protected $user; protected $user;
/**
* Cache driver.
*
* @var phpbb_cache_driver_interface
*/
protected $driver;
/** /**
* Cached service once it has been created * Cached service once it has been created
* *
@ -81,15 +74,13 @@ class phpbb_auth_provider_oauth extends phpbb_auth_provider_base
* @param phpbb_config $config * @param phpbb_config $config
* @param phpbb_request $request * @param phpbb_request $request
* @param phpbb_user $user * @param phpbb_user $user
* @param phpbb_cache_driver_interface $driver
*/ */
public function __construct(phpbb_db_driver $db, phpbb_config $config, phpbb_request $request, phpbb_user $user, phpbb_cache_driver_interface $driver) public function __construct(phpbb_db_driver $db, phpbb_config $config, phpbb_request $request, phpbb_user $user)
{ {
$this->db = $db; $this->db = $db;
$this->config = $config; $this->config = $config;
$this->request = $request; $this->request = $request;
$this->user = $user; $this->user = $user;
$this->driver = $driver;
} }
/** /**
@ -186,7 +177,7 @@ class phpbb_auth_provider_oauth extends phpbb_auth_provider_base
return $this->service; return $this->service;
} }
$storage = new phpbb_auth_oauth_token_storage($this->driver); $storage = new phpbb_auth_oauth_token_storage($this->db, $service_name);
$current_uri = $this->get_current_uri(); $current_uri = $this->get_current_uri();

View file

@ -0,0 +1,42 @@
<?php
/**
*
* @package migration
* @copyright (c) 2013 phpBB Group
* @license http://opensource.org/licenses/gpl-license.php GNU Public License v2
*
*/
class phpbb_db_migration_data_310_auth_provider_oauth extends phpbb_db_migration
{
public function effectively_installed()
{
return $this->db_tools->sql_table_exists($this->table_prefix . 'auth_provider_oauth');
}
public function update_schema()
{
return array(
'add_tables' => array(
$this->table_prefix . 'auth_provider_oauth' => array(
'COLUMNS' => array(
'user_id' => array('UINT', 0), // phpbb_users.user_id
'oauth_provider' => array('VCHAR'), // Name of the OAuth provider
'oauth_token' => array('TEXT_UNI'), // Serialized token
),
'PRIMARY_KEY' => array('user_id', 'oauth_provider'),
),
),
);
}
public function revert_schema()
{
return array(
'drop_tables' => array(
$this->table_prefix . 'auth_provider_oauth',
),
);
}
}