User_LDAP plugins: smaller fixes
Signed-off-by: Vinicius Cubas Brand <viniciuscb@gmail.com>
This commit is contained in:
parent
10ca793452
commit
fa565750d1
14 changed files with 134 additions and 63 deletions
|
@ -24,9 +24,13 @@ return array(
|
||||||
'OCA\\User_LDAP\\Exceptions\\ConstraintViolationException' => $baseDir . '/../lib/Exceptions/ConstraintViolationException.php',
|
'OCA\\User_LDAP\\Exceptions\\ConstraintViolationException' => $baseDir . '/../lib/Exceptions/ConstraintViolationException.php',
|
||||||
'OCA\\User_LDAP\\Exceptions\\NotOnLDAP' => $baseDir . '/../lib/Exceptions/NotOnLDAP.php',
|
'OCA\\User_LDAP\\Exceptions\\NotOnLDAP' => $baseDir . '/../lib/Exceptions/NotOnLDAP.php',
|
||||||
'OCA\\User_LDAP\\FilesystemHelper' => $baseDir . '/../lib/FilesystemHelper.php',
|
'OCA\\User_LDAP\\FilesystemHelper' => $baseDir . '/../lib/FilesystemHelper.php',
|
||||||
|
'OCA\\User_LDAP\\GroupPluginManager' => $baseDir . '/../lib/GroupPluginManager.php',
|
||||||
'OCA\\User_LDAP\\Group_LDAP' => $baseDir . '/../lib/Group_LDAP.php',
|
'OCA\\User_LDAP\\Group_LDAP' => $baseDir . '/../lib/Group_LDAP.php',
|
||||||
'OCA\\User_LDAP\\Group_Proxy' => $baseDir . '/../lib/Group_Proxy.php',
|
'OCA\\User_LDAP\\Group_Proxy' => $baseDir . '/../lib/Group_Proxy.php',
|
||||||
'OCA\\User_LDAP\\Helper' => $baseDir . '/../lib/Helper.php',
|
'OCA\\User_LDAP\\Helper' => $baseDir . '/../lib/Helper.php',
|
||||||
|
'OCA\\User_LDAP\\IGroupLDAP' => $baseDir . '/../lib/IGroupLDAP.php',
|
||||||
|
'OCA\\User_LDAP\\ILDAPGroupPlugin' => $baseDir . '/../lib/ILDAPGroupPlugin.php',
|
||||||
|
'OCA\\User_LDAP\\ILDAPUserPlugin' => $baseDir . '/../lib/ILDAPUserPlugin.php',
|
||||||
'OCA\\User_LDAP\\ILDAPWrapper' => $baseDir . '/../lib/ILDAPWrapper.php',
|
'OCA\\User_LDAP\\ILDAPWrapper' => $baseDir . '/../lib/ILDAPWrapper.php',
|
||||||
'OCA\\User_LDAP\\IUserLDAP' => $baseDir . '/../lib/IUserLDAP.php',
|
'OCA\\User_LDAP\\IUserLDAP' => $baseDir . '/../lib/IUserLDAP.php',
|
||||||
'OCA\\User_LDAP\\Jobs\\CleanUp' => $baseDir . '/../lib/Jobs/CleanUp.php',
|
'OCA\\User_LDAP\\Jobs\\CleanUp' => $baseDir . '/../lib/Jobs/CleanUp.php',
|
||||||
|
@ -47,6 +51,7 @@ return array(
|
||||||
'OCA\\User_LDAP\\Proxy' => $baseDir . '/../lib/Proxy.php',
|
'OCA\\User_LDAP\\Proxy' => $baseDir . '/../lib/Proxy.php',
|
||||||
'OCA\\User_LDAP\\Settings\\Admin' => $baseDir . '/../lib/Settings/Admin.php',
|
'OCA\\User_LDAP\\Settings\\Admin' => $baseDir . '/../lib/Settings/Admin.php',
|
||||||
'OCA\\User_LDAP\\Settings\\Section' => $baseDir . '/../lib/Settings/Section.php',
|
'OCA\\User_LDAP\\Settings\\Section' => $baseDir . '/../lib/Settings/Section.php',
|
||||||
|
'OCA\\User_LDAP\\UserPluginManager' => $baseDir . '/../lib/UserPluginManager.php',
|
||||||
'OCA\\User_LDAP\\User\\DeletedUsersIndex' => $baseDir . '/../lib/User/DeletedUsersIndex.php',
|
'OCA\\User_LDAP\\User\\DeletedUsersIndex' => $baseDir . '/../lib/User/DeletedUsersIndex.php',
|
||||||
'OCA\\User_LDAP\\User\\IUserTools' => $baseDir . '/../lib/User/IUserTools.php',
|
'OCA\\User_LDAP\\User\\IUserTools' => $baseDir . '/../lib/User/IUserTools.php',
|
||||||
'OCA\\User_LDAP\\User\\Manager' => $baseDir . '/../lib/User/Manager.php',
|
'OCA\\User_LDAP\\User\\Manager' => $baseDir . '/../lib/User/Manager.php',
|
||||||
|
|
|
@ -39,9 +39,13 @@ class ComposerStaticInitUser_LDAP
|
||||||
'OCA\\User_LDAP\\Exceptions\\ConstraintViolationException' => __DIR__ . '/..' . '/../lib/Exceptions/ConstraintViolationException.php',
|
'OCA\\User_LDAP\\Exceptions\\ConstraintViolationException' => __DIR__ . '/..' . '/../lib/Exceptions/ConstraintViolationException.php',
|
||||||
'OCA\\User_LDAP\\Exceptions\\NotOnLDAP' => __DIR__ . '/..' . '/../lib/Exceptions/NotOnLDAP.php',
|
'OCA\\User_LDAP\\Exceptions\\NotOnLDAP' => __DIR__ . '/..' . '/../lib/Exceptions/NotOnLDAP.php',
|
||||||
'OCA\\User_LDAP\\FilesystemHelper' => __DIR__ . '/..' . '/../lib/FilesystemHelper.php',
|
'OCA\\User_LDAP\\FilesystemHelper' => __DIR__ . '/..' . '/../lib/FilesystemHelper.php',
|
||||||
|
'OCA\\User_LDAP\\GroupPluginManager' => __DIR__ . '/..' . '/../lib/GroupPluginManager.php',
|
||||||
'OCA\\User_LDAP\\Group_LDAP' => __DIR__ . '/..' . '/../lib/Group_LDAP.php',
|
'OCA\\User_LDAP\\Group_LDAP' => __DIR__ . '/..' . '/../lib/Group_LDAP.php',
|
||||||
'OCA\\User_LDAP\\Group_Proxy' => __DIR__ . '/..' . '/../lib/Group_Proxy.php',
|
'OCA\\User_LDAP\\Group_Proxy' => __DIR__ . '/..' . '/../lib/Group_Proxy.php',
|
||||||
'OCA\\User_LDAP\\Helper' => __DIR__ . '/..' . '/../lib/Helper.php',
|
'OCA\\User_LDAP\\Helper' => __DIR__ . '/..' . '/../lib/Helper.php',
|
||||||
|
'OCA\\User_LDAP\\IGroupLDAP' => __DIR__ . '/..' . '/../lib/IGroupLDAP.php',
|
||||||
|
'OCA\\User_LDAP\\ILDAPGroupPlugin' => __DIR__ . '/..' . '/../lib/ILDAPGroupPlugin.php',
|
||||||
|
'OCA\\User_LDAP\\ILDAPUserPlugin' => __DIR__ . '/..' . '/../lib/ILDAPUserPlugin.php',
|
||||||
'OCA\\User_LDAP\\ILDAPWrapper' => __DIR__ . '/..' . '/../lib/ILDAPWrapper.php',
|
'OCA\\User_LDAP\\ILDAPWrapper' => __DIR__ . '/..' . '/../lib/ILDAPWrapper.php',
|
||||||
'OCA\\User_LDAP\\IUserLDAP' => __DIR__ . '/..' . '/../lib/IUserLDAP.php',
|
'OCA\\User_LDAP\\IUserLDAP' => __DIR__ . '/..' . '/../lib/IUserLDAP.php',
|
||||||
'OCA\\User_LDAP\\Jobs\\CleanUp' => __DIR__ . '/..' . '/../lib/Jobs/CleanUp.php',
|
'OCA\\User_LDAP\\Jobs\\CleanUp' => __DIR__ . '/..' . '/../lib/Jobs/CleanUp.php',
|
||||||
|
@ -62,6 +66,7 @@ class ComposerStaticInitUser_LDAP
|
||||||
'OCA\\User_LDAP\\Proxy' => __DIR__ . '/..' . '/../lib/Proxy.php',
|
'OCA\\User_LDAP\\Proxy' => __DIR__ . '/..' . '/../lib/Proxy.php',
|
||||||
'OCA\\User_LDAP\\Settings\\Admin' => __DIR__ . '/..' . '/../lib/Settings/Admin.php',
|
'OCA\\User_LDAP\\Settings\\Admin' => __DIR__ . '/..' . '/../lib/Settings/Admin.php',
|
||||||
'OCA\\User_LDAP\\Settings\\Section' => __DIR__ . '/..' . '/../lib/Settings/Section.php',
|
'OCA\\User_LDAP\\Settings\\Section' => __DIR__ . '/..' . '/../lib/Settings/Section.php',
|
||||||
|
'OCA\\User_LDAP\\UserPluginManager' => __DIR__ . '/..' . '/../lib/UserPluginManager.php',
|
||||||
'OCA\\User_LDAP\\User\\DeletedUsersIndex' => __DIR__ . '/..' . '/../lib/User/DeletedUsersIndex.php',
|
'OCA\\User_LDAP\\User\\DeletedUsersIndex' => __DIR__ . '/..' . '/../lib/User/DeletedUsersIndex.php',
|
||||||
'OCA\\User_LDAP\\User\\IUserTools' => __DIR__ . '/..' . '/../lib/User/IUserTools.php',
|
'OCA\\User_LDAP\\User\\IUserTools' => __DIR__ . '/..' . '/../lib/User/IUserTools.php',
|
||||||
'OCA\\User_LDAP\\User\\Manager' => __DIR__ . '/..' . '/../lib/User/Manager.php',
|
'OCA\\User_LDAP\\User\\Manager' => __DIR__ . '/..' . '/../lib/User/Manager.php',
|
||||||
|
|
|
@ -23,19 +23,19 @@
|
||||||
|
|
||||||
namespace OCA\User_LDAP;
|
namespace OCA\User_LDAP;
|
||||||
|
|
||||||
use OC\Group\Backend;
|
use OCP\GroupInterface;
|
||||||
|
|
||||||
class GroupPluginManager {
|
class GroupPluginManager {
|
||||||
|
|
||||||
private $respondToActions = 0;
|
private $respondToActions = 0;
|
||||||
|
|
||||||
private $which = array(
|
private $which = array(
|
||||||
Backend::CREATE_GROUP => null,
|
GroupInterface::CREATE_GROUP => null,
|
||||||
Backend::DELETE_GROUP => null,
|
GroupInterface::DELETE_GROUP => null,
|
||||||
Backend::ADD_TO_GROUP => null,
|
GroupInterface::ADD_TO_GROUP => null,
|
||||||
Backend::REMOVE_FROM_GROUP => null,
|
GroupInterface::REMOVE_FROM_GROUP => null,
|
||||||
Backend::COUNT_USERS => null,
|
GroupInterface::COUNT_USERS => null,
|
||||||
Backend::GROUP_DETAILS => null
|
GroupInterface::GROUP_DETAILS => null
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -63,7 +63,7 @@ class GroupPluginManager {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Signal if there is a registered plugin that implements some given actions
|
* Signal if there is a registered plugin that implements some given actions
|
||||||
* @param int $action Actions defined in \OC\Group\Backend, like Backend::REMOVE_FROM_GROUP
|
* @param int $actions Actions defined in \OCP\GroupInterface, like GroupInterface::REMOVE_FROM_GROUP
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function implementsActions($actions) {
|
public function implementsActions($actions) {
|
||||||
|
@ -77,7 +77,7 @@ class GroupPluginManager {
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public function createGroup($gid) {
|
public function createGroup($gid) {
|
||||||
$plugin = $this->which[Backend::CREATE_GROUP];
|
$plugin = $this->which[GroupInterface::CREATE_GROUP];
|
||||||
|
|
||||||
if ($plugin) {
|
if ($plugin) {
|
||||||
return $plugin->createGroup($gid);
|
return $plugin->createGroup($gid);
|
||||||
|
@ -92,7 +92,7 @@ class GroupPluginManager {
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public function deleteGroup($gid) {
|
public function deleteGroup($gid) {
|
||||||
$plugin = $this->which[Backend::DELETE_GROUP];
|
$plugin = $this->which[GroupInterface::DELETE_GROUP];
|
||||||
|
|
||||||
if ($plugin) {
|
if ($plugin) {
|
||||||
return $plugin->deleteGroup($gid);
|
return $plugin->deleteGroup($gid);
|
||||||
|
@ -110,7 +110,7 @@ class GroupPluginManager {
|
||||||
* Adds a user to a group.
|
* Adds a user to a group.
|
||||||
*/
|
*/
|
||||||
public function addToGroup($uid, $gid) {
|
public function addToGroup($uid, $gid) {
|
||||||
$plugin = $this->which[Backend::ADD_TO_GROUP];
|
$plugin = $this->which[GroupInterface::ADD_TO_GROUP];
|
||||||
|
|
||||||
if ($plugin) {
|
if ($plugin) {
|
||||||
return $plugin->addToGroup($uid, $gid);
|
return $plugin->addToGroup($uid, $gid);
|
||||||
|
@ -128,7 +128,7 @@ class GroupPluginManager {
|
||||||
* removes the user from a group.
|
* removes the user from a group.
|
||||||
*/
|
*/
|
||||||
public function removeFromGroup($uid, $gid) {
|
public function removeFromGroup($uid, $gid) {
|
||||||
$plugin = $this->which[Backend::REMOVE_FROM_GROUP];
|
$plugin = $this->which[GroupInterface::REMOVE_FROM_GROUP];
|
||||||
|
|
||||||
if ($plugin) {
|
if ($plugin) {
|
||||||
return $plugin->removeFromGroup($uid, $gid);
|
return $plugin->removeFromGroup($uid, $gid);
|
||||||
|
@ -144,7 +144,7 @@ class GroupPluginManager {
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public function countUsersInGroup($gid, $search = '') {
|
public function countUsersInGroup($gid, $search = '') {
|
||||||
$plugin = $this->which[Backend::COUNT_USERS];
|
$plugin = $this->which[GroupInterface::COUNT_USERS];
|
||||||
|
|
||||||
if ($plugin) {
|
if ($plugin) {
|
||||||
return $plugin->countUsersInGroup($gid,$search);
|
return $plugin->countUsersInGroup($gid,$search);
|
||||||
|
@ -159,7 +159,7 @@ class GroupPluginManager {
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public function getGroupDetails($gid) {
|
public function getGroupDetails($gid) {
|
||||||
$plugin = $this->which[Backend::GROUP_DETAILS];
|
$plugin = $this->which[GroupInterface::GROUP_DETAILS];
|
||||||
|
|
||||||
if ($plugin) {
|
if ($plugin) {
|
||||||
return $plugin->getGroupDetails($gid);
|
return $plugin->getGroupDetails($gid);
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
namespace OCA\User_LDAP;
|
namespace OCA\User_LDAP;
|
||||||
|
|
||||||
use OC\Cache\CappedMemoryCache;
|
use OC\Cache\CappedMemoryCache;
|
||||||
use OC\Group\Backend;
|
use OCP\GroupInterface;
|
||||||
|
|
||||||
class Group_LDAP extends BackendUtility implements \OCP\GroupInterface, IGroupLDAP {
|
class Group_LDAP extends BackendUtility implements \OCP\GroupInterface, IGroupLDAP {
|
||||||
protected $enabled = false;
|
protected $enabled = false;
|
||||||
|
@ -865,7 +865,7 @@ class Group_LDAP extends BackendUtility implements \OCP\GroupInterface, IGroupLD
|
||||||
* @return int|bool
|
* @return int|bool
|
||||||
*/
|
*/
|
||||||
public function countUsersInGroup($gid, $search = '') {
|
public function countUsersInGroup($gid, $search = '') {
|
||||||
if ($this->groupPluginManager->implementsActions(Backend::COUNT_USERS)) {
|
if ($this->groupPluginManager->implementsActions(GroupInterface::COUNT_USERS)) {
|
||||||
return $this->groupPluginManager->countUsersInGroup($gid, $search);
|
return $this->groupPluginManager->countUsersInGroup($gid, $search);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1076,10 +1076,10 @@ class Group_LDAP extends BackendUtility implements \OCP\GroupInterface, IGroupLD
|
||||||
* @return boolean
|
* @return boolean
|
||||||
*
|
*
|
||||||
* Returns the supported actions as int to be
|
* Returns the supported actions as int to be
|
||||||
* compared with \OC\Group\Backend::CREATE_GROUP etc.
|
* compared with GroupInterface::CREATE_GROUP etc.
|
||||||
*/
|
*/
|
||||||
public function implementsActions($actions) {
|
public function implementsActions($actions) {
|
||||||
return (bool)((\OC\Group\Backend::COUNT_USERS |
|
return (bool)((GroupInterface::COUNT_USERS |
|
||||||
$this->groupPluginManager->getImplementedActions()) & $actions);
|
$this->groupPluginManager->getImplementedActions()) & $actions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1098,7 +1098,7 @@ class Group_LDAP extends BackendUtility implements \OCP\GroupInterface, IGroupLD
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public function createGroup($gid) {
|
public function createGroup($gid) {
|
||||||
if ($this->groupPluginManager->implementsActions(Backend::CREATE_GROUP)) {
|
if ($this->groupPluginManager->implementsActions(GroupInterface::CREATE_GROUP)) {
|
||||||
if ($dn = $this->groupPluginManager->createGroup($gid)) {
|
if ($dn = $this->groupPluginManager->createGroup($gid)) {
|
||||||
//updates group mapping
|
//updates group mapping
|
||||||
$this->access->dn2ocname($dn, $gid, false);
|
$this->access->dn2ocname($dn, $gid, false);
|
||||||
|
@ -1116,7 +1116,7 @@ class Group_LDAP extends BackendUtility implements \OCP\GroupInterface, IGroupLD
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public function deleteGroup($gid) {
|
public function deleteGroup($gid) {
|
||||||
if ($this->groupPluginManager->implementsActions(Backend::DELETE_GROUP)) {
|
if ($this->groupPluginManager->implementsActions(GroupInterface::DELETE_GROUP)) {
|
||||||
if ($ret = $this->groupPluginManager->deleteGroup($gid)) {
|
if ($ret = $this->groupPluginManager->deleteGroup($gid)) {
|
||||||
#delete group in nextcloud internal db
|
#delete group in nextcloud internal db
|
||||||
$this->access->getGroupMapper()->unmap($gid);
|
$this->access->getGroupMapper()->unmap($gid);
|
||||||
|
@ -1135,9 +1135,9 @@ class Group_LDAP extends BackendUtility implements \OCP\GroupInterface, IGroupLD
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public function addToGroup($uid, $gid) {
|
public function addToGroup($uid, $gid) {
|
||||||
if ($this->groupPluginManager->implementsActions(Backend::ADD_TO_GROUP)) {
|
if ($this->groupPluginManager->implementsActions(GroupInterface::ADD_TO_GROUP)) {
|
||||||
if ($ret = $this->groupPluginManager->addToGroup($uid, $gid)) {
|
if ($ret = $this->groupPluginManager->addToGroup($uid, $gid)) {
|
||||||
#$this->access->connection->clearCache();
|
$this->access->connection->clearCache();
|
||||||
}
|
}
|
||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
|
@ -1152,9 +1152,9 @@ class Group_LDAP extends BackendUtility implements \OCP\GroupInterface, IGroupLD
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public function removeFromGroup($uid, $gid) {
|
public function removeFromGroup($uid, $gid) {
|
||||||
if ($this->groupPluginManager->implementsActions(Backend::REMOVE_FROM_GROUP)) {
|
if ($this->groupPluginManager->implementsActions(GroupInterface::REMOVE_FROM_GROUP)) {
|
||||||
if ($ret = $this->groupPluginManager->removeFromGroup($uid, $gid)) {
|
if ($ret = $this->groupPluginManager->removeFromGroup($uid, $gid)) {
|
||||||
#$this->access->connection->clearCache();
|
$this->access->connection->clearCache();
|
||||||
}
|
}
|
||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
|
@ -1168,7 +1168,7 @@ class Group_LDAP extends BackendUtility implements \OCP\GroupInterface, IGroupLD
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
public function getGroupDetails($gid) {
|
public function getGroupDetails($gid) {
|
||||||
if ($this->groupPluginManager->implementsActions(Backend::GROUP_DETAILS)) {
|
if ($this->groupPluginManager->implementsActions(GroupInterface::GROUP_DETAILS)) {
|
||||||
return $this->groupPluginManager->getGroupDetails($gid);
|
return $this->groupPluginManager->getGroupDetails($gid);
|
||||||
}
|
}
|
||||||
throw new \Exception('Could not get group details in LDAP backend.');
|
throw new \Exception('Could not get group details in LDAP backend.');
|
||||||
|
|
|
@ -245,7 +245,7 @@ class Group_Proxy extends Proxy implements \OCP\GroupInterface, IGroupLDAP {
|
||||||
* @return boolean
|
* @return boolean
|
||||||
*
|
*
|
||||||
* Returns the supported actions as int to be
|
* Returns the supported actions as int to be
|
||||||
* compared with \OC\Group\Backend::CREATE_GROUP etc.
|
* compared with \OCP\GroupInterface::CREATE_GROUP etc.
|
||||||
*/
|
*/
|
||||||
public function implementsActions($actions) {
|
public function implementsActions($actions) {
|
||||||
//it's the same across all our user backends obviously
|
//it's the same across all our user backends obviously
|
||||||
|
|
|
@ -39,14 +39,14 @@ interface ILDAPGroupPlugin {
|
||||||
* @param string $gid
|
* @param string $gid
|
||||||
* @return string|null The group DN if group creation was successful.
|
* @return string|null The group DN if group creation was successful.
|
||||||
*/
|
*/
|
||||||
public function createGroup($gid);
|
public function createGroup($gid);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* delete a group
|
* delete a group
|
||||||
* @param string $gid gid of the group to delete
|
* @param string $gid gid of the group to delete
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function deleteGroup($gid);
|
public function deleteGroup($gid);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a user to a group
|
* Add a user to a group
|
||||||
|
@ -56,7 +56,7 @@ interface ILDAPGroupPlugin {
|
||||||
*
|
*
|
||||||
* Adds a user to a group.
|
* Adds a user to a group.
|
||||||
*/
|
*/
|
||||||
public function addToGroup($uid, $gid);
|
public function addToGroup($uid, $gid);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes a user from a group
|
* Removes a user from a group
|
||||||
|
@ -66,7 +66,7 @@ interface ILDAPGroupPlugin {
|
||||||
*
|
*
|
||||||
* removes the user from a group.
|
* removes the user from a group.
|
||||||
*/
|
*/
|
||||||
public function removeFromGroup($uid, $gid);
|
public function removeFromGroup($uid, $gid);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get the number of all users matching the search string in a group
|
* get the number of all users matching the search string in a group
|
||||||
|
@ -74,15 +74,13 @@ interface ILDAPGroupPlugin {
|
||||||
* @param string $search
|
* @param string $search
|
||||||
* @return int|false
|
* @return int|false
|
||||||
*/
|
*/
|
||||||
public function countUsersInGroup($gid, $search = '');
|
public function countUsersInGroup($gid, $search = '');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get an array with group details
|
* get an array with group details
|
||||||
* @param string $gid
|
* @param string $gid
|
||||||
* @return array|false
|
* @return array|false
|
||||||
*/
|
*/
|
||||||
public function getGroupDetails($gid);
|
public function getGroupDetails($gid);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,6 +46,8 @@ class LDAPProvider implements ILDAPProvider, IDeletionFlagSupport {
|
||||||
/**
|
/**
|
||||||
* Create new LDAPProvider
|
* Create new LDAPProvider
|
||||||
* @param \OCP\IServerContainer $serverContainer
|
* @param \OCP\IServerContainer $serverContainer
|
||||||
|
* @param Helper $helper
|
||||||
|
* @param DeletedUsersIndex $deletedUsersIndex
|
||||||
* @throws \Exception if user_ldap app was not enabled
|
* @throws \Exception if user_ldap app was not enabled
|
||||||
*/
|
*/
|
||||||
public function __construct(IServerContainer $serverContainer, Helper $helper, DeletedUsersIndex $deletedUsersIndex) {
|
public function __construct(IServerContainer $serverContainer, Helper $helper, DeletedUsersIndex $deletedUsersIndex) {
|
||||||
|
|
|
@ -51,26 +51,28 @@ class UserPluginManager {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers a group plugin that may implement some actions, overriding User_LDAP's user actions.
|
* Registers a group plugin that may implement some actions, overriding User_LDAP's user actions.
|
||||||
* @param ILDAPGroupPlugin $plugin
|
*
|
||||||
|
* @param ILDAPUserPlugin $plugin
|
||||||
*/
|
*/
|
||||||
public function register(ILDAPUserPlugin $plugin) {
|
public function register(ILDAPUserPlugin $plugin) {
|
||||||
$respondToActions = $plugin->respondToActions();
|
$respondToActions = $plugin->respondToActions();
|
||||||
$this->respondToActions |= $respondToActions;
|
$this->respondToActions |= $respondToActions;
|
||||||
|
|
||||||
foreach($this->which as $action => $v) {
|
foreach($this->which as $action => $v) {
|
||||||
if ((bool)($respondToActions & $action)) {
|
if (is_int($action) && (bool)($respondToActions & $action)) {
|
||||||
$this->which[$action] = $plugin;
|
$this->which[$action] = $plugin;
|
||||||
\OC::$server->getLogger()->debug("Registered action ".$action." to plugin ".get_class($plugin), ['app' => 'user_ldap']);
|
\OC::$server->getLogger()->debug("Registered action ".$action." to plugin ".get_class($plugin), ['app' => 'user_ldap']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (method_exists($plugin,'deleteUser')) {
|
if (method_exists($plugin,'deleteUser')) {
|
||||||
$this->which['deleteUser'] = $plugin;
|
$this->which['deleteUser'] = $plugin;
|
||||||
|
\OC::$server->getLogger()->debug("Registered action deleteUser to plugin ".get_class($plugin), ['app' => 'user_ldap']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Signal if there is a registered plugin that implements some given actions
|
* Signal if there is a registered plugin that implements some given actions
|
||||||
* @param int $action Actions defined in \OC\User\Backend, like Backend::CREATE_USER
|
* @param int $actions Actions defined in \OC\User\Backend, like Backend::CREATE_USER
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function implementsActions($actions) {
|
public function implementsActions($actions) {
|
||||||
|
@ -80,7 +82,7 @@ class UserPluginManager {
|
||||||
/**
|
/**
|
||||||
* Create a new user in LDAP Backend
|
* Create a new user in LDAP Backend
|
||||||
*
|
*
|
||||||
* @param string $uid The username of the user to create
|
* @param string $username The username of the user to create
|
||||||
* @param string $password The password of the new user
|
* @param string $password The password of the new user
|
||||||
* @return bool
|
* @return bool
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
namespace OCA\User_LDAP\Tests;
|
namespace OCA\User_LDAP\Tests;
|
||||||
|
|
||||||
|
|
||||||
use OC\Group\Backend;
|
use OCP\GroupInterface;
|
||||||
use OCA\User_LDAP\GroupPluginManager;
|
use OCA\User_LDAP\GroupPluginManager;
|
||||||
|
|
||||||
class GroupLDAPPluginTest extends \Test\TestCase {
|
class GroupLDAPPluginTest extends \Test\TestCase {
|
||||||
|
@ -44,7 +44,7 @@ class GroupLDAPPluginTest extends \Test\TestCase {
|
||||||
|
|
||||||
$plugin->expects($this->any())
|
$plugin->expects($this->any())
|
||||||
->method('respondToActions')
|
->method('respondToActions')
|
||||||
->willReturn(Backend::CREATE_GROUP);
|
->willReturn(GroupInterface::CREATE_GROUP);
|
||||||
|
|
||||||
$plugin2 = $this->getMockBuilder('OCA\User_LDAP\Tests\LDAPGroupPluginDummy')
|
$plugin2 = $this->getMockBuilder('OCA\User_LDAP\Tests\LDAPGroupPluginDummy')
|
||||||
->setMethods(['respondToActions'])
|
->setMethods(['respondToActions'])
|
||||||
|
@ -52,14 +52,14 @@ class GroupLDAPPluginTest extends \Test\TestCase {
|
||||||
|
|
||||||
$plugin2->expects($this->any())
|
$plugin2->expects($this->any())
|
||||||
->method('respondToActions')
|
->method('respondToActions')
|
||||||
->willReturn(Backend::ADD_TO_GROUP);
|
->willReturn(GroupInterface::ADD_TO_GROUP);
|
||||||
|
|
||||||
$pluginManager->register($plugin);
|
$pluginManager->register($plugin);
|
||||||
$pluginManager->register($plugin2);
|
$pluginManager->register($plugin2);
|
||||||
|
|
||||||
$this->assertEquals($pluginManager->getImplementedActions(), Backend::CREATE_GROUP | Backend::ADD_TO_GROUP);
|
$this->assertEquals($pluginManager->getImplementedActions(), GroupInterface::CREATE_GROUP | GroupInterface::ADD_TO_GROUP);
|
||||||
$this->assertTrue($pluginManager->implementsActions(Backend::CREATE_GROUP));
|
$this->assertTrue($pluginManager->implementsActions(GroupInterface::CREATE_GROUP));
|
||||||
$this->assertTrue($pluginManager->implementsActions(Backend::ADD_TO_GROUP));
|
$this->assertTrue($pluginManager->implementsActions(GroupInterface::ADD_TO_GROUP));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testCreateGroup() {
|
public function testCreateGroup() {
|
||||||
|
@ -71,7 +71,7 @@ class GroupLDAPPluginTest extends \Test\TestCase {
|
||||||
|
|
||||||
$plugin->expects($this->any())
|
$plugin->expects($this->any())
|
||||||
->method('respondToActions')
|
->method('respondToActions')
|
||||||
->willReturn(Backend::CREATE_GROUP);
|
->willReturn(GroupInterface::CREATE_GROUP);
|
||||||
|
|
||||||
$plugin->expects($this->once())
|
$plugin->expects($this->once())
|
||||||
->method('createGroup')
|
->method('createGroup')
|
||||||
|
@ -101,7 +101,7 @@ class GroupLDAPPluginTest extends \Test\TestCase {
|
||||||
|
|
||||||
$plugin->expects($this->any())
|
$plugin->expects($this->any())
|
||||||
->method('respondToActions')
|
->method('respondToActions')
|
||||||
->willReturn(Backend::DELETE_GROUP);
|
->willReturn(GroupInterface::DELETE_GROUP);
|
||||||
|
|
||||||
$plugin->expects($this->once())
|
$plugin->expects($this->once())
|
||||||
->method('deleteGroup')
|
->method('deleteGroup')
|
||||||
|
@ -131,7 +131,7 @@ class GroupLDAPPluginTest extends \Test\TestCase {
|
||||||
|
|
||||||
$plugin->expects($this->any())
|
$plugin->expects($this->any())
|
||||||
->method('respondToActions')
|
->method('respondToActions')
|
||||||
->willReturn(Backend::ADD_TO_GROUP);
|
->willReturn(GroupInterface::ADD_TO_GROUP);
|
||||||
|
|
||||||
$plugin->expects($this->once())
|
$plugin->expects($this->once())
|
||||||
->method('addToGroup')
|
->method('addToGroup')
|
||||||
|
@ -162,7 +162,7 @@ class GroupLDAPPluginTest extends \Test\TestCase {
|
||||||
|
|
||||||
$plugin->expects($this->any())
|
$plugin->expects($this->any())
|
||||||
->method('respondToActions')
|
->method('respondToActions')
|
||||||
->willReturn(Backend::REMOVE_FROM_GROUP);
|
->willReturn(GroupInterface::REMOVE_FROM_GROUP);
|
||||||
|
|
||||||
$plugin->expects($this->once())
|
$plugin->expects($this->once())
|
||||||
->method('removeFromGroup')
|
->method('removeFromGroup')
|
||||||
|
@ -193,7 +193,7 @@ class GroupLDAPPluginTest extends \Test\TestCase {
|
||||||
|
|
||||||
$plugin->expects($this->any())
|
$plugin->expects($this->any())
|
||||||
->method('respondToActions')
|
->method('respondToActions')
|
||||||
->willReturn(Backend::COUNT_USERS);
|
->willReturn(GroupInterface::COUNT_USERS);
|
||||||
|
|
||||||
$plugin->expects($this->once())
|
$plugin->expects($this->once())
|
||||||
->method('countUsersInGroup')
|
->method('countUsersInGroup')
|
||||||
|
@ -224,7 +224,7 @@ class GroupLDAPPluginTest extends \Test\TestCase {
|
||||||
|
|
||||||
$plugin->expects($this->any())
|
$plugin->expects($this->any())
|
||||||
->method('respondToActions')
|
->method('respondToActions')
|
||||||
->willReturn(Backend::GROUP_DETAILS);
|
->willReturn(GroupInterface::GROUP_DETAILS);
|
||||||
|
|
||||||
$plugin->expects($this->once())
|
$plugin->expects($this->once())
|
||||||
->method('getGroupDetails')
|
->method('getGroupDetails')
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
|
|
||||||
namespace OCA\User_LDAP\Tests;
|
namespace OCA\User_LDAP\Tests;
|
||||||
|
|
||||||
use OC\Group\Backend;
|
use OCP\GroupInterface;
|
||||||
use OCA\User_LDAP\Group_LDAP as GroupLDAP;
|
use OCA\User_LDAP\Group_LDAP as GroupLDAP;
|
||||||
use OCA\User_LDAP\ILDAPWrapper;
|
use OCA\User_LDAP\ILDAPWrapper;
|
||||||
|
|
||||||
|
@ -157,7 +157,7 @@ class Group_LDAPTest extends \Test\TestCase {
|
||||||
|
|
||||||
$pluginManager->expects($this->once())
|
$pluginManager->expects($this->once())
|
||||||
->method('implementsActions')
|
->method('implementsActions')
|
||||||
->with(Backend::COUNT_USERS)
|
->with(GroupInterface::COUNT_USERS)
|
||||||
->willReturn(true);
|
->willReturn(true);
|
||||||
|
|
||||||
$pluginManager->expects($this->once())
|
$pluginManager->expects($this->once())
|
||||||
|
@ -727,7 +727,7 @@ class Group_LDAPTest extends \Test\TestCase {
|
||||||
|
|
||||||
$pluginManager->expects($this->once())
|
$pluginManager->expects($this->once())
|
||||||
->method('implementsActions')
|
->method('implementsActions')
|
||||||
->with(Backend::CREATE_GROUP)
|
->with(GroupInterface::CREATE_GROUP)
|
||||||
->willReturn(true);
|
->willReturn(true);
|
||||||
|
|
||||||
$pluginManager->expects($this->once())
|
$pluginManager->expects($this->once())
|
||||||
|
@ -753,7 +753,7 @@ class Group_LDAPTest extends \Test\TestCase {
|
||||||
|
|
||||||
$pluginManager->expects($this->once())
|
$pluginManager->expects($this->once())
|
||||||
->method('implementsActions')
|
->method('implementsActions')
|
||||||
->with(Backend::CREATE_GROUP)
|
->with(GroupInterface::CREATE_GROUP)
|
||||||
->willReturn(false);
|
->willReturn(false);
|
||||||
|
|
||||||
$ldap = new GroupLDAP(
|
$ldap = new GroupLDAP(
|
||||||
|
@ -771,7 +771,7 @@ class Group_LDAPTest extends \Test\TestCase {
|
||||||
|
|
||||||
$pluginManager->expects($this->once())
|
$pluginManager->expects($this->once())
|
||||||
->method('implementsActions')
|
->method('implementsActions')
|
||||||
->with(Backend::DELETE_GROUP)
|
->with(GroupInterface::DELETE_GROUP)
|
||||||
->willReturn(true);
|
->willReturn(true);
|
||||||
|
|
||||||
$pluginManager->expects($this->once())
|
$pluginManager->expects($this->once())
|
||||||
|
@ -808,7 +808,7 @@ class Group_LDAPTest extends \Test\TestCase {
|
||||||
|
|
||||||
$pluginManager->expects($this->once())
|
$pluginManager->expects($this->once())
|
||||||
->method('implementsActions')
|
->method('implementsActions')
|
||||||
->with(Backend::DELETE_GROUP)
|
->with(GroupInterface::DELETE_GROUP)
|
||||||
->willReturn(false);
|
->willReturn(false);
|
||||||
|
|
||||||
$ldap = new GroupLDAP(
|
$ldap = new GroupLDAP(
|
||||||
|
@ -826,7 +826,7 @@ class Group_LDAPTest extends \Test\TestCase {
|
||||||
|
|
||||||
$pluginManager->expects($this->once())
|
$pluginManager->expects($this->once())
|
||||||
->method('implementsActions')
|
->method('implementsActions')
|
||||||
->with(Backend::ADD_TO_GROUP)
|
->with(GroupInterface::ADD_TO_GROUP)
|
||||||
->willReturn(true);
|
->willReturn(true);
|
||||||
|
|
||||||
$pluginManager->expects($this->once())
|
$pluginManager->expects($this->once())
|
||||||
|
@ -852,7 +852,7 @@ class Group_LDAPTest extends \Test\TestCase {
|
||||||
|
|
||||||
$pluginManager->expects($this->once())
|
$pluginManager->expects($this->once())
|
||||||
->method('implementsActions')
|
->method('implementsActions')
|
||||||
->with(Backend::ADD_TO_GROUP)
|
->with(GroupInterface::ADD_TO_GROUP)
|
||||||
->willReturn(false);
|
->willReturn(false);
|
||||||
|
|
||||||
$ldap = new GroupLDAP(
|
$ldap = new GroupLDAP(
|
||||||
|
@ -870,7 +870,7 @@ class Group_LDAPTest extends \Test\TestCase {
|
||||||
|
|
||||||
$pluginManager->expects($this->once())
|
$pluginManager->expects($this->once())
|
||||||
->method('implementsActions')
|
->method('implementsActions')
|
||||||
->with(Backend::REMOVE_FROM_GROUP)
|
->with(GroupInterface::REMOVE_FROM_GROUP)
|
||||||
->willReturn(true);
|
->willReturn(true);
|
||||||
|
|
||||||
$pluginManager->expects($this->once())
|
$pluginManager->expects($this->once())
|
||||||
|
@ -896,7 +896,7 @@ class Group_LDAPTest extends \Test\TestCase {
|
||||||
|
|
||||||
$pluginManager->expects($this->once())
|
$pluginManager->expects($this->once())
|
||||||
->method('implementsActions')
|
->method('implementsActions')
|
||||||
->with(Backend::REMOVE_FROM_GROUP)
|
->with(GroupInterface::REMOVE_FROM_GROUP)
|
||||||
->willReturn(false);
|
->willReturn(false);
|
||||||
|
|
||||||
$ldap = new GroupLDAP(
|
$ldap = new GroupLDAP(
|
||||||
|
@ -914,7 +914,7 @@ class Group_LDAPTest extends \Test\TestCase {
|
||||||
|
|
||||||
$pluginManager->expects($this->once())
|
$pluginManager->expects($this->once())
|
||||||
->method('implementsActions')
|
->method('implementsActions')
|
||||||
->with(Backend::GROUP_DETAILS)
|
->with(GroupInterface::GROUP_DETAILS)
|
||||||
->willReturn(true);
|
->willReturn(true);
|
||||||
|
|
||||||
$pluginManager->expects($this->once())
|
$pluginManager->expects($this->once())
|
||||||
|
@ -940,7 +940,7 @@ class Group_LDAPTest extends \Test\TestCase {
|
||||||
|
|
||||||
$pluginManager->expects($this->once())
|
$pluginManager->expects($this->once())
|
||||||
->method('implementsActions')
|
->method('implementsActions')
|
||||||
->with(Backend::GROUP_DETAILS)
|
->with(GroupInterface::GROUP_DETAILS)
|
||||||
->willReturn(false);
|
->willReturn(false);
|
||||||
|
|
||||||
$ldap = new GroupLDAP(
|
$ldap = new GroupLDAP(
|
||||||
|
|
|
@ -68,6 +68,13 @@ abstract class AbstractIntegrationTest {
|
||||||
* the LDAP backend.
|
* the LDAP backend.
|
||||||
*/
|
*/
|
||||||
public function init() {
|
public function init() {
|
||||||
|
\OC::$server->registerService('LDAPUserPluginManager', function() {
|
||||||
|
return new \OCA\User_LDAP\UserPluginManager();
|
||||||
|
});
|
||||||
|
\OC::$server->registerService('LDAPGroupPluginManager', function() {
|
||||||
|
return new \OCA\User_LDAP\GroupPluginManager();
|
||||||
|
});
|
||||||
|
|
||||||
$this->initLDAPWrapper();
|
$this->initLDAPWrapper();
|
||||||
$this->initConnection();
|
$this->initConnection();
|
||||||
$this->initUserManager();
|
$this->initUserManager();
|
||||||
|
|
|
@ -46,7 +46,7 @@ class IntegrationTestUserCleanUp extends AbstractIntegrationTest {
|
||||||
$this->mapping->clear();
|
$this->mapping->clear();
|
||||||
$this->access->setUserMapper($this->mapping);
|
$this->access->setUserMapper($this->mapping);
|
||||||
|
|
||||||
$userBackend = new User_LDAP($this->access, \OC::$server->getConfig(), \OC::$server->getNotificationManager(), \OC::$server->getUserSession());
|
$userBackend = new User_LDAP($this->access, \OC::$server->getConfig(), \OC::$server->getNotificationManager(), \OC::$server->getUserSession(), \OC::$server->query('LDAPUserPluginManager'));
|
||||||
\OC_User::useBackend($userBackend);
|
\OC_User::useBackend($userBackend);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -431,6 +431,51 @@ class LDAPProviderTest extends \Test\TestCase {
|
||||||
$ldapProvider->clearCache('existing_user');
|
$ldapProvider->clearCache('existing_user');
|
||||||
$this->assertTrue(TRUE);
|
$this->assertTrue(TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \Exception
|
||||||
|
* @expectedExceptionMessage Group id not found in LDAP
|
||||||
|
*/
|
||||||
|
public function testClearGroupCacheGroupIDNotFound() {
|
||||||
|
$userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->getMock();
|
||||||
|
$groupBackend = $this->getMockBuilder('OCA\User_LDAP\Group_LDAP')
|
||||||
|
->setMethods(['groupExists'])
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->getMock();
|
||||||
|
$groupBackend->expects($this->any())->method('groupExists')->willReturn(false);
|
||||||
|
|
||||||
|
$server = $this->getServerMock($userBackend, $groupBackend);
|
||||||
|
|
||||||
|
$ldapProvider = $this->getLDAPProvider($server);
|
||||||
|
$ldapProvider->clearGroupCache('nonexisting_group');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testClearGroupCache() {
|
||||||
|
$userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->getMock();
|
||||||
|
$groupBackend = $this->getMockBuilder('OCA\User_LDAP\Group_LDAP')
|
||||||
|
->setMethods(['groupExists', 'getLDAPAccess', 'getConnection', 'clearCache'])
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->getMock();
|
||||||
|
$groupBackend->expects($this->at(0))
|
||||||
|
->method('groupExists')
|
||||||
|
->willReturn(true);
|
||||||
|
$groupBackend->expects($this->at(3))
|
||||||
|
->method('clearCache')
|
||||||
|
->willReturn(true);
|
||||||
|
$groupBackend->expects($this->any())
|
||||||
|
->method($this->anything())
|
||||||
|
->willReturnSelf();
|
||||||
|
|
||||||
|
$server = $this->getServerMock($userBackend, $groupBackend);
|
||||||
|
|
||||||
|
$ldapProvider = $this->getLDAPProvider($server);
|
||||||
|
$ldapProvider->clearGroupCache('existing_group');
|
||||||
|
$this->assertTrue(TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
public function testDnExists() {
|
public function testDnExists() {
|
||||||
$userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
|
$userBackend = $this->getMockBuilder('OCA\User_LDAP\User_LDAP')
|
||||||
|
|
|
@ -123,6 +123,13 @@ interface ILDAPProvider {
|
||||||
*/
|
*/
|
||||||
public function clearCache($uid);
|
public function clearCache($uid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clear the cache if a cache is used, otherwise do nothing.
|
||||||
|
* @param string $gid group id
|
||||||
|
* @since 13.0.0
|
||||||
|
*/
|
||||||
|
public function clearGroupCache($gid);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the LDAP attribute name for the user's display name
|
* Get the LDAP attribute name for the user's display name
|
||||||
* @param string $uid user id
|
* @param string $uid user id
|
||||||
|
|
Loading…
Reference in a new issue