ServiceValidateController.php
1.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
/**
* serviceValidate controller class.
*
* @version 1.2.0
* @since 1.2.0
*/
namespace Cassava\CAS\Controller;
use Cassava\CAS;
use Cassava\Exception\GeneralException;
/**
* Implements CAS service validation.
*
* `/serviceValidate` checks the validity of a service ticket and does not handle proxy
* authentication. CAS MUST respond with a ticket validation failure response when a proxy
* ticket is passed to `/serviceValidate`.
*
* @since 1.2.0
*/
class ServiceValidateController extends ValidateController {
/**
* Valid ticket types.
*
* @var array
*/
protected $validTicketTypes = array(
CAS\Ticket::TYPE_ST,
);
/**
* Handles ticket validation requests.
*
* This method attempts to set a `Content-Type: text/xml` HTTP response header.
*
* @param array $request Request arguments.
* @return string Response XML string.
*
* @todo Accept proxy callback URL (pgtUrl) parameter.
* @todo Accept renew parameter.
*/
public function handleRequest( $request ) {
$service = isset( $request['service'] ) ? $request['service'] : '';
$ticket = isset( $request['ticket'] ) ? $request['ticket'] : '';
$response = new CAS\Response\ValidateResponse;
try {
$ticket = $this->validateRequest( $ticket, $service );
$response->setTicket( $ticket );
}
catch ( GeneralException $exception ) {
$response->setError( $exception->getErrorInstance() );
}
$this->server->setResponseContentType( 'text/xml' );
return $response->prepare();
}
}