commiting uncommited changes on live site
[weblabels.fsf.org.git] / crm.fsf.org / 20131203 / files / sites / all / modules-new / cas / cas_server.response.inc
1 <?php
2
3 /**
4 * @file
5 * Response callbacks for the CAS Server module.
6 */
7
8 /**
9 * Returns a CAS 2.0 service response for a validation success.
10 *
11 * @param $variables
12 * An associative array containing the keys:
13 * - 'name': CAS username.
14 * - 'attributes': (optional) CAS attributes.
15 */
16 function theme_cas_service_validate_success($variables) {
17 $cas_name = $variables['name'];
18 $output = "<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>\n";
19 $output .= "<cas:authenticationSuccess>\n";
20 $output .= "<cas:user>$cas_name</cas:user>\n";
21 $output .= theme('cas_service_validate_attributes', $variables);
22 $output .= "</cas:authenticationSuccess>\n";
23 $output .= "</cas:serviceResponse>\n";
24
25 return $output;
26 }
27
28 /**
29 * Returns CAS attributes as part of a CAS 2.0 service response.
30 *
31 * @param $variables
32 * An associative array containing the keys 'attributes' and 'style', where
33 * the value of 'style' must be one of:
34 * - 'jasig' (default)
35 * - 'rubycas'
36 * - 'name-value'
37 */
38 function theme_cas_service_validate_attributes($variables) {
39 $attributes = $variables['attributes'];
40 $style = $variables['style'];
41
42 $output = '';
43 switch ($style) {
44 case 'jasig':
45 default:
46 $output .= "<cas:attributes>\n";
47 $output .= "<cas:attraStyle>Jasig</cas:attraStyle>\n";
48 foreach ($attributes as $name => $values) {
49 foreach ((array) $values as $value) {
50 $output .= strtr("<cas:!name>!value</cas:!name>\n", array('!name' => $name, '!value' => $value));
51 }
52 }
53 $output .= "</cas:attributes>\n";
54 break;
55 case 'rubycas':
56 $output .= "<cas:attraStyle>RubyCAS</cas:attraStyle>\n";
57 foreach ($attributes as $name => $values) {
58 foreach ((array) $values as $value) {
59 $output .= strtr("<cas:!name>!value</cas:!name>\n", array('!name' => $name, '!value' => $value));
60 }
61 }
62 break;
63 case 'name-value':
64 $output .= "<cas:attribute name='attraStyle' value='Name-Value' />\n";
65 foreach ($attributes as $name => $values) {
66 foreach ((array) $values as $value) {
67 $output .= strtr("<cas:attribute name='!name' value='!value' />\n", array('!name' => $name, '!value' => $value));
68 }
69 }
70 break;
71 }
72
73 return $output;
74 }
75
76
77 /**
78 * Returns a CAS 2.0 service response for a validation failure.
79 *
80 * @param $variables
81 * An associative array containing the keys 'ticket' and 'error_code'.
82 */
83 function theme_cas_service_validate_failure($variables) {
84 $ticket = $variables['ticket'];
85 $error_code = $variables['error_code'];
86 $output = "<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>\n";
87 $output .= "<cas:authenticationFailure code=\"$error_code\">\n";
88 $output .= "Ticket $ticket not recognized.\n";
89 $output .= "</cas:authenticationFailure>\n";
90 $output .= "</cas:serviceResponse>\n";
91
92 return $output;
93 }
94
95
96 /**
97 * Returns a CAS 2.0 service response for a service not on the whitelist.
98 *
99 * @param $variables
100 * An associative array containing the keys 'service' and 'error_code'.
101 */
102 function theme_cas_service_validate_whitelist_failure($variables) {
103 $service = $variables['service'];
104 $error_code = $variables['error_code'];
105 $output = "<cas:serviceReponse xmlns:cas='http://www.yale.edu/tp/cas'>\n" .
106 "<cas:authenticationFailure code=\"$error_code\">\n" .
107 "Service $service not recognized.\n" .
108 "</cas:authenticationFailure>\n" .
109 "</cas:serviceResponse>\n";
110 return $output;
111 }
112
113
114 /**
115 * Generate the Single Sign Out request.
116 *
117 * @param unknown_type $variables
118 * An associative array containing the key, date and logout id request
119 */
120 function theme_cas_service_logout_request($variables) {
121 $id = $variables['id'];
122 $date = $variables['date'];
123 $ticket = $variables['ticket'];
124 $output = "<samlp:LogoutRequest xmlns:samlp='urn:oasis:names:tc:SAML:2.0:protocol' ID='$id' Version='2.0' IssueInstant='$date'>\n";
125 $output .= "<saml:NameID xmlns:saml='urn:oasis:names:tc:SAML:2.0:assertion'>@NOT_USED@</saml:NameID>\n";
126 $output .= "<samlp:SessionIndex>$ticket</samlp:SessionIndex>\n";
127 $output .= "</samlp:LogoutRequest>\n";
128 return $output;
129 }