gpt4 book ai didi

zend-framework - zfcuser 注册后添加用户角色

转载 作者:行者123 更新时间:2023-12-04 17:01:21 26 4
gpt4 key购买 nike

我将 Zend Framework 2 与 ZfcUser、BjyAuthorize 和 Doctrine 一起用于数据库。到目前为止,注册等工作得很好。我的问题是,注册用户没有分配角色,所以我想在注册过程中为用户添加角色“用户”。

我想我可以将它附加到“注册”事件中,但我不知道该怎么做。

我希望有一个人可以帮助我 ...

(我使用本教程设置 zfcuser 等。http://samminds.com/2013/03/zfcuser-bjyauthorize-and-doctrine-working-together/ )

public function onBootstrap(MvcEvent $e)
{
$zfcServiceEvents = $e->getApplication()->getServiceManager()->get('zfcuser_user_service')->getEventManager();
$zfcServiceEvents->attach('register', function($e) {
$user = $e->getParam('user');
// probably the role must be added here, with $user->addRole();
// but how do i get the user Role Entity to add from DB?

});

最佳答案

基于 DangelZM 的回答,并使用关于事件管理器的另一个引用(请参阅我的帖子末尾的链接),我想出了这个解决方案,它将潜在的 ZfcUser 事件监听器组织到一个用户监听器对象中。

注:我创建了自己的名为 NvUser 的用户模块,因此根据您的模块名称,您必须将 NvUser 的所有引用替换为您的用户模块名称。

概括

我创建了一个 NvUserListener 对象,它本身可以将事件监听器附加到共享事件管理器,并容纳事件监听器回调。

NvUser/Module.php 内部:

<?php
namespace NvUser;

use Zend\Mvc\MvcEvent;
use NvUser\Listener\NvUserListener;

class Module
{
public function onBootstrap(MvcEvent $mvcEvent)
{
$em = $mvcEvent->getApplication()->getEventManager();
$em->attach(new NvUserListener());
}
}

在 NvUser/src/NvUser/Listener/NvUserListener.php 内部:
<?php
namespace NvUser\Listener;

use Zend\EventManager\AbstractListenerAggregate;
use Zend\EventManager\EventManagerInterface;
use Zend\EventManager\Event;

class NvUserListener extends AbstractListenerAggregate
{
public function attach(EventManagerInterface $events)
{
$sharedManager = $events->getSharedManager();
$this->listeners[] = $sharedManager->attach('ZfcUser\Service\User', 'register', array($this, 'onRegister'));
$this->listeners[] = $sharedManager->attach('ZfcUser\Service\User', 'register.post', array($this, 'onRegisterPost'));
}

public function onRegister(Event $e)
{
$sm = $e->getTarget()->getServiceManager();
$em = $sm->get('doctrine.entitymanager.orm_default');
$user = $e->getParam('user');
$config = $sm->get('config');
$criteria = array('roleId' => $config['zfcuser']['new_user_default_role']);
$defaultUserRole = $em->getRepository('NvUser\Entity\Role')->findOneBy($criteria);

if ($defaultUserRole !== null)
{
$user->addRole($defaultUserRole);
}
}

public function onRegisterPost(Event $e)
{
$user = $e->getParam('user');
$form = $e->getParam('form');

// Do something after user has registered
}
}

NvUser/config/module.config.php 内部:
<?php
namespace NvUser;

return array(
'zfcuser' => array(
'new_user_default_role' => 'user',
),
);

引用:

Understanding the Zend Framework 2 Event Manager

关于zend-framework - zfcuser 注册后添加用户角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17596639/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com