function createInfoPage($title, $federation = -1) { $infopage = $this->myWriter->getCurrentSheet(); $name = _utf("Information"); $infopage->setName($this->normalizeSheetName($name)); // titulo $this->myWriter->addRowsWithStyle([[$title], [""]], $this->titleStyle); // en caso de estar definido, informacion de Prueba, jornada, y en su caso federacion if ($this->prueba != null) { $this->myWriter->addRowWithStyle([_utf("Contest") . ":", $this->prueba['Nombre']], $this->rowHeaderStyle); } if ($this->jornada != null) { $this->myWriter->addRowWithStyle([_utf("Journey") . ":", $this->jornada['Nombre']], $this->rowHeaderStyle); } if ($federation >= 0) { $fed = Federations::getFederation(intval($federation)); if ($fed == null) { $this->myLogger->trace("Invalid federation ID:{$federation}"); } else { $this->myWriter->addRowWithStyle([_utf("Federation") . ":", $fed->get('Name')], $this->rowHeaderStyle); $this->federation = $fed; } } // informacion de la aplicacion $this->myWriter->addRows([[""], [_utf("Program info")], ["Application: ", $this->myConfig->getEnv("program_name")], ["Version:", $this->myConfig->getEnv("version_name")], ["Revision:", $this->myConfig->getEnv("version_date")]]); // informacion de licencia $am = new AuthManager($this->myFile); $ainfo = $am->getRegistrationInfo(); $this->myWriter->addRows([[""], [_utf("License Info")], ["Serial Number:", $ainfo["Serial"]], ["User:"******"User"]], ["Club:", $ainfo["Club"]]]); }
/** * Метод сбрасывает информацию по пользователю (вызывается после изменения пользователя). */ public final function reset($userId) { $userId = AuthManager::validateUserId($userId); $this->CACHE->set($userId, null); $this->LOGGER->info('Reseting user: ' . $userId); return $userId; }
/** * Метод загружает события по переданному пользователю. Все эти события могут отражаться в маленьком личном кабинете пользователя. * * @param PsUser $user */ public function getCurrentUserEvents() { $events = array(); if (AuthManager::isAuthorized()) { $this->profilerStart(__FUNCTION__); try { $this->LOGGER->info(' >> Запрошен список события для текущего пользователя'); //Мы должны пробежаться по офисным страницам пользователя, которые поддерживают состояния, и запросить эти состояния foreach ($this->getUserAcessibleClassInstsFromList(self::LIST_OFFICE) as $office) { if (!$office instanceof NumerableOfficePage) { continue; } $state = $office->getNumericState(); if ($state) { $events[$office->getIdent()] = $state; } } $this->LOGGER->info(' << Список событий успешно загружен: ' . array_to_string($events, false)); } catch (Exception $ex) { $this->LOGGER->info('Произошла ошибка: ' . $ex->getMessage()); $this->profilerStop(false); throw $ex; } $this->profilerStop(); } return $events; }
function smarty_modifier_post_meta(PostContentProvider $postCP, $news = false) { $post = $postCP->getPost(); $postId = $post->getId(); $type = $post->getPostType(); $pp = Handlers::getInstance()->getPostsProcessorByPostType($type); $rp = Handlers::getInstance()->getRubricsProcessorByPostType($type, false); $trStateToggle = null; $rubHref = null; $commentsHref = null; $name = null; if ($news) { $name = $post->getName(); $name = "<span class=\"name\">{$name}</span>"; } if (!$news && $post->getPostType() == POST_TYPE_TRAINING && AuthManager::isAuthorized()) { $trStateToggle = '<a href="#' . $postId . '" title="Изменить состояние урока" class="toggle">Пройден</a>'; } $rubHref = $rp ? $rp->rubricHref($post->getRubricId(), null, 'rubric') : null; // if (!$news) { $commentsCnt = $post->getCommentsCount(); $commentsHref = $pp->postHref($post, "Комментариев: {$commentsCnt}", 'comments', array('class' => 'commentcount')); // } if ($name || $trStateToggle || $rubHref || $commentsHref) { echo '<div class="post_meta">'; echo "{$name} {$trStateToggle} {$rubHref} {$commentsHref}"; echo '</div>'; } }
protected function executeImpl(ArrayAdapter $params) { $url = $params->str('url'); $text = $params->str('text'); $note = $params->str('note'); if (!$url || !$text) { return 'Не передан url или текст'; } /* * Если пользователь не просматривал эту страницу и это не администратор - игнорируем. */ /* $wasOpened = PageOpenWatcher::isPageOpenedByUser($url, PsUser::instOrNull()); if (!$wasOpened && !AuthManager::isAuthorizedAsAdmin()) { return 'Пользователь не открывал страницу'; //--- } */ $text = UserInputTools::safeShortText($text); $note = $note ? UserInputTools::safeLongText($note) : $note; $saved = UtilsBean::inst()->saveMisprint($url, $text, $note, AuthManager::getUserIdOrNull()); if (!$saved) { return 'Запись не была сохранена'; //--- } return new AjaxSuccess(); }
protected function processImpl(PostArrayAdapter $adapter, $button) { $pass = $adapter->str(FORM_PARAM_REG_PASS); $passConfirm = $adapter->str(FORM_PARAM_REG_PASS_CONF); $error = UserInputValidator::validatePass($pass, $passConfirm); if ($error) { return array(FORM_PARAM_REG_PASS => $error); } $error = UserInputValidator::validatePassConfirm($pass, $passConfirm); if ($error) { return array(FORM_PARAM_REG_PASS_CONF => $error); } /* * Код */ $code = $adapter->str(REMIND_CODE_PARAM); if (!$code) { return 'Не передан код восстановления'; } $user = PassRecoverManager::changePassWithCode($code, $pass); if ($user instanceof PsUser) { $authed = AuthManager::loginUser($user->getEmail(), $pass); if ($authed) { return new AjaxSuccess(); } else { return 'Не удалось авторизоваться после смены пароля'; } } else { //Описание - почему код не может быть использован return $user; } }
/** @return DateTimeZone */ public function getCurrentDateTimeZone() { if (!isset($this->curTZ)) { $tzName = AuthManager::isAuthorized() ? PsUser::inst()->getTimezone() : null; $this->curTZ = $tzName ? $this->getDateTimeZone($tzName) : $this->getDateTimeZone(); } return $this->curTZ; }
/** * Checks permission to perform action * @return boolean */ function checkAccess() { if (AuthManager::checkAccess($this->user, $this->sAction)) { return true; } else { $this->errors[] = 'Access Denied ;)'; return false; } }
function checkAccess($methodName) { $result = true; $securedMethods = ["getGoods", "getAdminOrder", "updateGood", "getGood", "getGoodImages", "deleteGood", "getDescriptionKeys", "getGoodsKeys", "getNextGoodCode", "uploadImagesForGood", "updatePrices", "listBooklets", "getBooklet", "saveBooklet", "deleteBooklet", "getBookletBackgrounds", "saveOrder"]; if (in_array($methodName, $securedMethods)) { $result = isset($_SERVER['HTTPS']) && SessionManager::sessionStart() && AuthManager::isAuth(); } return $result; }
protected function processImpl(PostArrayAdapter $adapter, $button) { $FEEDBACK = FeedbackManager::inst(); /* * Тема */ $theme = $adapter->str(FORM_PARAM_THEME); $error = UserInputValidator::validateShortText($theme); if ($error) { return array(FORM_PARAM_THEME => $error); } $theme = UserInputTools::safeShortText($theme); /* * Комментарий */ $text = $adapter->str(FORM_PARAM_COMMENT); $error = UserInputValidator::validateLongText($text); if ($error) { return array(FORM_PARAM_COMMENT => $error); } $text = UserInputTools::safeLongText($text); /* * АВТОРИЗОВАН - пользуемся стандартным механизмом добавления сообщения в тред. * Кодом треда, при этом, является сам пользователь. */ if (AuthManager::isAuthorized()) { $msg = $FEEDBACK->saveMessage(PsUser::inst()->getId(), null, $text, $theme, PsUser::inst()); return new AjaxSuccess($FEEDBACK->buildLeaf($msg)); } /* * НЕ АВТОРИЗОВАН - сохраняем сообщение в таблицу анонимных пользователей. */ if (!AuthManager::isAuthorized()) { /* * Имя пользователя */ $name = $adapter->str(FORM_PARAM_NAME); $error = UserInputValidator::validateShortText($name); if ($error) { return array(FORM_PARAM_NAME => $error); } $name = UserInputTools::safeShortText($name); /* * Контакты */ $contacts = $adapter->str(FORM_PARAM_REG_CONTACTS); if ($contacts) { $error = UserInputValidator::validateShortText($contacts, false); if ($error) { return array(FORM_PARAM_REG_CONTACTS => $error); } $contacts = UserInputTools::safeShortText($contacts); } $FEEDBACK->saveAnonimousFeedback($name, $contacts, $theme, $text); return new AjaxSuccess(); } }
public function getUserPassedLessons() { $result = array(); if (AuthManager::isAuthorized()) { foreach (TRBean::inst()->getPassedLessons(AuthManager::getUserId()) as $id) { $result["tr{$id}"] = true; } } return $result; }
public function login() { if (FORM_AdminLoginForm::getInstance()->isValid4Process()) { $data = FORM_AdminLoginForm::getInstance()->getData(); $login = $data->getLogin(); $passwd = $data->getPassword(); AuthManager::loginAdmin($login, $passwd); } return AuthManager::isAuthorized(); }
/** * Назначает аватар пользователю * * @param int $userId - код пользователя * @param int $avatarId - код аватара (может быть null, если мы сбрасываем аватар) */ public function setUserAvatar($userId, $avatarId = null) { //Валидируем входные параметры $avatarId = PsCheck::intOrNull($avatarId); $userId = AuthManager::validateUserId($userId); if (is_integer($avatarId) && !AvatarUploader::inst()->hasUploadedFile($avatarId, $userId)) { return false; } UserBean::inst()->setUserAvatar($userId, $avatarId); return true; }
public function getStructure() { $cacheId = AuthManager::isAuthorized() ? 'a' : 'na' . '_structure'; $structure = PSCache::POSTS()->getFromCache($cacheId); if (!is_array($structure)) { PsProfiler::inst(__CLASS__)->start('Build structure'); $structure = $this->getStructureImpl()->toArray(); PsProfiler::inst(__CLASS__)->stop(); PSCache::POSTS()->saveToCache($structure, $cacheId); } return $structure; }
private function jsCommon() { $params['url'] = PsUrl::current(); $params['userId'] = AuthManager::getUserIdOrNull(); $params['isAuthorized'] = AuthManager::isAuthorized(); $params['isDOA'] = PsSettings::DEVMODE_OR_ADMIN(); $params['isLogging'] = PsSettings::DEVMODE_OR_ADMIN(); $params['currentSubmitTimeout'] = ActivityWatcher::getWaitTime(); $params['tzOffset'] = PsTimeZone::inst()->getCurrentDateTimeZone()->getOffset(new DateTime()); $params['marker'] = AuthManager::getUserSessoinMarker(); $params['foldings'] = FoldedStorage::listEntitiesRel(); return $params; }
protected function doProcess(PageContext $ctxt, RequestArrayAdapter $requestParams, ArrayAdapter $buildParams) { $this->authed = AuthManager::isAuthorizedAsAdmin(); if ($this->authed) { $this->adminPage = AdminPagesManager::getInstance()->getCurrentPage(); } else { if (FORM_AdminLoginForm::getInstance()->isValid4Process()) { if (AdminAuthManager::getInstance()->login()) { WebPages::reloadCurPage(); } } } }
protected function doProcess(PageContext $ctxt, RequestArrayAdapter $requestParams, ArrayAdapter $buildParams) { $this->authed = AuthManager::isAuthorizedAsAdmin(); if ($this->authed) { $this->adminPage = AdminPagesManager::getInstance()->getCurrentPage(); } else { //Показываем форму авторизации админа только если используем базовый провайдер безопасности if (PsSecurity::isBasic() && FORM_AdminLoginForm::getInstance()->isValid4Process()) { if (AdminAuthManager::getInstance()->login()) { PsUtil::redirectToSelf(); } } } }
/** * Afficher les informations de connexion (avec un lien pour quitter) * * @return string */ public static function afficherInformationsConnexion() { $auth = AuthManager::getInstance(); $authInfos = "<div id=\"boxMembre\">\n"; $authInfos .= "<div id=\"infosConnexion\">\n"; $authInfos .= "{$auth->getPrenom()} {$auth->getNom()}<br />\n"; $authInfos .= "Vous êtes {$auth->getStatut()}\n"; $authInfos .= "</div>\n"; $authInfos .= "<div id=\"quitter\">\n"; $authInfos .= "<a href=\"index.php?t=auth&a=quitter\">Quitter</a>\n"; $authInfos .= "</div>\n"; $authInfos .= "</div>\n"; return $authInfos; }
public function testAbstractAuthenticationProvider() { $provider = $this->getMockForAbstractClass(AbstractAuthenticationProvider::class); $providerPriv = \TestingAccessWrapper::newFromObject($provider); $obj = $this->getMockForAbstractClass('Psr\\Log\\LoggerInterface'); $provider->setLogger($obj); $this->assertSame($obj, $providerPriv->logger, 'setLogger'); $obj = AuthManager::singleton(); $provider->setManager($obj); $this->assertSame($obj, $providerPriv->manager, 'setManager'); $obj = $this->getMockForAbstractClass('Config'); $provider->setConfig($obj); $this->assertSame($obj, $providerPriv->config, 'setConfig'); $this->assertType('string', $provider->getUniqueId(), 'getUniqueId'); }
/** * Сохранение картинок галлерей в БД */ public function saveGallery($gallery, $name, array $images) { AuthManager::checkAdminAccess(); $cnt = $this->getCnt('select count(1) as cnt from ps_gallery where v_dir=?', $gallery); if ($cnt == 0) { $this->insert('insert into ps_gallery (v_dir, v_name) VALUES (?, ?)', array($gallery, $name)); } else { $this->update('update ps_gallery set v_name=? where v_dir=?', array($name, $gallery)); } $this->update('delete from ps_gallery_images where v_dir=?', $gallery); $order = 0; foreach ($images as $img) { $this->saveImg($gallery, $img, ++$order); } }
protected function processImpl(PostArrayAdapter $adapter, $button) { $data = new RegFormData(); /* * Имя пользователя */ $name = $adapter->str(FORM_PARAM_REG_NAME); $error = UserInputValidator::validateShortText($name); if ($error) { return array(FORM_PARAM_REG_NAME => $error); } $name = UserInputTools::safeShortText($name); $data->setUserName($name); /* * e-mail */ $mail = $adapter->str(FORM_PARAM_REG_MAIL); $error = UserInputValidator::validateEmail($mail); if ($error) { return array(FORM_PARAM_REG_MAIL => $error); } $data->setUserMail($mail); /* * Пол */ $sex = $adapter->int(FORM_PARAM_REG_SEX); $error = UserInputValidator::validateSex($sex); if ($error) { return array(FORM_PARAM_REG_SEX => $error); } $data->setSex($sex); /* * Пароль */ $pass = $adapter->str(FORM_PARAM_REG_PASS); $passConfirm = $adapter->str(FORM_PARAM_REG_PASS_CONF); $error = UserInputValidator::validatePass($pass, $passConfirm); if ($error) { return array(FORM_PARAM_REG_PASS => $error); } $error = UserInputValidator::validatePassConfirm($pass, $passConfirm); if ($error) { return array(FORM_PARAM_REG_PASS_CONF => $error); } $data->setPassword($pass); AuthManager::createUser($data); return new AjaxSuccess(); }
protected function processImpl(PostArrayAdapter $adapter, $button) { $login = $adapter->str(FORM_PARAM_LOGIN); if (!$login) { return array(FORM_PARAM_LOGIN, 'required'); } if (!PsCheck::isEmail($login)) { return array(FORM_PARAM_LOGIN, 'email'); } $password = $adapter->str(FORM_PARAM_PASS); if (!$password) { return array(FORM_PARAM_PASS, 'required'); } $loggedIn = AuthManager::loginUser($login, $password); return $loggedIn ? new AjaxSuccess() : 'В доступе отказано'; }
/** * Основной метод, выполняющий обновление пользователя * * @param type $userId * @param array $whatAssoc * @param array $whereAssoc * @return type */ private function updateUser($userId, array $whatAssoc, array $whereAssoc = array()) { //Сразу валидируем код пользователя $userId = AuthManager::validateUserId($userId); //В апдейте можно использовать только ассоциативные параметры Query::assertOnlyAssocParams($whatAssoc); //Получим список обновляемых колонок $columns = check_condition(array_keys($whatAssoc), 'Не переданы параметры обновления пользователя'); //Проверим на наличие запрещённых полей $denyColumns = array_intersect(self::$UPDATE_DENY_FIELDS, $columns); if ($denyColumns) { raise_error('Cледующие параметры пользователя не могут быть обновлены: ' . array_to_string(array_values($denyColumns))); } //Проверим на наличие неизвестных полей $unknownColumns = array_diff($columns, self::getColumns()); if ($unknownColumns) { raise_error('Попытка обновить недопустимые параметры пользователя: ' . array_to_string(array_values($unknownColumns))); } //Загружаем текущее состояние, на всякий случай предварительно сбросив кеш $OLD = $this->getUserDataById($this->reset($userId)); //Сбрасываем кеш и выполняем обновление $whereAssoc[self::FIELD_ID] = $this->reset($userId); $updated = $this->update(Query::update('users', $whatAssoc, $whereAssoc)); if ($updated <= 0) { return; //--- } //Загружаем новое состояние $NEW = $this->getUserDataById($this->reset($userId)); //Сравним и запишем аудит $DIF = array(); foreach ($OLD as $column => $oldValue) { if (in_array($column, self::$SKIP_AUDIT_ON_UPDATE_FIELDS)) { continue; //--- } $newValue = $NEW[$column]; if (strcmp(trim($oldValue), trim($newValue)) != 0) { $DIF[$column] = $newValue; } } if (empty($DIF)) { return; //--- } UserAudit::inst()->onUpdate($userId, $DIF); }
private function jsCommon(PageContext $ctxt) { $params['url'] = $ctxt->getRequestUrl(); $params['isPopup'] = $ctxt->isPopupPage(); $params['userId'] = AuthManager::getUserIdOrNull(); $params['isAuthorized'] = AuthManager::isAuthorized(); $params['isDOA'] = PsSettings::DEVMODE_OR_ADMIN(); $params['isLogging'] = PsSettings::DEVMODE_OR_ADMIN(); $params['currentSubmitTimeout'] = ActivityWatcher::getWaitTime(); $params['tzOffset'] = PsTimeZone::inst()->getCurrentDateTimeZone()->getOffset(new DateTime()); $params['marker'] = AuthManager::getUserSessoinMarker(); /* @var $folding FoldedResources */ foreach (Handlers::getInstance()->getFoldingsIndexed() as $unique => $folding) { $params['foldings'][$unique] = $folding->getResourcesDm()->relDirPath(); } return $params; }
/** * Основной метод, выполняющий выполнение Ajax действия. * * @return AjaxSuccess */ public final function execute() { $id = get_called_class(); check_condition(!$this->processed, "Действие [{$id}] уже выполнено."); $this->processed = true; //Не будем портить глобальный массив $_REQUEST, создав копию адаптера $params = RequestArrayAdapter::inst()->copy(); check_condition($params->str(AJAX_ACTION_PARAM) == $id, "Действие [{$id}] не может быть выполнено."); $params->remove(AJAX_ACTION_PARAM); $params->remove(AJAX_ACTION_GROUP_PARAM); //Проверка доступа AuthManager::checkAccess($this->getAuthType()); //Если пользователь зарегистрирован, как администратор - подключим ресурсы админа //ps_admin_on(); //Проверка обязательных параметров foreach (to_array($this->getRequiredParamKeys()) as $key) { if (!$params->has($key)) { return "Не передан обязательный параметр [{$key}]."; } } //Проверка активности if ($this->isCheckActivity() && !ActivityWatcher::isCanMakeAction()) { return 'Таймаут не закончился.'; } //Вызываем обработку данных PsProfiler::inst('AjaxProfiler')->start($id); $result = $this->executeImpl($params); PsProfiler::inst('AjaxProfiler')->stop(); if (isEmpty($result)) { return "Действие [{$id}] выполнено некорректно - возвращён пустой результат."; } if (is_object($result) && $result instanceof AjaxSuccess) { //SUCCESS //Зарегистрируем активноcть пользователя (только в случае успеха, так как пользователь мог просто ошибиться в воде данных) if ($this->isCheckActivity()) { ActivityWatcher::registerActivity(); } } return $result; }
/** * Список методов, доступных для вызова */ public static function getMethodsList() { if (!AuthManager::isAuthorizedAsAdmin() || PsDefines::isProduction()) { return array(); } if (!is_array(self::$METHODS)) { self::$METHODS = array(); $methodNames = PsUtil::getClassMethods(TestManager::inst(), true, false, true, true); foreach ($methodNames as $name) { $method = new ReflectionMethod(TestManager::inst(), $name); $params['name'] = $name; $params['descr'] = implode("\n", StringUtils::parseMultiLineComments($method->getDocComment())); $params['params'] = array(); /* @var $param ReflectionParameter */ foreach ($method->getParameters() as $param) { $params['params'][] = array('name' => $param->getName(), 'dflt' => $param->isDefaultValueAvailable() ? var_export($param->getDefaultValue(), true) : null); } self::$METHODS[$name] = $params; } } return self::$METHODS; }
public function toAttay() { $REQULT = array(); if ($this->query && AuthManager::isAuthorizedAsAdmin()) { $REQULT['query'] = $this->query->build($params); $REQULT['params'] = array_to_string($params); } if (!$this->data) { return $REQULT; } //Добавим стандартные обработчики для колонок foreach ($this->columns as $column) { if (starts_with($column, 'dt_')) { $this->addSetting($column, self::COL_DATE); $this->addSetting($column, self::COL_NOWRAP); } } $REQULT['data'] = $this->data; $REQULT['columns'] = $this->columns; $REQULT['settings'] = $this->settings; return $REQULT; }
/** * Метод удаляет неиспользованные коды, высланные пользователю */ public function dropUnusedCodes($type, $userId) { $this->update('delete from ps_user_codes where v_type=? and id_user=? and n_status!=?', array($type, AuthManager::validateUserId($userId), self::CODE_STATUS_USED)); }
/** Метод проверяет, имеет ли авторизованный пользователь поступ к этому классу */ protected final function checkAccess() { AuthManager::checkAccess($this->getAuthType()); }
public static function getRelatedFromPolicy(Policy $policy) { $ret = array(); $authm = new AuthManager(); $apim = new ApiManager(); $allAuths = $authm->getAllAuths(true); $relatedAuthIds = array(); $relatedAuths = array(); $authPropsArr = array(); $allApis = $apim->getAllApis(true); $relatedApiIds = array(); $relatedApis = array(); $apiPropsArr = array(); foreach ($allAuths as $auth) { /** * @var $auth Auth */ foreach ($policy->getAuthIds() as $authBucket) { if ($authBucket->getAuthIds() && in_array($auth->getId(), $authBucket->getAuthIds())) { $relatedAuths[] = $auth; } } } foreach ($relatedAuths as $auth) { $props = $auth->getProperties(); if (!empty($props)) { $authPropsArr[$auth->getId()] = array_keys($props); } } $relatedApiIds = $policy->getApiIds(); foreach ($allApis as $api) { /** * @var $api Api */ if (in_array($api->getId(), $relatedApiIds)) { $relatedApis[] = $api; } } foreach ($relatedApis as $api) { $props = $api->getProperties(); if (!empty($props)) { if ($api->getDisplayName()) { $apiPropsArr[$api->getDisplayName()] = array_keys($props); } else { $apiPropsArr[$api->getId()] = array_keys($props); } } } if (!empty($authPropsArr)) { $ret["auth"] = $authPropsArr; } if (!empty($apiPropsArr)) { $ret["api"] = $apiPropsArr; } return json_encode($ret); }