Gid collision: append SAML prefix to gid

Signed-off-by: Jonathan Treffler <mail@jonathan-treffler.de>
Signed-off-by: Giuliano Mele <giuliano.mele@verdigado.com>
This commit is contained in:
Giuliano Mele 2021-07-26 16:52:34 +02:00 committed by Jonathan Treffler
parent 5752511ff8
commit 68f76b66c7
2 changed files with 19 additions and 11 deletions

View file

@ -50,7 +50,14 @@ try {
$groupBackend = new \OCA\User_SAML\GroupBackend(\OC::$server->getDatabaseConnection());
\OC::$server->getGroupManager()->addBackend($groupBackend);
\OC::$server->registerService('SAMLGroupManager', function(\OCA\User_SAML\GroupBackend $groupBackend) {
$samlSettings = new \OCA\User_SAML\SAMLSettings(
$urlGenerator,
$config,
$request,
$session
);
\OC::$server->registerService('SAMLGroupManager', function(\OCA\User_SAML\GroupBackend $groupBackend, $samlSettings) {
return new OCA\User_SAML\GroupManager(
\OC::$server->getDatabaseConnection(),
\OC::$server->query('SAMLGroupDuplicateChecker'),
@ -58,17 +65,11 @@ $groupBackend = new \OCA\User_SAML\GroupBackend(\OC::$server->getDatabaseConnect
\OC::$server->getUserManager(),
$groupBackend,
\OC::$server->getConfig(),
\OC::$server->getJobList()
\OC::$server->getJobList(),
$samlSettings,
);
});
$samlSettings = new \OCA\User_SAML\SAMLSettings(
$urlGenerator,
$config,
$request,
$session
);
$userData = new \OCA\User_SAML\UserData(
new \OCA\User_SAML\UserResolver(\OC::$server->getUserManager()),
$samlSettings,

View file

@ -5,6 +5,7 @@ namespace OCA\User_SAML;
use OC\BackgroundJob\JobList;
use OC\Hooks\PublicEmitter;
use OCA\User_SAML\Jobs\MigrateGroups;
use OCA\User_SAML\SAMLSettings;
use OCP\IConfig;
use OCP\IDBConnection;
use OCP\IGroup;
@ -35,6 +36,8 @@ class GroupManager
private $config;
/** @var JobList */
private $jobList;
/** @var SAMLSettings */
private $settings;
public function __construct(
@ -44,7 +47,8 @@ class GroupManager
IUserManager $userManager,
GroupBackend $ownGroupBackend,
IConfig $config,
JobList $jobList
JobList $jobList,
SAMLSettings $settings
) {
$this->db = $db;
$this->duplicateChecker = $duplicateChecker;
@ -53,6 +57,7 @@ class GroupManager
$this->ownGroupBackend = $ownGroupBackend;
$this->config = $config;
$this->jobList = $jobList;
$this->settings = $settings;
}
public function replaceGroups($uid, $samlGroups) {
@ -106,7 +111,9 @@ class GroupManager
$group = $this->createGroupInBackend($gid);
} else if($e->getCode() === 2) {
//FIXME: probably need config flag. Previous to 17, gid was used as displayname
$group = $this->createGroupInBackend('__saml__' . $gid, $gid);
$idpPrefix = $this->settings->getPrefix('saml-attribute-mapping-group_mapping_prefix');
$groupPrefix = $this->config->getAppValue('user_saml', $idpPrefix . 'saml-attribute-mapping-group_mapping_prefix', 'SAML_');
$group = $this->createGroupInBackend($groupPrefix . $gid, $gid);
} else {
throw $e;
}