2017-08-03 73 views
2

我真的可以使用一些帮助。phpBB 3.1+身份验证插件

背景: 我已经安装了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的社区/ viewtopic.php F = 461 &吨的例子= 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 } 

回答

0

不幸的是,文档缺少一个重要部分 - 每个扩展应该有composer.json文件,以便确定扩展名 - link

您可以参考OneAll phpBB extension查看其结构和代码。以此为例。

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

我希望这有助于。