DEV: Мелкие изменения

This commit is contained in:
Evg 2021-08-07 16:34:53 +03:00
parent 7b8ac51975
commit 2889605bd1
8 changed files with 70 additions and 95 deletions

View file

@ -64,11 +64,7 @@ class AuthController extends \MainController
$reg_ip = \Request::getRemoteAddress();
$url = $inv_code ? '/register/invite/' . $inv_code : '/register';
if ($inv_uid <= 0) {
redirect($url);
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
Base::addMsg(lang('Invalid') . ' email', 'error');
redirect($url);
@ -78,16 +74,14 @@ class AuthController extends \MainController
Base::addMsg(lang('e-mail-replay'), 'error');
redirect($url);
}
if (is_array(AuthModel::repeatIpBanRegistration($reg_ip))) {
Base::addMsg(lang('multiple-accounts'), 'error');
redirect($url);
}
Base::charset_slug($login, lang('Nickname'), '/register');
Base::Limits($login, lang('Nickname'), '3', '10', $url);
Base::Limits($password, lang('Password'), '8', '32', $url);
if (is_numeric(substr($login, 0, 1))) {
Base::addMsg(lang('nickname-no-start'), 'error');
@ -95,13 +89,13 @@ class AuthController extends \MainController
}
for ($i = 0, $l = Base::getStrlen($login); $i < $l; $i++) {
if (self::textCount($login, Base::getStrlen($login, $i, 1)) > 4) {
if (Base::textCount($login, Base::getStrlen($login, $i, 1)) > 4) {
Base::addMsg(lang('nickname-repeats-characters'), 'error');
redirect($url);
}
}
// Запретим
// Запретим, хотя лучшая практика занять нужные (пр. GitHub)
$disabled = ['admin', 'support', 'lori', 'loriup', 'dev', 'docs', 'meta', 'email', 'mail', 'login'];
if (in_array($login, $disabled)) {
Base::addMsg(lang('nickname-replay'), 'error');
@ -113,11 +107,12 @@ class AuthController extends \MainController
redirect($url);
}
Base::Limits($password, lang('Password'), '8', '32', $url);
if (substr_count($password, ' ') > 0) {
Base::addMsg(lang('password-spaces'), 'error');
redirect($url);
}
if (!$inv_code) {
if (Config::get(Config::PARAM_CAPTCHA)) {
if (!Base::checkCaptchaCode()) {
@ -125,33 +120,29 @@ class AuthController extends \MainController
redirect('/register');
}
}
// Кто пригласил (нам нужны будут данные в таблице users)
$invitation_id = 0;
} else {
$invitation_id = $inv_uid;
// Если хакинг формы
$inv_uid = 0;
}
// id участника
$active_uid = UserModel::createUser($login, $email, $password, $reg_ip, $invitation_id);
// id участника после регистрации
$active_uid = UserModel::createUser($login, $email, $password, $reg_ip, $inv_uid);
if ($invitation_id > 0) {
// Если регистрация по инвайту, то записываем данные
UserModel::sendInvitationEmail($inv_code, $invitation_id, $reg_ip, $active_uid);
if ($inv_uid > 0) {
// Если регистрация по инвайту, активируем емайл
UserModel::sendInvitationEmail($inv_code, $inv_uid, $reg_ip, $active_uid);
Base::addMsg(lang('Successfully, log in'), 'success');
redirect('/login');
} else {
// Активация e-mail
// Если будет раскомм. то в методе createUser изм. $activated с 1 на 0
// $active_uid - id участника
$email_code = Base::randomString('crypto', 20);
UserModel::sendActivateEmail($active_uid, $email_code);
// Добавим текс письма тут
$newpass_link = 'https://' . HLEB_MAIN_DOMAIN . '/email/avtivate/' . $email_code;
$mail_message = "Activate E-mail: \n" . $newpass_link . "\n\n";
Base::mailText($email, Config::get(Config::PARAM_NAME) . ' - email', $mail_message);
}
}
// Активация e-mail
$email_code = Base::randomString('crypto', 20);
UserModel::sendActivateEmail($active_uid, $email_code);
// Добавим текс письма тут
$newpass_link = 'https://' . HLEB_MAIN_DOMAIN . '/email/avtivate/' . $email_code;
$mail_message = "Activate E-mail: \n" . $newpass_link . "\n\n";
Base::mailText($email, Config::get(Config::PARAM_NAME) . ' - email', $mail_message);
Base::addMsg(lang('Check your e-mail to activate your account'), 'success');
redirect('/login');
@ -207,42 +198,35 @@ class AuthController extends \MainController
if (!password_verify($password, $uInfo['password'])) {
Base::addMsg(lang('E-mail or password is not correct'), 'error');
redirect($url);
} else {
}
// Если нажал "Запомнить"
// Устанавливает сеанс пользователя и регистрирует его
if ($rememberMe == 1) {
self::rememberMe($uInfo['id']);
}
$data = [
'user_id' => $uInfo['id'],
'login' => $uInfo['login'],
'email' => $uInfo['email'],
'name' => $uInfo['name'],
'login' => $uInfo['login'],
'avatar' => $uInfo['avatar'],
'trust_level' => $uInfo['trust_level'],
];
$last_ip = Request::getRemoteAddress();
UserModel::setUserLastLogs($uInfo['id'], $uInfo['login'], $uInfo['trust_level'], $last_ip);
$_SESSION['account'] = $data;
redirect('/');
// Если нажал "Запомнить"
// Устанавливает сеанс пользователя и регистрирует его
if ($rememberMe == 1) {
self::rememberMe($uInfo['id']);
}
$data = [
'user_id' => $uInfo['id'],
'login' => $uInfo['login'],
'email' => $uInfo['email'],
'name' => $uInfo['name'],
'login' => $uInfo['login'],
'avatar' => $uInfo['avatar'],
'trust_level' => $uInfo['trust_level'],
];
$last_ip = Request::getRemoteAddress();
UserModel::setUserLastLogs($uInfo['id'], $uInfo['login'], $uInfo['trust_level'], $last_ip);
$_SESSION['account'] = $data;
redirect('/');
}
////// ЗАПОМНИТЬ МЕНЯ
////// Работа с токенами и куки
// ЗАПОМНИТЬ МЕНЯ
public static function rememberMe($user_id)
{
// НАСТРОЕМ НАШ СЕЛЕКТОР, ВАЛИДАТОР И СРОК ДЕЙСТВИЯ
// Селектор действует как уникальный идентификатор, поэтому нам не нужно
// сохранять идентификатор пользователя в нашем файле cookie
// валидатор сохраняется в виде обычного текста в файле cookie, но хэшируется в бд
// если селектор (id) найден в таблице auth_tokens, мы затем сопоставляем валидаторы
$rememberMeExpire = 30;
$selector = Base::randomString('crypto', 12);
$validator = Base::randomString('crypto', 20);
@ -260,11 +244,6 @@ class AuthController extends \MainController
];
// ПРОВЕРИМ, ЕСТЬ ЛИ У ИДЕНТИФИКАТОРА ПОЛЬЗОВАТЕЛЯ УЖЕ НАБОР ТОКЕНОВ
// Мы действительно не хотим иметь несколько токенов и селекторов для
// одного и того же идентификатора пользователя. В этом нет необходимости,
// так как валидатор обновляется при каждом входе в систему
// поэтому проверим, есть ли уже маркер, и перепишем, если он есть.
// Следует немного снизить уровень обслуживания БД и устранить необходимость в спорадических чистках.
$result = AuthModel::getAuthTokenByUserId($user_id);
// Записываем
@ -415,9 +394,4 @@ class AuthController extends \MainController
redirect('/login');
}
// Вхождение подстроки
private function textCount($str, $needle)
{
return mb_substr_count($str, $needle, 'utf-8');
}
}

View file

@ -34,11 +34,11 @@ class HomeController extends \MainController
$result[$ind] = $row;
}
$result_comm = array();
$result_answers = array();
foreach ($latest_answers as $ind => $row) {
$row['answer_content'] = Base::cutWords($row['answer_content'], 81);
$row['answer_date'] = lang_date($row['answer_date']);
$result_comm[$ind] = $row;
$result_answers[$ind] = $row;
}
$num = '';
@ -61,7 +61,6 @@ class HomeController extends \MainController
}
$data = [
'latest_answers' => $result_comm,
'pagesCount' => ceil($pagesCount / $limit),
'pNum' => $page,
'sheet' => $sheet,
@ -69,8 +68,10 @@ class HomeController extends \MainController
'img' => Config::get(Config::PARAM_URL) . '/assets/images/areadev.webp',
'meta_title' => $meta_title,
'meta_desc' => $meta_desc,
'latest_answers' => $result_answers,
'space_user' => $space_user,
];
return view(PR_VIEW_DIR . '/home', ['data' => $data, 'uid' => $uid, 'posts' => $result, 'space_user' => $space_user]);
return view(PR_VIEW_DIR . '/home', ['data' => $data, 'uid' => $uid, 'posts' => $result]);
}
}

View file

@ -45,11 +45,9 @@ class AddPostController extends \MainController
$uid = Base::getUid();
$post_ip_int = \Request::getRemoteAddress();
// Получаем id пространства
$space_id = \Request::getPostInt('space_id');
// Получаем информацию по пространству
$space = SpaceModel::getSpace($space_id, 'id');
$space_id = \Request::getPostInt('space_id');
$space = SpaceModel::getSpace($space_id, 'id');
if (!$space) {
Base::addMsg(lang('Select space'), 'error');
redirect($redirect);
@ -184,7 +182,6 @@ class AddPostController extends \MainController
// Уведомление (@login)
if ($message = Content::parseUser($post_content, true, true)) {
foreach ($message as $user_id) {
// Запретим отправку себе
if ($user_id == $post_user_id) {
@ -279,7 +276,6 @@ class AddPostController extends \MainController
// Проверка доступа
$info_type = ActionModel::getInfoTypeContent($type_id, $type);
if (!accessСheck($info_type, $type, $uid, 1, 30)) {
redirect('/');
}
@ -291,11 +287,10 @@ class AddPostController extends \MainController
$status = 'restored-' . $type;
}
$info_post_id = $info_type[$type . '_post_id'];
if ($type == 'post') {
$info_post_id = $info_type[$type . '_id'];
} else {
$info_post_id = $info_type[$type . '_post_id'];
}
}
$data = [
'user_id' => $uid['id'],
@ -315,12 +310,12 @@ class AddPostController extends \MainController
// Журнал логирования удалений / восстановлений контента
public function moderation()
{
$moderations_log = ActionModel::getModerations();
$moderations_log = ActionModel::getModerations();
$result = array();
foreach ($moderations_log as $ind => $row) {
$row['mod_created_at'] = lang_date($row['mod_created_at']);
$result[$ind] = $row;
$result[$ind] = $row;
}
$uid = Base::getUid();

View file

@ -81,4 +81,5 @@ class WebController extends \MainController
return view(PR_VIEW_DIR . '/web/link', ['data' => $data, 'uid' => $uid, 'posts' => $result, 'domains' => $domains, 'link' => $link]);
}
}

View file

@ -79,13 +79,11 @@ class Base
$token = AuthModel::getAuthTokenBySelector($selector);
if (empty($token)) {
return false;
}
// Хэш не соответствует
if (!hash_equals($token['auth_hashedvalidator'], $validator)) {
return false;
}
@ -94,7 +92,6 @@ class Base
// Нет пользователя
if (empty($user)) {
return false;
}
@ -118,7 +115,6 @@ class Base
// Сессия участника
self::setUserSession($user);
self::rememberMeReset($token['auth_user_id'], $selector);
redirect('/');
return true;
@ -211,6 +207,12 @@ class Base
$_SESSION['msg'][] = array($msg, $class);
}
// Вхождение подстроки
public static function textCount($str, $needle)
{
return mb_substr_count($str, $needle, 'utf-8');
}
// Длина строки
public static function getStrlen($str)
{

View file

@ -63,7 +63,7 @@
<?php } ?>
</ul>
<?php if ($uid['uri'] == '/' && $uid['id'] > 0 && empty($space_user)) { ?>
<?php if ($uid['uri'] == '/' && $uid['id'] > 0 && empty($data['space_user'])) { ?>
<div class="white-box">
<div class="pt5 pr15 pb5 pl15 big center gray">
<i class="light-icon-bulb middle red"></i>
@ -79,14 +79,14 @@
</main>
<aside>
<?php if ($uid['id']) { ?>
<?php if (!empty($space_user)) { ?>
<?php if (!empty($data['space_user'])) { ?>
<div class="white-box">
<div class="pt5 pr15 pb5 pl15">
<a class="right" title="<?= lang('Spaces'); ?>" href="/spaces"><i class="light-icon-chevron-right"></i></a>
<div class="bar-title size-13">
<?= lang('Signed'); ?>
</div>
<?php foreach ($space_user as $sig) { ?>
<?php foreach ($data['space_user'] as $sig) { ?>
<a class="bar-space-telo" href="/s/<?= $sig['space_slug']; ?>" title="<?= $sig['space_name']; ?>">
<?= spase_logo_img($sig['space_img'], 'small', $sig['space_name'], 'ava-24'); ?>
<span class="mr5 ml5 size-13"><?= $sig['space_name']; ?></span>

View file

@ -203,6 +203,8 @@
<input type="submit" name="answit" value="<?= lang('Reply'); ?>" class="button" disabled="disabled">
</div>
<?php } ?>
<?php } else { ?>
<br>
<?php } ?>
</div>
</div>

View file

@ -16,7 +16,7 @@
<?php foreach ($links as $key => $link) { ?>
<div class="white-box">
<a href="/domain/<?= $link['link_url_domain']; ?>">
<h2 class="title size-21 ml15">
<h2 class="title size-21 pt15 ml15 mb0">
<?php if ($link['link_title']) { ?>
<?= $link['link_title']; ?>
<?php } else { ?>