/** * 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(); } } } } }
/** * 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); }