OpenID library installed
[living-lab-site.git] / application / controllers / test.php
1 <?php
2
3 class Test extends CI_Controller {
4
5     function Test()
6     {
7         parent::__construct();
8
9     $this->lang->load('openid', 'english');
10         $this->load->library('openid');
11         $this->load->helper('url');
12         //$this->output->enable_profiler(TRUE);
13     }
14     
15     // Index
16     function index()
17     {
18     if ($this->input->post('action') == 'verify')
19     {
20         $user_id = $this->input->post('openid_identifier');
21         $pape_policy_uris = $this->input->post('policies');
22         
23         if (!$pape_policy_uris)
24         {
25           $pape_policy_uris = array();
26         }
27         
28         $this->config->load('openid');      
29         $req = $this->config->item('openid_required');
30         $opt = $this->config->item('openid_optional');
31         $policy = site_url($this->config->item('openid_policy'));
32         $request_to = site_url($this->config->item('openid_request_to'));
33         
34         $this->openid->set_request_to($request_to);
35         $this->openid->set_trust_root(base_url());
36         $this->openid->set_args(null);
37         $this->openid->set_sreg(true, $req, $opt, $policy);
38         $this->openid->set_pape(true, $pape_policy_uris);
39         $this->openid->authenticate($user_id);
40     }
41     
42     $data['pape_policy_uris'] = array(
43         PAPE_AUTH_MULTI_FACTOR_PHYSICAL,
44         PAPE_AUTH_MULTI_FACTOR,
45         PAPE_AUTH_PHISHING_RESISTANT
46         );
47         
48     $this->load->view('view_openid', $data);
49
50     }
51     
52     // Policy
53     function policy()
54     {
55       $this->load->view('view_policy');
56     }
57     
58     // set message
59     function _set_message($msg, $val = '', $sub = '%s')
60     {
61         return str_replace($sub, $val, $this->lang->line($msg));
62     }
63     
64     // Check
65     function check()
66     {    
67       $this->config->load('openid');
68       $request_to = site_url($this->config->item('openid_request_to'));
69       
70       $this->openid->set_request_to($request_to);
71     $response = $this->openid->getResponse();
72
73     switch ($response->status)
74     {
75         case Auth_OpenID_CANCEL:
76             $data['msg'] = $this->lang->line('openid_cancel');
77             break;
78         case Auth_OpenID_FAILURE:
79             $data['error'] = $this->_set_message('openid_failure', $response->message);
80             break;
81         case Auth_OpenID_SUCCESS:
82             $openid = $response->getDisplayIdentifier();
83             $esc_identity = htmlspecialchars($openid, ENT_QUOTES);
84
85             $data['success'] = $this->_set_message('openid_success', array($esc_identity, $esc_identity), array('%s','%t'));
86
87             if ($response->endpoint->canonicalID) {
88                 $data['success'] .= $this->_set_message('openid_canonical', $response->endpoint->canonicalID);
89             }
90
91             $sreg_resp = Auth_OpenID_SRegResponse::fromSuccessResponse($response);
92             $sreg = $sreg_resp->contents();
93
94             foreach ($sreg as $key => $value)
95             {
96                 $data['success'] .= $this->_set_message('openid_content', array($key, $value), array('%s','%t'));
97             }
98
99             $pape_resp = Auth_OpenID_PAPE_Response::fromSuccessResponse($response);
100
101             if ($pape_resp)
102             {
103                 if ($pape_resp->auth_policies)
104                 {
105                     $data['success'] .= $this->lang->line('openid_pape_policies_affected');
106
107                     foreach ($pape_resp->auth_policies as $uri)
108                     {
109                         $data['success'] .= "<li><tt>$uri</tt></li>";
110                     }
111
112                     $data['success'] .= "</ul>";
113                 }
114                 else
115                 {
116                     $data['success'] .= $this->lang->line('openid_pape_not_affected');
117                 }
118
119                 if ($pape_resp->auth_age)
120                 {
121                     $data['success'] .= $this->_set_message('openid_auth_age', $pape_resp->auth_age);
122                 }
123
124                 if ($pape_resp->nist_auth_level)
125                 {
126                     $data['success'] .= $this->_set_message('openid_nist_level', $pape_resp->nist_auth_level);
127                 }
128             }
129             else
130             {
131                 $data['success'] .= $this->lang->line('openid_pape_noresponse');
132             }
133             break;
134      }
135     
136       $data['pape_policy_uris'] = array(
137         PAPE_AUTH_MULTI_FACTOR_PHYSICAL,
138         PAPE_AUTH_MULTI_FACTOR,
139         PAPE_AUTH_PHISHING_RESISTANT
140     );
141         
142     $this->load->view('view_openid', $data);   
143     }
144
145 }
146 ?>