
[smarcet] - #5315 - Resource Server Administration Change-Id: Ia5a560e0bfe39af673dcc60673839d561ebc1a8d
136 lines
4.0 KiB
PHP
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;
|
|
}
|
|
}
|