Fatal error: Uncaught exception 'Zend\Permissions\Rbac\Exception\InvalidArgumentException' with message 'Expected string or implement \Zend\Permissions\Rbac\RoleInterface' in [...]/vendor/zendframework/zendframework/library/Zend/Permissions/Rbac/Rbac.php on line 106
[...]
foreach((array) $this->getIdentity()->getRoles() as $userRole) {
[...]
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="users")
*
* @property string $name
* @property string $email
* @property int $id
*/
class User extends AbstractEntity implements \ZfcRbac\Identity\IdentityInterface {
/**
* @ORM\Id
* @ORM\Column(type="integer");
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string");
*
* @var string
*/
protected $name;
/**
* @ORM\Column(type="string",length=50,unique=true);
*
* @var string
*/
protected $username;
/**
* @ORM\Column(type="string",length=100,nullable=true);
*
* @var string
*/
protected $password;
/**
*
* @todo comment
*
* @ORM\ManyToMany(targetEntity="\FworkAdmin\Entity\Role")
* @var array:string
*/
protected $roles;
public function isPlainPassword($plainPassword) {
return $plainPassword == $this->getPassword();
}
/* (non-PHPdoc)
* @see \ZfcRbac\Identity\IdentityInterface::getRoles()
*/
public function getRoles() {
return $this->roles;
}
}
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="roles")
*/
class Role extends \Application\Entity\AbstractEntity implements
\Zend\Permissions\Rbac\RoleInterface
{
/**
* @ORM\Id
* @ORM\Column(type="integer");
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string",length=100,unique=true);
*
* @var string
*/
protected $name;
/**
* @ORM\ManyToOne(targetEntity="Role")
* @ORM\JoinColumn(name="parent_role_id", referencedColumnName="id")
*
* @var int
*/
protected $parent_role;
/**
* @ORM\ManyToMany(targetEntity="Permission")
*/
protected $permissions;
/**
* Get the name of the role.
*
* @return string
*/
public function getName() {
return $this->name;
}
/**
* Add permission to the role.
*
* @param
* $name
* @return RoleInterface
*/
public function addPermission($name) {
}
/**
* Checks if a permission exists for this role or any child roles.
*
* @param string $name
* @return bool
*/
public function hasPermission($name) {
}
/**
* @param RoleInterface|string $child
* @return Role
*/
public function addChild($child) {
}
/**
* @param RoleInterface $parent
* @return RoleInterface
*/
public function setParent($parent) {
$this->parent_role = $parent;
}
/**
* @return RoleInterface
*/
public function getParent() {
return $this->parent_role;
}
}
return array(
'zfcrbac' => array(
'firewallRoute' => true,
'firewallController' => true,
'firewalls' => array(
'ZfcRbac\Firewall\Controller' => array(
array(
'controller' => 'index',
'actions' => 'index',
'roles' => 'guest'
)
),
'ZfcRbac\Firewall\Route' => array(
array(
'route' => 'admin/*',
'roles' => 'admin'
),
array(
'route' => 'setup/*',
'roles' => 'admin'
)
)
),
'providers' => array(
'ZfcRbac\Provider\AdjacencyList\Role\DoctrineDbal' => array(
'connection' => 'doctrine.connection.orm_default',
'options' => array(
'table' => 'roles',
'id_column' => 'id',
'name_column' => 'name',
'join_column' => 'parent_role_id'
)
),
'ZfcRbac\Provider\Generic\Permission\DoctrineDbal' => array(
'connection' => 'doctrine.connection.orm_default',
'options' => array(
'permission_table' => 'permissions',
'role_table' => 'roles',
'role_join_table' => 'role_permission',
'permission_id_column' => 'id',
'permission_join_column' => 'permission_id',
'role_id_column' => 'id',
'role_join_column' => 'role_id',
'permission_name_column' => 'name',
'role_name_column' => 'name'
)
)
)
),
'service_manager' => array(
'factories' => array(
'ZfcRbac\Firewall\Listener\Route' => '',
'standard_identity' => function ($sm)
{
$roles = array('guest','member','admin');
$identity = new \ZfcRbac\Identity\StandardIdentity($roles);
return $identity;
}
)
)
);
There are entries in user table and role table ('admin','guest','member'). The user has a role 'admin'