DEV: Мелкие изменения
This commit is contained in:
parent
7b8ac51975
commit
2889605bd1
8 changed files with 70 additions and 95 deletions
|
@ -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');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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]);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -203,6 +203,8 @@
|
|||
<input type="submit" name="answit" value="<?= lang('Reply'); ?>" class="button" disabled="disabled">
|
||||
</div>
|
||||
<?php } ?>
|
||||
<?php } else { ?>
|
||||
<br>
|
||||
<?php } ?>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -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 { ?>
|
||||
|
|
Loading…
Reference in a new issue