Merge pull request #12886 from nextcloud/td/oauth2/strict_db
Move OAuth2 db code to QBMapper and make it strict
This commit is contained in:
commit
4f47dff086
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue