Add proper error handling when user/group cannot be found

Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
Julius Härtl
2017-05-04 11:26:45 +02:00
parent a6b6842e2b
commit 860cbab1d3
3 changed files with 15 additions and 5 deletions

View File

@@ -176,7 +176,7 @@ class BoardMapper extends DeckMapper implements IPermissionMapper {
return new User($user); return new User($user);
} else { } else {
\OC::$server->getLogger()->debug('User ' . $acl->getId() . ' not found when mapping acl ' . $acl->getParticipant()); \OC::$server->getLogger()->debug('User ' . $acl->getId() . ' not found when mapping acl ' . $acl->getParticipant());
return $participant; return null;
} }
} }
if($acl->getType() === Acl::PERMISSION_TYPE_GROUP) { if($acl->getType() === Acl::PERMISSION_TYPE_GROUP) {
@@ -185,7 +185,7 @@ class BoardMapper extends DeckMapper implements IPermissionMapper {
return new Group($group); return new Group($group);
} else { } else {
\OC::$server->getLogger()->debug('Group ' . $acl->getId() . ' not found when mapping acl ' . $acl->getParticipant()); \OC::$server->getLogger()->debug('Group ' . $acl->getId() . ' not found when mapping acl ' . $acl->getParticipant());
return $participant; return null;
} }
} }
throw new \Exception('Unknown permission type for mapping Acl'); throw new \Exception('Unknown permission type for mapping Acl');
@@ -198,7 +198,11 @@ class BoardMapper extends DeckMapper implements IPermissionMapper {
public function mapOwner(Board &$board) { public function mapOwner(Board &$board) {
$userManager = $this->userManager; $userManager = $this->userManager;
$board->resolveRelation('owner', function($owner) use (&$userManager) { $board->resolveRelation('owner', function($owner) use (&$userManager) {
return new User($userManager->get($owner)); $user = $userManager->get($owner);
if($user !== null) {
return new User($user);
}
return null;
}); });
} }

View File

@@ -31,6 +31,7 @@ use OCP\IUserManager;
class CardMapper extends DeckMapper implements IPermissionMapper { class CardMapper extends DeckMapper implements IPermissionMapper {
private $labelMapper; private $labelMapper;
private $userManager;
public function __construct(IDBConnection $db, LabelMapper $labelMapper, IUserManager $userManager) { public function __construct(IDBConnection $db, LabelMapper $labelMapper, IUserManager $userManager) {
parent::__construct($db, 'deck_cards', '\OCA\Deck\Db\Card'); parent::__construct($db, 'deck_cards', '\OCA\Deck\Db\Card');
@@ -131,7 +132,11 @@ class CardMapper extends DeckMapper implements IPermissionMapper {
public function mapOwner(Card &$card) { public function mapOwner(Card &$card) {
$userManager = $this->userManager; $userManager = $this->userManager;
$card->resolveRelation('owner', function($owner) use (&$userManager) { $card->resolveRelation('owner', function($owner) use (&$userManager) {
return new User($userManager->get($owner)); $user = $userManager->get($owner);
if($user !== null) {
return new User($user);
}
return null;
}); });
} }

View File

@@ -25,7 +25,8 @@ namespace OCA\Deck\Db;
class RelationalObject implements \JsonSerializable { class RelationalObject implements \JsonSerializable {
private $primaryKey; protected $primaryKey;
protected $object;
/** /**
* RelationalObject constructor. * RelationalObject constructor.