openstackid/app/services/oauth2/ResourceServerService.php
smarcet 224fd1f886 Implements: blueprint openid-oauth2-admin.backend-resource-server-administration
[smarcet] - #5315 - Resource Server Administration

Change-Id: Ia5a560e0bfe39af673dcc60673839d561ebc1a8d
2014-01-10 13:28:36 -03:00

136 lines
4.0 KiB
PHP

<?php
namespace services\oauth2;
use oauth2\models\IResourceServer;
use oauth2\models\IClient;
use oauth2\services\id;
use oauth2\services\IResourceServerService;
use oauth2\services\IClientService;
use ResourceServer;
use DB;
class ResourceServerService implements IResourceServerService {
private $client_service;
public function __construct(IClientService $client_service){
$this->client_service = $client_service;
}
/**
* @param int $page_size
* @param int $page_nbr
* @return mixed
*/
public function getAll($page_size = 10, $page_nbr = 1)
{
DB::getPaginator()->setCurrentPage($page_nbr);
return ResourceServer::paginate($page_size);
}
/**
* @param IResourceServer $resource_server
* @return void
*/
public function save(IResourceServer $resource_server)
{
$resource_server->Save();
}
/**
* sets resource server status (active/deactivated)
* @param $resource_server_id id of resource server
* @param bool $status status (active/non active)
* @return void
*/
public function setStatus($resource_server_id, $status)
{
ResourceServer::find($resource_server_id)->update(array('active'=>$status));
}
/**
* deletes a resource server
* @param $resource_server_id id of resource server
* @return bool
*/
public function delete($resource_server_id)
{
$res = false;
DB::transaction(function () use ($resource_server_id,&$res) {
$resource_server = ResourceServer::find($resource_server_id);
if(!is_null($resource_server)){
$client = $resource_server->client()->first();
if(!is_null($client)){
$this->client_service->deleteClientByIdentifier($client->id);
}
$resource_server->delete();
$res = true;
}
});
return $res;
}
/**
* get a resource server by id
* @param $resource_server_id id of resource server
* @return IResourceServer
*/
public function get($resource_server_id)
{
return ResourceServer::find($resource_server_id);
}
/** Creates a new resource server instance
* @param $host
* @param $ip
* @param $friendly_name
* @param bool $active
* @return IResourceServer
*/
public function addResourceServer($host, $ip, $friendly_name, $active)
{
$instance = null;
if(is_string($active)){
$active = $active==='true'?true:false;
}
DB::transaction(function () use ($host, $ip, $friendly_name, $active, &$instance) {
$instance = new ResourceServer(
array(
'host' => $host,
'ip' => $ip,
'active' => $active,
'friendly_name' => $friendly_name
)
);
$instance->Save();
// creates a new client for this brand new resource server
$new_client = $this->client_service->addClient(IClient::ClientType_Confidential,null,$host.'.confidential.application',$friendly_name.' confidential oauth2 application');
$new_client->resource_server()->associate($instance);
$new_client->Save();
});
return $instance;
}
/**
* @param $resource_server_id
* @return bool
*/
public function regenerateResourceServerClientSecret($resource_server_id){
$res = '';
DB::transaction(function () use ($resource_server_id,&$res) {
$resource_server = ResourceServer::find($resource_server_id);
if(!is_null($resource_server)){
$client = $resource_server->client()->first();
if(!is_null($client)){
$res = $this->client_service->regenerateClientSecret($client->id);
}
}
});
return $res;
}
}