Example #1
0
 /**
  * Show login form.
  */
 public function showLoginForm()
 {
     $this->prepare();
     if (isset($_COOKIE[UserSession::FAILED_LOGIN_COOKIE_NAME])) {
         $messageField = new FieldDescription('message');
         $messageField->setType(FieldDescription::FIELD_TYPE_STRING);
         $this->getDataDescription()->addFieldDescription($messageField);
         $messageField->setRights(FieldDescription::FIELD_MODE_READ);
         $messageField = new Field('message');
         $messageField->addRowData($_COOKIE[UserSession::FAILED_LOGIN_COOKIE_NAME]);
         $this->getData()->addField($messageField);
         E()->getResponse()->deleteCookie(UserSession::FAILED_LOGIN_COOKIE_NAME);
     }
     //Во избежание появления empty рекордсета
     $this->getData()->addField((new Field('username'))->setRowData(0, ''));
     //Если есть информация о авторизации через фейсбук
     foreach (array('auth.facebook', 'auth.vk') as $configSectionName) {
         if ($this->getToolbar()) {
             list($tbr) = array_values($this->getToolbar());
             if ($ctrl = $tbr->getControlByID($configSectionName)) {
                 $ctrl->disable();
             }
             if ($ctrl && $this->getConfigValue($configSectionName)) {
                 if ($appID = $this->getConfigValue($configSectionName . '.appID')) {
                     $ctrl->setAttribute('appID', $appID);
                     $ctrl->enable();
                 }
             }
         }
     }
 }
 /**
  * @copydoc LoginForm::showLoginForm
  */
 public function showLoginForm()
 {
     $this->prepare();
     if (isset($_COOKIE[UserSession::FAILED_LOGIN_COOKIE_NAME])) {
         $messageField = new FieldDescription('message');
         $messageField->setType(FieldDescription::FIELD_TYPE_STRING);
         $this->getDataDescription()->addFieldDescription($messageField);
         $messageField->setRights(FieldDescription::FIELD_MODE_READ);
         $messageField = new Field('message');
         $messageField->addRowData($_COOKIE[UserSession::FAILED_LOGIN_COOKIE_NAME]);
         $this->getData()->addField($messageField);
         E()->getResponse()->deleteCookie(UserSession::FAILED_LOGIN_COOKIE_NAME);
     }
     //Во избежание появления empty рекордсета
     $f = new Field('username');
     $f->setData('');
     $this->getData()->addField($f);
     //Если есть информация о авторизации через соц. сети
     foreach (['fb', 'vk', 'ok', 'goo'] as $socialType) {
         foreach (array_values($this->getToolbar()) as $tbr) {
             if ($ctrl = $tbr->getControlByID('auth.' . $socialType)) {
                 $ctrl->disable();
             }
             if ($ctrl && $this->getConfigValue('auth.' . $socialType)) {
                 if (($appID = $this->getConfigValue('auth.' . $socialType . '.appID')) && ($secretKey = $this->getConfigValue('auth.' . $socialType . '.appID'))) {
                     $authClassName = 'Energine\\user\\gears\\' . strtoupper($socialType) . 'OAuth';
                     /**
                      * @var $auth IOAuth
                      */
                     $auth = new $authClassName(['appId' => $appID, 'secret' => $secretKey, 'public' => $this->getConfigValue('auth.' . $socialType . '.publicKey')]);
                     $ctrl->setAttribute('loginUrl', $auth->getLoginUrl(['redirect_uri' => ($base = E()->getSiteManager()->getCurrentSite()->base) . 'auth.php?' . $socialType . 'Auth&return=' . $this->getReturnUrl(), 'scope' => $ctrl->getAttribute('permissions')]));
                     $ctrl->setAttribute('appID', $appID);
                     $ctrl->enable();
                 }
             }
         }
     }
 }
Example #3
0
 /**
  * Build tab of rights.
  *
  * @param int $id Division ID.
  *
  * @note By creation of new division use parent ID.
  */
 private function buildRightsTab($id)
 {
     $builder = new Builder($this->getTitle());
     //получаем информацию о всех группах имеющихся в системе
     $groups = $this->dbh->select('user_groups', ['group_id', 'group_name']);
     $groups = convertDBResult($groups, 'group_id');
     //создаем матриц
     //название группы/перечень прав
     foreach (array_keys($groups) as $groupID) {
         $res[] = ['right_id' => 0, 'group_id' => $groupID];
     }
     $resultData = new Data();
     $resultData->load($res);
     $builder->setData($resultData);
     $rightsField = $resultData->getFieldByName('right_id');
     $groupsField = $resultData->getFieldByName('group_id');
     //создаем переменную содержащую идентификторы групп в которые входит пользователь
     $data = $this->dbh->select('share_access_level', ['group_id', 'right_id'], ['smap_id' => $id]);
     if ($data) {
         $data = convertDBResult($data, 'group_id', true);
         for ($i = 0; $i < $resultData->getRowCount(); $i++) {
             //если установлены права для группы  - изменяем в объекте данных
             if (isset($data[$groupsField->getRowData($i)])) {
                 $rightsField->setRowData($i, $data[$groupsField->getRowData($i)]['right_id']);
             }
             $groupsField->setRowProperty($i, 'group_id', $groupsField->getRowData($i));
         }
     }
     for ($i = 0; $i < $resultData->getRowCount(); $i++) {
         $groupsField->setRowProperty($i, 'group_id', $groupsField->getRowData($i));
         $groupsField->setRowData($i, $groups[$groupsField->getRowData($i)]['group_name']);
     }
     $resultDD = new DataDescription();
     $fd = new FieldDescription('group_id');
     $fd->setSystemType(FieldDescription::FIELD_TYPE_STRING);
     $fd->setMode(FieldDescription::FIELD_MODE_READ);
     $fd->setLength(30);
     $resultDD->addFieldDescription($fd);
     $fd = new FieldDescription('right_id');
     $fd->setSystemType(FieldDescription::FIELD_TYPE_SELECT);
     $data = $this->dbh->select('user_group_rights', ['right_id', 'right_const as right_name']);
     $data = array_map(function ($a) {
         $a["right_name"] = translate("TXT_" . $a["right_name"]);
         return $a;
     }, $data);
     $data[] = ['right_id' => 0, 'right_name' => $this->translate('TXT_NO_RIGHTS')];
     $fd->loadAvailableValues($data, 'right_id', 'right_name');
     $resultDD->addFieldDescription($fd);
     $builder->setDataDescription($resultDD);
     $builder->build();
     $field = new Field('page_rights');
     for ($i = 0; $i < count(E()->getLanguage()->getLanguages()); $i++) {
         $field->addRowData($builder->getResult());
     }
     $this->getData()->addField($field);
 }