Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
[LDAP] throw exception only against prov api
- unbreaks functionality for end users when on demand mapping takes
  place

Signed-off-by: Arthur Schiwon <[email protected]>
  • Loading branch information
blizzz committed Oct 18, 2022
commit 50d4963772f290463c8addb73f7c5f392050bbba
21 changes: 20 additions & 1 deletion apps/user_ldap/lib/Mapping/UserMapping.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@

use OCP\HintException;
use OCP\IDBConnection;
use OCP\IRequest;
use OCP\Server;
use OCP\Support\Subscription\IAssertion;

/**
Expand All @@ -34,6 +36,7 @@
class UserMapping extends AbstractMapping {

private IAssertion $assertion;
protected const PROV_API_REGEX = '/\/ocs\/v[1-9].php\/cloud\/(groups|users)/';

public function __construct(IDBConnection $dbc, IAssertion $assertion) {
$this->assertion = $assertion;
Expand All @@ -44,7 +47,23 @@ public function __construct(IDBConnection $dbc, IAssertion $assertion) {
* @throws HintException
*/
public function map($fdn, $name, $uuid): bool {
$this->assertion->createUserIsLegit();
try {
$this->assertion->createUserIsLegit();
} catch (HintException $e) {
static $isProvisioningApi = null;

if ($isProvisioningApi === null) {
$request = Server::get(IRequest::class);
$isProvisioningApi = \preg_match(self::PROV_API_REGEX, $request->getRequestUri()) === 1;
}
if ($isProvisioningApi) {
// only throw when prov API is being used, since functionality
// should not break for end users (e.g. when sharing).
// On direct API usage, e.g. on users page, this is desired.
throw $e;
}
return false;
}
return parent::map($fdn, $name, $uuid);
}

Expand Down