Skip to content
This repository has been archived by the owner on May 14, 2018. It is now read-only.

Commit

Permalink
Merge ff5ceaa into 1cb9a02
Browse files Browse the repository at this point in the history
  • Loading branch information
jeffery committed Oct 6, 2013
2 parents 1cb9a02 + ff5ceaa commit cb3a486
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 9 deletions.
52 changes: 43 additions & 9 deletions src/BjyAuthorize/Provider/Identity/ZfcUserZendDb.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,6 @@ class ZfcUserZendDb implements ProviderInterface
*/
protected $defaultRole;

/**
* @var string
*/
protected $tableName = 'user_role_linker';

/**
* @var \Zend\Db\TableGateway\TableGateway
*/
Expand All @@ -62,12 +57,12 @@ public function getIdentityRoles()
return array($this->getDefaultRole());
}

list($tableName, $identifierFieldName) = $this->getRoleProviderTableMeta($this->userService->getServiceManager()->get('BjyAuthorize\Config'));

// get roles associated with the logged in user
$sql = new Select();

$sql->from($this->tableName);
// @todo these fields should eventually be configurable
$sql->join('user_role', 'user_role.id = ' . $this->tableName . '.role_id');
$sql->from($this->tableGateway->getTable());
$sql->join($tableName, $tableName . '.' . $identifierFieldName . ' = ' . $this->tableGateway->getTable() . '.role_id');
$sql->where(array('user_id' => $authService->getIdentity()->getId()));

$results = $this->tableGateway->selectWith($sql);
Expand All @@ -81,6 +76,45 @@ public function getIdentityRoles()
return $roles;
}

/**
* @param $config
* @return array
*/
public function getRoleProviderTableMeta($config)
{
return array($this->getUserRoleTableName($config), $this->getUserRoleIdentifierFieldName($config));
}

/**
* @param $config
* @return string
*/
private function getUserRoleTableName($config)
{
$tableName = 'user_role';
if (isset($config['role_providers']['BjyAuthorize\Provider\Role\ZendDb']) &&
isset($config['role_providers']['BjyAuthorize\Provider\Role\ZendDb']['table'])) {
$tableName = $config['role_providers']['BjyAuthorize\Provider\Role\ZendDb']['table'];
}

return $tableName;
}

/**
* @param $config
* @return string
*/
private function getUserRoleIdentifierFieldName($config)
{
$identifierFieldName = 'id';
if (isset($config['role_providers']['BjyAuthorize\Provider\Role\ZendDb']) &&
isset($config['role_providers']['BjyAuthorize\Provider\Role\ZendDb']['identifier_field_name'])) {
$identifierFieldName = $config['role_providers']['BjyAuthorize\Provider\Role\ZendDb']['identifier_field_name'];
}

return $identifierFieldName;
}

/**
* @return string|\Zend\Permissions\Acl\Role\RoleInterface
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,4 +93,11 @@ public function testGetIdentityRoles()
$roles = $this->provider->getIdentityRoles();
$this->assertEquals($roles, array(null));
}

public function testEmptyRoleProviderConfig()
{
list($tableName, $identifierFieldName) = $this->provider->getRoleProviderTableMeta(array());
$this->assertSame('user_role', $tableName);
$this->assertSame('id', $identifierFieldName);
}
}

0 comments on commit cb3a486

Please sign in to comment.