Добрый день, есть метод для регистрации пользователя на форуме при активации его аккаунта на сайте.
Вопрос состоит в концепции: дело в том, что при регистрации на сайте в базу заносится хеш пароля, что не даёт возможности отправить исходный его исходный вариант как аргумент в дальнейшем. Приходится напрямую запросом менять его в базе.
Корректен ли такой вариант? Или есть способ отменить хеширование при регистрации, чтобы можно было просто свой хеш внести? Или, может быть, было бы лучше создать отдельную группу для неактивированных пользователей (только хотелось бы, чтобы у такой группы не было права на авторизацию)?
Конечно, было бы хорошо регистрацию выполнить только посредством REST API без дополнительного вмешательства в базу.
Спасибо.
Вопрос состоит в концепции: дело в том, что при регистрации на сайте в базу заносится хеш пароля, что не даёт возможности отправить исходный его исходный вариант как аргумент в дальнейшем. Приходится напрямую запросом менять его в базе.
Корректен ли такой вариант? Или есть способ отменить хеширование при регистрации, чтобы можно было просто свой хеш внести? Или, может быть, было бы лучше создать отдельную группу для неактивированных пользователей (только хотелось бы, чтобы у такой группы не было права на авторизацию)?
Конечно, было бы хорошо регистрацию выполнить только посредством REST API без дополнительного вмешательства в базу.
Спасибо.
PHP:
private static function forumRegister($data, $dbConnect) {
require_once "{$_SERVER['DOCUMENT_ROOT']}/forum/src/vendor/autoload.php";
$answer = ['status' => true, 'user_id' => null];
try {
$client = new XenForoUser();
$result = $client->post('caelestis/forum/api/users', [
'headers' => [
'XF-Api-Key' => 'ключ',
'XF-Api-User' => '1'
],
'form_params' => [
'username' => $data['username'],
'password' => 'временный пароль',
'email' => $data['email']
]
]);
$forumUser = json_decode($result->getBody(), true);
$dbConnect->query('UPDATE `xf_user_authenticate` SET `data` = "a:1:{s:4:\"hash\";s:60:\"' . $data['password'] . '\";}" WHERE `user_id` = ' . $forumUser['user']['user_id']);
$answer['user_id'] = $forumUser['user']['user_id'];
} catch (XenForoUserException | PDOException $ex) {
$answer['status'] = false;
//echo $ex->getMessage();
}
return $answer;
}
Последнее редактирование: