Аторизация через никнейм

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X
#1 24 ноября 2017 в 15:21
Как реализовать авторизацию через никнейм, а не через почту. Насколько помню давно вопрос поднимался, но никто не реализовал?
Через почту очень не удобно. Может есть компонент?
#3 24 ноября 2017 в 15:26
Было у кого то. Сам пользовался. Это хак авторизация с помощью никнейма. Вот только его удалили с сайта а архив сам потерял.
А так интересное решение авторизация с помощью никнейма или почты. Вот только Ников может быть несколько одинаковых…
#4 24 ноября 2017 в 15:28
А вот и ОНО! Ris, Спасибо! Вспомнил…
#5 24 ноября 2017 в 21:13
Ris, Да, но ведь затрагиваются системные файлы и при обновлении все пропадет
#6 24 ноября 2017 в 21:31

Да, но ведь затрагиваются системные файлы и при обновлении все пропадет

Capitan
У меня на сайте сделано хуком. Могу выложить хук с инструкцией.
Но системный файл все равно придется править. Чтобы закомментировать проверку на мыльность. sad
#7 24 ноября 2017 в 22:14
Ris, Да, пожалуйста, Нам "чайникам" не всегда легко даются всякие изменения в ПХП поэтому без инструкции ни как. Заранее спасибо.
#8 26 ноября 2017 в 20:33
И так пот что нужно сделать для авторизации по нику. все работает :)
Вот тема:
instantcms.ru/forum/thread21606-1.html
Файл изменяем. строчка 235
\system\core\user.php

/**
* Авторизует пользователя
* @param string $email
* @param string $password
* @param bool $remember
* @return int
*/
public static function login($email, $password, $remember=false) {

if (!preg_match("/^([a-z0-9\._-]+)@([a-z0-9\._-]+)\.([a-z]{2,6})$/i", $email)){
return 0;
}

$model = cmsCore::getModel('users');

$model->filterIsNull('is_deleted');
$model->filterEqual('email', $email);
$model->filterFunc('password', "MD5(CONCAT(MD5('{$password}'), i.password_salt))");

$user = $model->getUser();

if(!$user) {
$user = cmsEventsManager::hook('user_auth_error', array('email'=>$email,'password'=>$password));
}

if (empty($user['id'])) { return 0; }

$user = cmsEventsManager::hook('user_login', $user);

self::setUserSession($user);

if ($remember){

$auth_token = string_random(32, $email);
self::setCookie('auth', $auth_token, AUTH_TOKEN_EXPIRATION_INT); //100 дней
$model->setAuthToken($user['id'], $auth_token);
$model->deleteExpiredToken($user['id'], AUTH_TOKEN_EXPIRATION_INT);

self::$auth_token = $auth_token;

}

$model->update('cms_users', $user['id'], array(
'ip' => self::getIp()
), true);

return $user['id'];

}

Изменяем файл виджет авторизация
/templates/default/widgets/auth

строчка
<label><?php echo LANG_EMAIL; ?>:</label>
Заменить на:
<label><?php echo LANG_NICKNAME; ?>:</label>

изменяем файл виджета
/templates/default/controllers/auth/login.tpl.php
строчка
<div class="label"><label><?php echo LANG_EMAIL; ?>:</label></div>
заменить на
<div class="label"><label><?php echo NICKNAME; ?>:</label></div>

При обновлении системы повторить операцию. Надеюсь это кому-то пригодиться.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.