【问题标题】:phpBB 3.1+ Authentication PluginphpBB 3.1+ 认证插件
【发布时间】:2017-08-12 20:56:33
【问题描述】:

我真的需要一些帮助。

背景: 我已经安装了 phpBB 3.0 并从我自己的站点的数据库中进行了外部身份验证。我的工作是对这个出色的工作示例的实现:https://github.com/nzeyimana/PhpBBAuthDbExt/blob/master/auth_dbext.php 我现在想将我的论坛升级到 3.2(当前版本)。

问题: 尝试遵循文档https://area51.phpbb.com/docs/dev/32x/extensions/tutorial_authentication.html#authentication-providers 以及 phpBB community/viewtopic.php?f=461&t=2272371 中的示例

我从示例文档中复制了类文件,将其命名为 db2.php 并放在“ext/acme/demo/auth/provider/”中 我还从示例文档中复制了服务文件,将其命名为 services.yml 并放在“ext/acme/demo/config/”中

两个文件内容的副本在下方。

根据文档,我应该在访问控制面板 (ACP) 的身份验证部分的身份验证方法列表中看到 db2 - 但什么也没有出现。我已经刷新了论坛缓存,刷新了我的浏览器缓存等,但无济于事。

我错过了什么吗?任何帮助真的很感激。

凯文

这是 db2.php 文件的内容:

#
<?php

namespace acme\demo\auth\provider;

/**
 * Database authentication provider for phpBB3
 *
 * This is for authentication via the integrated user table
 */
class db2 extends \phpbb\auth\provider\base
{
    /** @var \phpbb\db\driver\driver_interface $db */
    protected $db;

    /**
     * Database Authentication Constructor
     *
     * @param \phpbb\db\driver\driver_interface $db
     */
    public function __construct(\phpbb\db\driver\driver_interface $db)
    {
        $this->db = $db;
    }

    /**
     * {@inheritdoc}
     */
    public function login($username, $password)
    {
        // Auth plugins get the password untrimmed.
        // For compatibility we trim() here.
        $password = trim($password);

        // do not allow empty password
        if (!$password)
        {
            return array(
                'status'    => LOGIN_ERROR_PASSWORD,
                'error_msg' => 'NO_PASSWORD_SUPPLIED',
                'user_row'  => array('user_id' => ANONYMOUS),
            );
        }

        if (!$username)
        {
            return array(
                'status'    => LOGIN_ERROR_USERNAME,
                'error_msg' => 'LOGIN_ERROR_USERNAME',
                'user_row'  => array('user_id' => ANONYMOUS),
            );
        }

        $username_clean = utf8_clean_string($username);

        $sql = 'SELECT user_id, username, user_password, user_passchg, user_pass_convert, user_email, user_type, user_login_attempts
            FROM ' . USERS_TABLE . "
            WHERE username_clean = '" . $this->db->sql_escape($username_clean) . "'";
        $result = $this->db->sql_query($sql);
        $row = $this->db->sql_fetchrow($result);
        $this->db->sql_freeresult($result);

        // Successful login... set user_login_attempts to zero...
        return array(
            'status'    => LOGIN_SUCCESS,
            'error_msg' => false,
            'user_row'  => $row,
        );
    }
}
#

这是 services.yml 文件的内容:

#
services:
    auth.provider.db2:
        class: acme\demo\auth\provider\db2
        arguments:
            - '@dbal.conn'
        tags:
            - { name: auth.provider }
#

【问题讨论】:

    标签: authentication phpbb3


    【解决方案1】:

    不幸的是,文档缺少一个重要部分 - 每个扩展都应该有其 composer.json 文件以识别扩展 - link

    你可以参考OneAll phpBB extension查看它的结构和代码。以它为例。

    一旦你有了 composer.json,你应该会在扩展管理列表中看到你的扩展。然后启用您的扩展程序,您应该会在访问控制面板 (ACP) 的身份验证部分看到它

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-09
      • 2021-05-02
      • 2010-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多