DEV: Изменения в Route

This commit is contained in:
Evg 2022-05-20 00:23:20 +03:00
parent 4ad067cc3c
commit fcfb3e3410
25 changed files with 88 additions and 254 deletions

View file

@ -133,7 +133,10 @@ class ActionController extends Controller
$type = Request::get('type');
$this->limitContentDay($type);
// TODO: Изменим поля в DB для:
if (!in_array($type, ['message', 'item'])) {
$this->limitContentDay($type);
}
if (in_array($type, ['post', 'page'])) {
return (new Post\AddPostController)->create($type);
@ -171,7 +174,7 @@ class ActionController extends Controller
return (new \Modules\Catalog\App\Reply)->create($type);
}
if ($type === 'web') {
if ($type === 'item') {
return (new \Modules\Catalog\App\Add)->create($type);
}
@ -227,17 +230,13 @@ class ActionController extends Controller
}
}
// Лимит: за сутки для всех TL и лимит за день
public function limitContentDay($type)
{
if (UserData::checkAdmin()) {
return true;
}
// TODO: Изменим поля в DB для:
if ($type == 'message') {
return true;
}
// Лимит за день для ВСЕХ уровней доверия
$сount = ActionModel::getSpeedDay($this->user['id'], $type);

View file

@ -12,7 +12,7 @@ class AddFacetController extends Controller
// Add form topic | blog | category
public function index($type)
{
if (Access::limitFacet($facet_type) == false) {
if (Access::limit($facet_type) == false) {
redirect('/');
}
@ -30,7 +30,7 @@ class AddFacetController extends Controller
// Add topic | blog | category
public function create($facet_type)
{
if (Access::limitFacet($facet_type) == false) {
if (Access::limit($facet_type) == false) {
return json_encode(['error' => 'redirect', 'text' => __('msg.went_wrong')]);
}

View file

@ -33,7 +33,7 @@ class AllFacetController extends Controller
'facets' => $facets,
'pagesCount' => ceil($pagesCount / $this->limit),
'pNum' => $this->pageNumber,
'access' => Access::limitFacet($type),
'access' => Access::limit($type),
]
]
);

View file

@ -14,7 +14,7 @@ class SettingController extends Controller
{
function index()
{
switch (Request::get('type')) {
switch (Request::get('type')) {
case 'avatar':
return $this->avatarForm();
break;
@ -24,9 +24,31 @@ class SettingController extends Controller
case 'notifications':
return $this->notificationForm();
break;
case 'cover_remove':
return $this->coverRemove();
break;
default:
return $this->settingForm();
break;
}
}
function change()
{
switch (Request::get('type')) {
case 'avatar':
return $this->avatarEdit();
break;
case 'security':
return $this->securityEdit();
break;
case 'notification':
return $this->notificationEdit();
break;
default:
return $this->edit();
break;
}
}
@ -106,7 +128,7 @@ class SettingController extends Controller
return $this->render(
'/user/setting/avatar',
[
'meta' => Meta::get(__('app.edit')),
'meta' => Meta::get(__('app.avatar')),
'data' => [
'sheet' => 'avatar',
'type' => 'user',
@ -140,7 +162,7 @@ class SettingController extends Controller
return $this->render(
'/user/setting/security',
[
'meta' => Meta::get(__('app.edit_option', ['name' => __('app.password')])),
'meta' => Meta::get(__('app.security')),
'data' => [
'password' => '',
'password2' => '',

View file

@ -30,7 +30,7 @@ class Access
// Добавление тем и блогов
// $type_content: topic | blog
public static function limitFacet($type_content)
public static function limit($type_content)
{
if (UserData::checkAdmin()) {
return true;
@ -54,7 +54,7 @@ class Access
// TL автора и разрешенный TL
public static function limitTl($allowed_tl)
{
if ($allowed_tl == true) {
if ($allowed_tl === true) {
return true;
}

View file

@ -1,103 +0,0 @@
<?php
/*
* Search engine setup
* Настройка поисковой системы
*/
use Modules\Search\App\Tokenizers\AlphaNumericTokenizer;
use Modules\Search\App\Tokenizers\DateFormatTokenizer;
use Modules\Search\App\Tokenizers\DateSplitTokenizer;
use Modules\Search\App\Tokenizers\LowerCaseTokenizer;
use Modules\Search\App\Tokenizers\RemoveAccentsTokenizer;
use Modules\Search\App\Tokenizers\singleQuoteTokenizer;
use Modules\Search\App\Tokenizers\WhiteSpaceTokenizer;
// Commented example for Romanian
// Please note that if uncommented, then these classes should be added below
// use Modules\Search\App\Tokenizers\RomanianStopWordsTokenizer;
// use Modules\Search\App\Tokenizers\RomanianStemmingTokenizer;
// For English
use Modules\Search\App\Tokenizers\EnglishStemmingTokenizer;
use Modules\Search\App\Tokenizers\EnglishStopWordsTokenizer;
// Для русского языка
use Modules\Search\App\Tokenizers\RussianStemmingTokenizer;
use Modules\Search\App\Tokenizers\RussianStopWordsTokenizer;
return [
'config' => [
'var_dir' => HLEB_GLOBAL_DIRECTORY . DIRECTORY_SEPARATOR . 'storage/var',
'index_dir' => DIRECTORY_SEPARATOR . 'engine' . DIRECTORY_SEPARATOR . 'index',
'documents_dir' => DIRECTORY_SEPARATOR . 'engine' . DIRECTORY_SEPARATOR . 'documents',
'cache_dir' => DIRECTORY_SEPARATOR . 'engine' . DIRECTORY_SEPARATOR . 'cache',
'fuzzy_cost' => 1,
'approximate_limit' => 5,
'connex' => [
'threshold' => 0.9,
'min' => 3,
'max' => 10,
'limitToken' => 20,
'limitDocs' => 10
],
'serializableObjects' => [
DateTime::class => function ($datetime) {
/** @var DateTime $datetime */ return $datetime->getTimestamp();
}
]
],
'schemas' => [
'example-url' => [
'title' => [
'_type' => 'string',
'_indexed' => true,
'_boost' => 10
],
'content' => [
'_type' => 'text',
'_indexed' => true,
'_boost' => 0.5
],
'url' => [
'_type' => 'string',
'_indexed' => true,
'_boost' => 6
],
'domain' => [
'_type' => 'string',
'_indexed' => true,
'_boost' => 0.5
],
'cat' => [
'_type' => 'list',
'_type.' => 'string',
'_indexed' => true,
'_filterable' => true,
'_boost' => 6
],
]
],
'types' => [
'datetime' => [
DateFormatTokenizer::class,
DateSplitTokenizer::class
],
'_default' => [
RemoveAccentsTokenizer::class,
LowerCaseTokenizer::class,
WhiteSpaceTokenizer::class,
singleQuoteTokenizer::class,
AlphaNumericTokenizer::class,
// For English
EnglishStemmingTokenizer::class,
EnglishStopWordsTokenizer::class,
// Для русского языка
RussianStemmingTokenizer::class,
RussianStopWordsTokenizer::class,
]
]
];

View file

@ -5,7 +5,8 @@ namespace Modules\Catalog\App;
use Hleb\Constructor\Handlers\Request;
use Modules\Catalog\App\Models\WebModel;
use App\Models\{SubscriptionModel, ActionModel, FacetModel, NotificationModel};
use UserData, Meta, Validation;
use Utopia\Domains\Domain;
use UserData, Meta, Validation, Access;
class Add
{
@ -22,7 +23,9 @@ class Add
{
// Access rights by the trust level of the participant
// Права доступа по уровню доверия участника
(new \Modules\Catalog\App\Checks())->limit();
if (Access::limitTl(config('trust-levels.tl_add_item')) == false) {
redirect(url('web'));
}
// Plugin for selecting facets
Request::getResources()->addBottomStyles('/assets/js/tag/tagify.css');
@ -51,17 +54,19 @@ class Add
// Access rights by the trust level of the participant
// Права доступа по уровню доверия участника
(new \Modules\Catalog\App\Checks())->limit();
if (Access::limitTl(config('trust-levels.tl_add_item')) == false) {
return json_encode(['error' => 'redirect', 'text' => __('msg.went_wrong')]);
}
// Check if the domain exists in the system
// Проверим наличие домена в системе
if ($domain = (new \Modules\Catalog\App\Checks())->getDomain(Request::getPost('url'))) {
if ($domain = self::getDomain(Request::getPost('url'))) {
return json_encode(['error' => 'error', 'text' => __('web.site_replay')]);
}
// Get a first level domain
// Получим данные домена первого уровня
$basic_host = (new \Modules\Catalog\App\Checks())->domain(Request::getPost('url'));
$basic_host = self::domain(Request::getPost('url'));
// Check the length of the site name
// Проверим длину названия сайта
@ -138,4 +143,19 @@ class Add
return true;
}
public static function getDomain($url)
{
$basic_host = self::domain($url);
return WebModel::getItemOne($basic_host, 1);
}
public static function domain($url)
{
$parse = parse_url($url);
$domain = new Domain($parse['host']);
return $domain->getRegisterable();
}
}

View file

@ -1,96 +0,0 @@
<?php
namespace Modules\Catalog\App;
use Modules\Catalog\App\Models\{WebModel, UserAreaModel};
use Utopia\Domains\Domain;
use UserData, Html;
class Checks
{
public const USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0';
private $user;
public function __construct()
{
$this->user = UserData::get();
}
public static function length($content, $min, $max)
{
if (Html::getStrlen($content) < $min || Html::getStrlen($content) > $max) {
return false;
}
return true;
}
public static function getDomain($url)
{
$basic_host = self::domain($url);
return WebModel::getItemOne($basic_host, 1);
}
public static function domain($url)
{
$parse = parse_url($url);
$domain = new Domain($parse['host']);
return $domain->getRegisterable();
}
public function limit()
{
$count = UserAreaModel::getUserSitesCount($this->user['id']);
$count_add = UserData::checkAdmin() ? 999 : config('trust-levels.count_add_site');
$in_total = $count_add - $count;
self::trustLevel($this->user['trust_level'], config('trust-levels.tl_add_site'), $count, $count_add);
if (!$in_total > 0) {
redirect(url('web'));
}
return $in_total;
}
public static function trustLevel($trust_level, $allowed_tl, $count_content, $count_total)
{
if ($trust_level < $allowed_tl) {
redirect('/');
}
if ($count_content >= $count_total) {
redirect('/');
}
return true;
}
public static function checkStatus(string $url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, self::USER_AGENT);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSLVERSION, 3);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$page = curl_exec($ch);
$err = curl_error($ch);
if (!empty($err))
return $err;
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return $httpcode;
}
}

View file

@ -6,7 +6,7 @@ use Hleb\Constructor\Handlers\Request;
use Modules\Catalog\App\Models\WebModel;
use App\Models\{FacetModel, PostModel, NotificationModel};
use App\Models\User\UserModel;
use Validation, UserData, Meta, Html, Access;
use Validation, UserData, Meta, Access;
class Edit
{
@ -28,7 +28,7 @@ class Edit
if (Access::author('item', $domain['item_user_id'], $domain['item_date'], 0) === true) {
redirect(url('web'));
}
Request::getResources()->addBottomStyles('/assets/js/tag/tagify.css');
Request::getResources()->addBottomScript('/assets/js/tag/tagify.min.js');
Request::getResources()->addBottomScript('/assets/js/admin.js');
@ -56,16 +56,15 @@ class Edit
public function edit()
{
// Only the site author and staff can edit
// Редактировать может только автор сайта и персонал
if (Access::author('item', $domain['item_user_id'], $domain['item_date'], 0) === true) {
$data = Request::getPost();
if (!$item = WebModel::getItemId($data['item_id'])) {
return true;
}
$data = Request::getPost();
//$item_id = Request::getPostInt('item_id');
if (!$item = WebModel::getItemId($data['item_id'])) {
// Only the site author and staff can edit
// Редактировать может только автор сайта и персонал
if (Access::author('item', $item['item_user_id'], $item['item_date'], 0) === true) {
return true;
}

View file

@ -58,9 +58,6 @@ class Reply
redirect('/');
}
// If the user is frozen
(new \App\Controllers\AuditController())->stopContentQuietМode($this->user['limiting_mode']);
$redirect = url('website', ['slug' => $item['item_domain']]) . '#reply_' . $reply['reply_id'];
ReplyModel::edit(

View file

@ -11,7 +11,7 @@
<fieldset>
<label for="content"><?= __('web.description'); ?> <strong class="red">*</strong></label>
<textarea id="content" name="content" required=""></textarea>
<textarea id="content" name="content" rows="5" required=""></textarea>
<div class="help">> 24 <?= __('app.characters'); ?></div>
</fieldset>

View file

@ -11,7 +11,7 @@
<fieldset>
<label for="content"><?= __('web.description'); ?> <strong class="red">*</strong></label>
<textarea id="content" name="content" required=""><?= $domain['item_content']; ?></textarea>
<textarea id="content" name="content" rows="5" required=""><?= $domain['item_content']; ?></textarea>
<div class="help">> 24 <?= __('app.characters'); ?></div>
</fieldset>

View file

@ -7,7 +7,7 @@
</a>
</li>
<?php if (UserData::getRegType(config('trust-levels.tl_add_item'))) : ?>
<?php if (Access::limitTl(config('trust-levels.tl_add_item'))) : ?>
<?php if (config('trust-levels.count_add_item') > $data['user_count_site']) : ?>
<li>
<a href="<?= url('web.add'); ?>">

View file

@ -32,7 +32,7 @@
<?= insert(
'/_block/form/ajax',
[
'url' => url('content.create', ['type' => 'web']),
'url' => url('content.create', ['type' => 'item']),
'redirect' => UserData::checkAdmin() ? url('web') : url('web.user.sites'),
'success' => __('msg.successfully'),
'id' => 'form#addWebsite'

View file

@ -65,7 +65,7 @@ $domain = $data['domain'];
<?= insert(
'/_block/form/ajax',
[
'url' => url('content.change', ['type' => 'web']),
'url' => url('content.change', ['type' => 'item']),
'redirect' => UserData::checkAdmin() ? url('web') : url('web.user.sites'),
'success' => __('msg.successfully'),
'id' => 'form#editWebsite'

View file

@ -66,7 +66,7 @@ $item = $data['item'];
</div>
<?php if ($item['item_close_replies'] == 0) : ?>
<?php if (UserData::getRegType(config('trust-levels.tl_add_reply'))) : ?>
<?php if (Access::limitTl(config('trust-levels.tl_add_reply'))) : ?>
<form class="max-w780" action="<?= url('content.create', ['type' => 'reply']); ?>" accept-charset="UTF-8" method="post">
<?= csrf_field() ?>

View file

@ -2,7 +2,7 @@
<?= insert('/content/user/setting/nav', ['data' => $data]); ?>
<div class="box">
<form method="POST" action="<?= url('setting.avatar.edit'); ?>" enctype="multipart/form-data">
<form method="POST" action="<?= url('setting.change', ['type' => 'avatar']); ?>" enctype="multipart/form-data">
<?= csrf_field() ?>
<div class="file-upload mb10" id="file-drag">
@ -29,7 +29,7 @@
<?php if ($data['user']['cover_art'] != 'cover_art.jpeg') : ?>
<div class="relative mr15">
<img class="block br-gray max-w-100" src="<?= Html::coverUrl($data['user']['cover_art'], 'user'); ?>">
<a class="right text-sm" href="<?= url('delete.cover', ['login' => $data['user']['login']]); ?>">
<a class="right text-sm" href="<?= url('setting', ['type' => 'cover_remove']); ?>">
<?= __('app.remove'); ?>
</a>
</div>

View file

@ -18,7 +18,7 @@
<?= insert(
'/_block/form/ajax',
[
'url' => url('setting.notif.edit'),
'url' => url('setting.change', ['type' => 'notification']),
'redirect' => url('setting', ['type' => 'notifications']),
'success' => __('msg.password_changed'),
'id' => 'form#notif'

View file

@ -18,7 +18,7 @@
<?= insert(
'/_block/form/ajax',
[
'url' => url('setting.security.edit'),
'url' => url('setting.change', ['type' => 'security']),
'redirect' => url('setting', ['type' => 'security']),
'success' => __('msg.successfully'),
'id' => 'form#security'

View file

@ -18,7 +18,7 @@
<?= insert(
'/_block/form/ajax',
[
'url' => url('setting.edit'),
'url' => url('setting.change', ['type' => 'setting']),
'redirect' => url('setting'),
'success' => __('msg.change_saved'),
'id' => 'form#setting'

View file

@ -2,7 +2,7 @@
<?= insert('/content/user/setting/nav', ['data' => $data]); ?>
<div class="bg-white box">
<form method="POST" action="<?= url('setting.avatar.edit'); ?>" enctype="multipart/form-data">
<form method="POST" action="<?= url('setting.change', ['type' => 'avatar']); ?>" enctype="multipart/form-data">
<?= csrf_field() ?>
<div class="file-upload mb10" id="file-drag">
@ -29,7 +29,7 @@
<?php if ($data['user']['cover_art'] != 'cover_art.jpeg') : ?>
<div class="relative mr15">
<img class="block br-gray max-w-100" src="<?= Html::coverUrl($data['user']['cover_art'], 'user'); ?>">
<a class="right text-sm" href="<?= url('delete.cover', ['login' => $data['user']['login']]); ?>">
<a class="right text-sm" href="<?= url('setting', ['type' => 'cover_remove']); ?>">
<?= __('app.remove'); ?>
</a>
</div>

View file

@ -18,7 +18,7 @@
<?= insert(
'/_block/form/ajax',
[
'url' => url('setting.notif.edit'),
'url' => url('setting.change', ['type' => 'notification']),
'redirect' => url('setting', ['type' => 'notifications']),
'success' => __('msg.password_changed'),
'id' => 'form#notif'

View file

@ -18,7 +18,7 @@
<?= insert(
'/_block/form/ajax',
[
'url' => url('setting.security.edit'),
'url' => url('setting.change', ['type' => 'security']),
'redirect' => url('setting', ['type' => 'security']),
'success' => __('msg.password_changed'),
'id' => 'form#security'

View file

@ -18,7 +18,7 @@
<?= insert(
'/_block/form/ajax',
[
'url' => url('setting.edit'),
'url' => url('setting.change', ['type' => 'setting']),
'redirect' => url('setting', ['type' => 'security']),
'success' => __('msg.password_changed'),
'id' => 'form#setting'

View file

@ -14,10 +14,7 @@ Route::before('Designator', [UserData::USER_FIRST_LEVEL, '>='])->getGroup();
Route::get('/search/{type}')->controller('ActionController@select')->where(['type' => '[a-z]+']);
Route::getProtect();
Route::get('/users/setting/edit')->controller('User\SettingController@edit')->name('setting.edit');
Route::get('/users/setting/avatar/edit')->controller('User\SettingController@avatarEdit')->name('setting.avatar.edit');
Route::get('/users/setting/security/edit')->controller('User\SettingController@securityEdit')->name('setting.security.edit');
Route::get('/users/setting/notification/edit')->controller('User\SettingController@notificationEdit')->name('setting.notif.edit');
Route::get('/user/edit/{type}')->controller('User\SettingController@change')->where(['type' => '[a-z]+'])->name('setting.change');
// Отправка / изменение контента
Route::get('/create/{type}')->controller('ActionController@create')->name('content.create');
Route::get('/change/{type}')->controller('ActionController@change')->name('content.change');
@ -36,7 +33,6 @@ Route::before('Designator', [UserData::USER_FIRST_LEVEL, '>='])->getGroup();
Route::get('/add/post/{topic_id}')->controller('Post\AddPostController', ['post'])->where(['topic_id' => '[0-9]+']);
Route::get('/post/img/{id}/remove')->controller('Post\EditPostController@imgPostRemove')->where(['id' => '[0-9]+']);
Route::get('/@{login}/delete/cover')->controller('User\SettingController@coverRemove')->where(['login' => '[A-Za-z0-9]+'])->name('delete.cover');
Route::get('/web/bookmarks')->module('catalog', 'App\UserArea@bookmarks')->name('web.bookmarks');
Route::get('/web/my/{page?}')->module('catalog', 'App\UserArea')->name('web.user.sites');
@ -46,7 +42,7 @@ Route::before('Designator', [UserData::USER_FIRST_LEVEL, '>='])->getGroup();
Route::get('/team/edit/{id}')->module('teams', 'App\Edit')->where(['id' => '[0-9]+'])->name('team.edit');
Route::get('/team/view/{id}')->module('teams', 'App\Teams@view')->where(['id' => '[0-9]+'])->name('team.view');
Route::get('/setting/{type?}')->controller('User\SettingController')->where(['section' => '[a-z]+'])->name('setting');
Route::get('/setting/{type?}')->controller('User\SettingController')->where(['type' => '[a-z_]+'])->name('setting');
Route::get('/messages')->controller('MessagesController')->name('messages');
Route::get('/messages/{id}')->controller('MessagesController@dialog')->where(['id' => '[0-9]+'])->name('dialogues');