XF 2.2 Авторизация через PHP скрипт

Версия XenForo
2.2.7

MaDestro

Участники
Сообщения
4
Реакции
3
Баллы
700
Приветствую, нужна помощь с написанием скрипта проверки авторизации...
Я недавно начал работать с XenForo...
В общем нашел один скрипт у вас на форуме...
PHP:
<?php

$dir = DIR;
require($dir . '/src/XF.php');

XF::start($dir);
$app = XF::app();
/**
 * @var \XF\Entity\User $user
 */
$user = $app->repository('XF:User')->setupBaseUser();

$user->username = "ttt1";
$user->email = "[email protected]";
$user->Auth->setPassword("asdPassw");
$user->save();

Но есть проблема... Это скрипт создания нового пользователя а мне нужна авторизация.

по типу в оконцовке:

Код:
<?php
*---часть скрипта---*

if(Auth($login, $password))
{
//script
}

Если не сложно помогите... Код пишу под проверку авторизации для своего клиента.
Решили с прыгнуть с ДЛЕ на ксенфоро и метод писать по новой.
На ДЛЕ я использовал следующий код:
PHP:
<?php
//header("Content-Type: text/plain; charset=UTF-8");
include('engine/api/api.class.php');

//Входящие параметры
$login = $_GET['login'];
$password = $_GET['password'];

if(empty($login) || empty($password)) {
    die("Неверный логин или пароль");
}
$auth_result = $dle_api->external_auth($login, $password);

if($auth_result){
    $name_result = $dle_api->take_user_by_name($login, name);
    echo("OK:" . $name_result['name']);
}else{
    echo("Неверный логин или пароль");
}
?>

Не обращайте внимания на КОСТЫЛЬНОСТЬ кода так как скрипты делал без особых заморочек для тестов.
Помогите найти такое-же простое и функциональное решение. Спасибо.
 
Решение
PHP:
<?php

$dir = __DIR__;
require($dir . '/src/XF.php');

XF::start($dir);
XF::setupApp('XF\Pub\App');

$user = XF::repository('XF:User')
    ->getUserByNameOrEmail('Username');
if ($user && $user->Auth->authenticate('p@s$w0rd'))
{
    echo 'Auth success';
}
else
{
    echo 'Auth failed';
}
PHP:
<?php

$dir = __DIR__;
require($dir . '/src/XF.php');

XF::start($dir);
XF::setupApp('XF\Pub\App');

$user = XF::repository('XF:User')
    ->getUserByNameOrEmail('Username');
if ($user && $user->Auth->authenticate('p@s$w0rd'))
{
    echo 'Auth success';
}
else
{
    echo 'Auth failed';
}
 
PHP:
<?php

$dir = __DIR__;
require($dir . '/src/XF.php');

XF::start($dir);
XF::setupApp('XF\Pub\App');

$user = XF::repository('XF:User')
    ->getUserByNameOrEmail('Username');
if ($user && $user->Auth->authenticate('p@s$w0rd'))
{
    echo 'Auth success';
}
else
{
    echo 'Auth failed';
}
Огромное спасибо!
Будьте добры объясните пожалуйста как еще вернуть ответом аватар пользователя ?
 
MaDestro, если нужна ссылка на аватар, то так:
PHP:
$user->getAvatarUrl($avatarSize);
$avatarSize — размер аватара.
Код:
$container['avatarSizeMap'] = [
    'o' => 384,
    'h' => 384,
    'l' => 192,
    'm' => 96,
    's' => 48
];
 
MaDestro, если нужна ссылка на аватар, то так:
PHP:
$user->getAvatarUrl($avatarSize);
$avatarSize — размер аватара.
Код:
$container['avatarSizeMap'] = [
    'o' => 384,
    'h' => 384,
    'l' => 192,
    'm' => 96,
    's' => 48
];

не пойму как оформить это, прости, я мало работал с php, проект для меня в новинку только учусь.
PHP:
// <?php
// $fileDir = $_SERVER['DOCUMENT_ROOT'];
// require($fileDir . '/src/XF.php');
// XF::start($fileDir);
// $app = \XF::setupApp('XF\App');
// $username = $_GET['username'];
// $password = $_GET['password'];
// $ip = $_GET['ipaddress'];
// $loginService = $app->service('XF:User\Login', $username, $ip);

// $userValidate = $loginService->validate($password, $error);

// echo($userValidate);
// ?>

<?php
$username = $_GET['username'];
$password = $_GET['password'];

$dir = __DIR__;
require($dir . '/src/XF.php');

XF::start($dir);
XF::setupApp('XF\Pub\App');

$user = XF::repository('XF:User')->getUserByNameOrEmail($username);

$container['avatarSizeMap'] = [
    'o' => 384,
    'h' => 384,
    'l' => 192,
    'm' => 96,
    's' => 48
];

if ($user && $user->Auth->authenticate($password))
{
    echo 'OK:';
    echo $user->getAvatarType(192);
}
else
{
    echo 'error:';
}

скрипт выдает OK:custom
 
$container['avatarSizeMap'] = [ 'o' => 384, 'h' => 384, 'l' => 192, 'm' => 96, 's' => 48 ];
Это не нужно. Я взял это из движка, чтобы показать, какие размеры у аватара могут быть.
Этот метод вернет тип аватара: default, если аватар не установлен и используется аватар по умолчанию, custom, если аватар установлен и gravatar, если используется Gravatar.

Как я сказал в прошлом сообщении, ссылку на аватар можно получить через метод getAvatarUrl, первым параметром передав код размера. Например, l, чтобы получить ссылку на аватар размером 192×192.
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу