diff options
author | Roeland Jago Douma <rullzer@users.noreply.github.com> | 2018-12-07 13:37:34 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-07 13:37:34 +0100 |
commit | 4f47dff08632c4b66187d1f2115261a9b3b7a187 (patch) | |
tree | 62679d9cdfe382954782a005d89eec9a8f089520 | |
parent | b7410d54d67b7e9471656e7ea95b368ad61ae122 (diff) | |
parent | a670a9e443aca232e2a8986aae15eac38dc8499f (diff) | |
download | nextcloud-server-4f47dff08632c4b66187d1f2115261a9b3b7a187.tar.gz nextcloud-server-4f47dff08632c4b66187d1f2115261a9b3b7a187.zip |
Merge pull request #12886 from nextcloud/td/oauth2/strict_db
Move OAuth2 db code to QBMapper and make it strict
-rw-r--r-- | apps/oauth2/lib/Db/AccessTokenMapper.php | 23 | ||||
-rw-r--r-- | apps/oauth2/lib/Db/ClientMapper.php | 42 |
2 files changed, 35 insertions, 30 deletions
diff --git a/apps/oauth2/lib/Db/AccessTokenMapper.php b/apps/oauth2/lib/Db/AccessTokenMapper.php index 2661c853372..e50ea9bbd3e 100644 --- a/apps/oauth2/lib/Db/AccessTokenMapper.php +++ b/apps/oauth2/lib/Db/AccessTokenMapper.php @@ -1,4 +1,5 @@ <?php +declare(strict_types=1); /** * @copyright Copyright (c) 2017 Lukas Reschke <lukas@statuscode.ch> * @@ -22,11 +23,12 @@ namespace OCA\OAuth2\Db; use OCA\OAuth2\Exceptions\AccessTokenNotFoundException; -use OCP\AppFramework\Db\Mapper; +use OCP\AppFramework\Db\IMapperException; +use OCP\AppFramework\Db\QBMapper; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\IDBConnection; -class AccessTokenMapper extends Mapper { +class AccessTokenMapper extends QBMapper { /** * @param IDBConnection $db @@ -40,19 +42,20 @@ class AccessTokenMapper extends Mapper { * @return AccessToken * @throws AccessTokenNotFoundException */ - public function getByCode($code) { + public function getByCode(string $code): AccessToken { $qb = $this->db->getQueryBuilder(); $qb ->select('*') ->from($this->tableName) ->where($qb->expr()->eq('hashed_code', $qb->createNamedParameter(hash('sha512', $code)))); - $result = $qb->execute(); - $row = $result->fetch(); - $result->closeCursor(); - if($row === false) { - throw new AccessTokenNotFoundException(); + + try { + $token = $this->findEntity($qb); + } catch (IMapperException $e) { + throw new AccessTokenNotFoundException('Could not find access token', 0, $e); } - return AccessToken::fromRow($row); + + return $token; } /** @@ -60,7 +63,7 @@ class AccessTokenMapper extends Mapper { * * @param int $id */ - public function deleteByClientId($id) { + public function deleteByClientId(int $id) { $qb = $this->db->getQueryBuilder(); $qb ->delete($this->tableName) diff --git a/apps/oauth2/lib/Db/ClientMapper.php b/apps/oauth2/lib/Db/ClientMapper.php index 9df07e2789f..bfd3d949d1c 100644 --- a/apps/oauth2/lib/Db/ClientMapper.php +++ b/apps/oauth2/lib/Db/ClientMapper.php @@ -1,4 +1,5 @@ <?php +declare(strict_types=1); /** * @copyright Copyright (c) 2017 Lukas Reschke <lukas@statuscode.ch> * @@ -22,11 +23,12 @@ namespace OCA\OAuth2\Db; use OCA\OAuth2\Exceptions\ClientNotFoundException; -use OCP\AppFramework\Db\Mapper; +use OCP\AppFramework\Db\IMapperException; +use OCP\AppFramework\Db\QBMapper; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\IDBConnection; -class ClientMapper extends Mapper { +class ClientMapper extends QBMapper { /** * @param IDBConnection $db @@ -40,50 +42,50 @@ class ClientMapper extends Mapper { * @return Client * @throws ClientNotFoundException */ - public function getByIdentifier($clientIdentifier) { + public function getByIdentifier(string $clientIdentifier): Client { $qb = $this->db->getQueryBuilder(); $qb ->select('*') ->from($this->tableName) ->where($qb->expr()->eq('client_identifier', $qb->createNamedParameter($clientIdentifier))); - $result = $qb->execute(); - $row = $result->fetch(); - $result->closeCursor(); - if($row === false) { - throw new ClientNotFoundException(); + + try { + $client = $this->findEntity($qb); + } catch (IMapperException $e) { + throw new ClientNotFoundException('could not find client '.$clientIdentifier, 0, $e); } - return Client::fromRow($row); + return $client; } /** - * @param string $uid internal uid of the client + * @param int $id internal id of the client * @return Client * @throws ClientNotFoundException */ - public function getByUid($uid) { + public function getByUid(int $id): Client { $qb = $this->db->getQueryBuilder(); $qb ->select('*') ->from($this->tableName) - ->where($qb->expr()->eq('id', $qb->createNamedParameter($uid, IQueryBuilder::PARAM_INT))); - $result = $qb->execute(); - $row = $result->fetch(); - $result->closeCursor(); - if($row === false) { - throw new ClientNotFoundException(); + ->where($qb->expr()->eq('id', $qb->createNamedParameter($id, IQueryBuilder::PARAM_INT))); + + try { + $client = $this->findEntity($qb); + } catch (IMapperException $e) { + throw new ClientNotFoundException('could not find client with id '.$id, 0, $e); } - return Client::fromRow($row); + return $client; } /** * @return Client[] */ - public function getClients() { + public function getClients(): array { $qb = $this->db->getQueryBuilder(); $qb ->select('*') ->from($this->tableName); - return $this->findEntities($qb->getSQL()); + return $this->findEntities($qb); } } |