Example #1
0
 public function myopenidAction()
 {
     $this->disableLayout();
     $this->setNoRender();
     $request = Gio_Core_Request::getInstance();
     $this->setLayout('login');
     require_once LIB_DIR . DS . 'openid' . DS . 'class.openid.v2.php';
     if ($request->isPost()) {
         $openidUrl = $request->getPost('openid_url');
         $openidUrl = rtrim($openidUrl, '/');
         $openid = new OpenIDService();
         $openid->SetIdentity($openidUrl);
         $openid->SetTrustRoot($request->getBaseUrl());
         $openid->SetRequiredFields(array('email', 'fullname'));
         $openid->SetOptionalFields(array('dob', 'gender', 'country'));
         if ($openid->GetOpenIDServer()) {
             $openid->SetApprovedURL($this->view->url('core_auth_myopenid'));
             $openid->Redirect();
         } else {
             $error = $openid->GetError();
             $error_code = $error["code"];
             $error_string = $error["description"];
         }
     } elseif ($request->getParam('openid_mode') == 'id_res') {
         $openid = new OpenIDService();
         $openidUrl = $request->getParam('openid_identity');
         $openidUrl = rtrim($openidUrl, '/');
         $openid->SetIdentity($openidUrl);
         $openid_validation_result = $openid->ValidateWithServer();
         /**
          * Login success
          */
         if ($openid_validation_result == true) {
             $user = Modules_Core_Services_User::getByOpenID($openidUrl);
             if ($user) {
                 $user['last_login'] = date('Y-m-d H:i:s');
                 Modules_Core_Services_User::setLastLogin($user);
                 $configs = Gio_Core_Config_Xml::getConfig('session');
                 $json = new Services_JSON();
                 $sessionId = session_id();
                 $session = array('session_id' => $sessionId, 'created_date' => strtotime(date('Y-m-d H:i:s')), 'last_update' => strtotime(date('Y-m-d H:i:s')), 'lifetime' => isset($configs->lifetime) ? $configs->lifetime : 3600, 'inactive_time' => isset($configs->inactive_time) ? $configs->inactive_time : 120, 'data' => $json->encodeUnsafe($user), 'status' => 'active');
                 Gio_Core_Session::add($session);
                 $this->redirect($this->view->url('core_dashboard_index'));
             }
         }
     }
 }