Example #1
0
 /**
  *  Akce po úspěšném přihlášení
  */
 public function loginOK()
 {
     try {
         $session = JFactory::getSession();
         $skautIsToken = @$_REQUEST['skautIS_Token'];
         $soap = new SoapClient($this->skautisUrl . '/JunakWebservice/UserManagement.asmx?WSDL');
         $params = array('userDetailInput' => array('ID_Login' => $_REQUEST['skautIS_Token']));
         $userDetail = @$soap->UserDetail($params)->UserDetailResult;
         if ($userDetail->IsActive && $userDetail->IsEnabled) {
             $username = $userDetail->UserName;
             $idPerson = $userDetail->ID_Person;
             $idUser = $userDetail->ID;
             $hasMembership = $userDetail->HasMembership;
             if ($idPerson) {
                 $soapOrg = new SoapClient($this->skautisUrl . '/JunakWebservice/OrganizationUnit.asmx?WSDL');
                 $params = array('personDetailInput' => array('ID_Login' => $skautIsToken, 'ID' => $idPerson));
                 $personDetail = @$soapOrg->PersonDetail($params)->PersonDetailResult;
             } else {
                 $personDetail = null;
             }
             //zjištění, jestli zvolený uživatel existuje => pokud ne, tak ho nově vytvoříme
             /** @var $usersModel SkautisModelUsers */
             $usersModel =& $this->getModel('Users', 'SkautisModel');
             if ($usersModel->userExists($idUser, $username)) {
                 //uživatel existuje - jen ho aktualizujeme
                 if ($personDetail) {
                     $usersModel->updateSkautisUser($userDetail, $personDetail);
                     //aktualizace uživatelského jména a e-mailu
                 }
             } else {
                 //potřebujeme zaregistrovat nového uživatele
                 $usersModel->registerSkautisUser($userDetail, $personDetail);
             }
             $session->set('skautIsToken', $skautIsToken, 'skautIs');
             $app = JFactory::getApplication();
             $app->login(array('username' => $userDetail->UserName, 'password' => 'skautis', 'skautisUserId' => $idUser, 'user' => $usersModel->getUserId($idUser), 'timestamp' => time()), array('silent' => false));
             //aktualizace fotky
             $params = array('personPhotoInput' => array('ID_Login' => $skautIsToken, 'ID' => $idPerson, 'Size' => 'normal'));
             $personPhoto = @$soapOrg->PersonPhoto($params)->PersonPhotoResult;
             if ($personPhoto) {
                 $photoUrl = $usersModel->updateSkautisUserPhoto($idPerson, $personPhoto, 'normal');
                 if ($photoUrl) {
                     $session->set('userPhoto', $photoUrl, 'skautIs');
                 } else {
                     $session->clear('userPhoto', 'skautIs');
                 }
             }
             //--aktualizace fotky
             $this->setRedirect('/');
         } else {
             //zobrazení informace o tom, že uživatel není aktivní
             JFactory::getApplication()->enqueueMessage(JText::_('SKAUTIS_USER_NOT_ACTIVE'), 'error');
         }
     } catch (Exception $e) {
         JFactory::getApplication()->enqueueMessage(JText::_('SKAUTIS_LOGIN_ERROR'), 'error');
     }
 }