2017-08-03 12 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/

下の両方のファイルの内容のコピー。

ドキュメントによると、Access Control Panel(ACP)の認証部分の認証方法のリストにdb2が表示されるはずですが、何も表示されません。私はフォーラムのキャッシュをフラッシュし、ブラウザのキャッシュなどを無駄にしました。

何か不足していますか?どんな助けも本当に感謝しています。

ケビン

これはdb2.phpファイルの内容です:

# :これはservices.ymlファイルの内容である

<?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: 
    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)の[認証]セクションに表示されます。

これが役立ちます。

関連する問題