Browse Source

Move OAuth2 db code to QBMapper and make it strict

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
tags/v16.0.0alpha1
Roeland Jago Douma 5 years ago
parent
commit
a670a9e443
No account linked to committer's email address
2 changed files with 35 additions and 30 deletions
  1. 13
    10
      apps/oauth2/lib/Db/AccessTokenMapper.php
  2. 22
    20
      apps/oauth2/lib/Db/ClientMapper.php

+ 13
- 10
apps/oauth2/lib/Db/AccessTokenMapper.php View File

@@ -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)

+ 22
- 20
apps/oauth2/lib/Db/ClientMapper.php View File

@@ -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…
Cancel
Save