ACS Platform - Assessment Control Service server
How to use the AcsServiceServerRequestHandler (with the core LtiServiceServer) to serve authenticated ACS service calls as a platform.
Features
This library provides a AcsServiceServerRequestHandler ready to be use with the core LtiServiceServer to handle assessment control requests.
- it accepts a PSR7 ServerRequestInterface,
- leverages the required IMS LTI 1.3 service authentication,
- and returns a PSR7 ResponseInterface containing the
membership
representation
Usage
First, you need to provide a AcsServiceServerControlProcessorInterface implementation, in charge to process the ACS control requests.
<?php
use OAT\Library\Lti1p3Core\Registration\RegistrationInterface;
use OAT\Library\Lti1p3Proctoring\Model\AcsControlInterface;
use OAT\Library\Lti1p3Proctoring\Model\AcsControlResultInterface;
use OAT\Library\Lti1p3Proctoring\Service\Server\Processor\AcsServiceServerControlProcessorInterface;
/** @var AcsServiceServerControlProcessorInterface $processor */
$processor = new class() implements AcsServiceServerControlProcessorInterface
{
public function process(
RegistrationInterface $registration,
AcsControlInterface $control
) : AcsControlResultInterface {
// TODO: Implement process() method.
}
};
Then:
- you can construct the AcsServiceServerRequestHandler (constructed with your AcsServiceServerControlProcessorInterface implementation)
- to finally expose it to requests using the core LtiServiceServer (constructed with the RequestAccessTokenValidator, from core library)
<?php
use OAT\Library\Lti1p3Core\Registration\RegistrationRepositoryInterface;
use OAT\Library\Lti1p3Core\Security\OAuth2\Validator\RequestAccessTokenValidator;
use OAT\Library\Lti1p3Core\Service\Server\LtiServiceServer;
use OAT\Library\Lti1p3Proctoring\Service\Server\Processor\AcsServiceServerControlProcessorInterface;
use OAT\Library\Lti1p3Proctoring\Service\Server\Handler\AcsServiceServerRequestHandler;
use Psr\Http\Message\ServerRequestInterface;
/** @var ServerRequestInterface $request */
$request = ...
/** @var RegistrationRepositoryInterface $repository */
$repository = ...
/** @var AcsServiceServerControlProcessorInterface $processor */
$processor = ...
$validator = new RequestAccessTokenValidator($repository);
$handler = new AcsServiceServerRequestHandler($processor);
$server = new LtiServiceServer($validator, $handler);
// Generates an authenticated response containing the control result representation
$response = $server->handle($request);