Check for archived cards before action in backend

This commit is contained in:
Julius Haertl
2016-08-16 13:13:54 +02:00
parent 376ad88df2
commit a57d270a93
8 changed files with 56 additions and 81 deletions

View File

@@ -58,8 +58,6 @@ return [
['name' => 'public#board', 'url' => '/public/board/ajax/:hash', 'verb' => 'GET'],
// TODO: API for external access
//['name' => 'api#index', 'url' => '/api/', 'verb' => 'GET'],
// ['name' => 'note_api#preflighted_cors', 'url' => '/api/v1/{path}/', 'verb' => 'OPTIONS', 'requirements' => ['path' => '.+']]
]
];

View File

@@ -1,23 +0,0 @@
<?php
namespace OCA\Deck\Controller;
use OCP\IRequest;
use OCP\AppFramework\ApiController as BaseApiController;
class ApiController extends BaseApiController {
public function __construct($appName,
IRequest $request){
parent::__construct($appName, $request);
}
/**
* @PublicPage
* @NoCSRFRequired
* @CORS
*/
public function index() {
return [
'apiLevels' => ['v1']
];
}
}

View File

@@ -1,55 +0,0 @@
<?php
// TODO: Implement LATER
namespace OCA\Deck\Controller;
use OCA\Deck\Service\BoardService;
use OCP\IRequest;
use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\ApiController as BaseApiController;
class BoardApiController extends BaseApiController {
private $userId;
public function __construct($appName,
IRequest $request,
BoardService $cardService,
$userId){
parent::__construct($appName, $request);
$this->userId = $userId;
$this->boardService = $cardService;
}
/**
* @NoAdminRequired
* @NoCSRFRequired
* @CORS
*/
public function index() {
return new DataResponse($this->boardService->findAll($this->userId));
}
/**
* @NoAdminRequired
* @NoCSRFRequired
* @CORS
*/
public function create($title, $color) {
return new DataResponse($this->boardService->create($title, $this->userId, $color));
}
/**
* @NoAdminRequired
* @NoCSRFRequired
* @CORS
*/
public function update($id, $title, $color) {
return new DataResponse($this->boardService->create($title, $this->userId, $color));
}
/**
* @NoAdminRequired
* @NoCSRFRequired
* @CORS
*/
public function delete($id) {
return new DataResponse($this->boardService->create($title, $this->userId, $color));
}
}

View File

@@ -18,4 +18,14 @@ class AclMapper extends DeckMapper {
return $this->findEntities($sql, [$boardId, $boardId], $limit, $offset);
}
public function findAllForCard($cardId, $userId) {
$findBoardId = "(SELECT board_id from oc_deck_stacks WHERE id IN (SELECT stack_id from oc_deck_cards WHERE id = 15))";
$sql = "SELECT 0, id, 'user', owner, 1, 1, 1, 1 as owner FROM `oc_deck_boards` WHERE `id` IN (SELECT board_id from oc_deck_stacks WHERE id IN (SELECT stack_id from oc_deck_cards WHERE id = 15))
UNION
SELECT id, board_id, type, participant, permission_write, permission_invite, permission_manage, 0 FROM oc_deck_board_acl
WHERE participant = 'admin' AND board_id IN (SELECT board_id from oc_deck_stacks WHERE id IN (SELECT stack_id from oc_deck_cards WHERE id = 15));";
}
}

View File

@@ -86,4 +86,5 @@ class CardMapper extends Mapper {
$stmt->execute();
}
}

View File

@@ -0,0 +1,13 @@
<?php
namespace OCA\Deck\Service;
class CardArchivedException extends \Exception {
/**
* Constructor
* @param string $msg the error message
*/
public function __construct($msg){
parent::__construct($msg);
}
}

View File

@@ -2,6 +2,7 @@
namespace OCA\Deck\Service;
use OC\OCS\Exception;
use OCP\ILogger;
use OCP\IL10N;
use OCP\AppFramework\Db\DoesNotExistException;
@@ -41,6 +42,9 @@ class CardService {
public function update($id, $title, $stackId, $type, $order, $description, $owner) {
$card = $this->cardMapper->find($id);
if($card->getArchived()) {
throw new CardArchivedException();
}
$card->setTitle($title);
$card->setStackId($stackId);
$card->setType($type);
@@ -52,6 +56,9 @@ class CardService {
public function rename($id, $title) {
$card = $this->cardMapper->find($id);
if($card->getArchived()) {
throw new CardArchivedException();
}
$card->setTitle($title);
return $this->cardMapper->update($card);
}
@@ -59,6 +66,9 @@ class CardService {
$cards = $this->cardMapper->findAll($stackId);
$i = 0;
foreach ($cards as $card) {
if($card->getArchived()) {
throw new CardArchivedException();
}
if($card->id === $id) {
$card->setOrder($order);
}
@@ -90,10 +100,18 @@ class CardService {
}
public function assignLabel($userId, $cardId, $labelId) {
$card = $this->cardMapper->find($cardId);
if($card->getArchived()) {
throw new CardArchivedException();
}
$this->cardMapper->assignLabel($cardId, $labelId);
}
public function removeLabel($userId, $cardId, $labelId) {
$card = $this->cardMapper->find($cardId);
if($card->getArchived()) {
throw new CardArchivedException();
}
$this->cardMapper->removeLabel($cardId, $labelId);
}
}

View File

@@ -0,0 +1,13 @@
<?php
namespace OCA\Deck\Service;
class ServicePermissionException extends \Exception {
/**
* Constructor
* @param string $msg the error message
*/
public function __construct($msg){
parent::__construct($msg);
}
}