PHPBB 3.1.10用户对象的依赖注入仅在实时环境中提供匿名用户

时间:2017-01-10 07:27:20

标签: ajax symfony dependency-injection phpbb3 php-5.6

目标是仅使用 AJAX 调用,在扩展程序模块中以 PHPBB 3.1.10 获取用户的登录状态。< / p>

我在本地机器上的XAMPP上已经成功了。 (意味着在该环境中不存在所描述的问题)我现在正试图通过在实时PHPBB安装上安装扩展来将其推广到我的在线站点。

  

现在的问题是,与我的本地环境相反,@ user   由依赖注入机制传递的对象总是如此   “匿名”,无论我是否登录。

“匿名”是未登录的PHPBB用户的用户名。

  • 两个环境都使用PHPBB 3.1.10。
  • 文件夹结构仅在PHPBB3根文件夹名称的名称中有所不同。
  • 在我必须手动设置之后,两者都具有正常运行的URL Rewrite .htaccess中的Live Environments RewriteBase。
  • 董事会设置似乎相同,但对于域名。

对于PHP服务器设置 - 我对实时环境中的PHP配置没有直接影响,但对于.htaccess而言,我对这方面的可能性知之甚少。

这是我的服务定义,路由信息和用于读取@user对象的授权类。

  

转/富/酒吧/ services.yml

services:
    foo.bar.helper.auth:
        class: foo\bar\helper\Auth
        arguments:
            - '@user'
            - '%core.root_path%'
            - '%core.php_ext%'
  

转/富/酒吧/配置/ routing.yml中

foo_bar_getUserStatus:
    path: /getUserStatus
    defaults: { _controller: foo.bar.helper.Auth:getUserStatus }
  

转/富/酒吧/辅助/ Auth.php

<?php

namespace foo\bar\helper;

class Auth{

    /* @var \phpbb\user */
    protected $user;

    /** @var string */
    protected $root_path;

    /** @var string */
    protected $php_ext;

    /**
     * Constructor
     *
     * @param \phpbb\user  $user
     * @param string       $root_path
     * @param string       $php_ext php ext
     * @access public
     */
    public function __construct(
        \phpbb\user $user,
        $root_path, 
        $php_ext)
    {
        $this->user      = $user;
        $this->root_path = $root_path;
        $this->php_ext   = $php_ext;

        include_once($this->root_path 
        . 'includes/functions_user.' 
        . $this->php_ext);
    }

    // AUTHORIZATION
    public function __getUserStatus(){
        $userStatus = array( 'isLoggedIn' => false );

        if ($this->user->data['is_registered'] && ! $user->data['is_bot']){

            $userStatus['isLoggedIn'] = true;

            $ADMINS_GROUP_ID = '5';

            if(group_memberships($ADMINS_GROUP_ID, $this->user->data['user_id'], true)){
                $userStatus['isAdmin'] = true;
            }
        }
        return $userStatus;
    }

    public function getUserStatus(){
        return new \Symfony\Component\HttpFoundation\JsonResponse(array(
            'success' => $this->__getUserStatus()
        ));
    }
}
  

更新11.01.17

我已经设法让扩展能够在PHPBB 3.2(最近发布)和PHP 7.0的全新安装上正常运行。 (在与活动服务器环境相同的服务器环境中运行)

我仍然不知道为什么没有正确设置用户对象。 我还没有检查是否可以将数据从PHPBB 3.1.10迁移到PHPBB 3.2的全新安装。

我需要一些时间来解决问题,因为我没有全职工作。

0 个答案:

没有答案