diff --git a/php/model/ArticleManagerDAO.php b/php/model/ArticleManagerDAO.php index 01826e1..fe7af03 100644 --- a/php/model/ArticleManagerDAO.php +++ b/php/model/ArticleManagerDAO.php @@ -40,15 +40,15 @@ interface ArticleManagerDAO public function updateArticle($id, $article, $author); /** - * Löscht einen Beitrag aus übergebener ID. - * TODO: sollte auch die Autorisierung prüfen... + * Löscht einen Beitrag aus übergebener ID und dem Nutzer, der die Löschung ausführt. * @param $id + * @param $author * @return void * @throws InternalServerErrorException * @throws NotFoundException * @throws UnauthorizedAccessException */ - public function deleteArticle($id); + public function deleteArticle($id, $author); /** * Beitrag aufrufen. diff --git a/php/model/DatabaseArticleManager.php b/php/model/DatabaseArticleManager.php index 72de769..20c7484 100644 --- a/php/model/DatabaseArticleManager.php +++ b/php/model/DatabaseArticleManager.php @@ -147,9 +147,18 @@ class DatabaseArticleManager implements ArticleManagerDAO { } } - public function deleteArticle($id) + public function deleteArticle($id, $author) { - // TODO: Sollte auch die Autorisierung prüfen... + $article = getArticle($id); + if (empty($article)) { + throw new NotFoundException("not_found_article"); + } + + // Berechtigungsprüfung: + if ($article->getAuthor() !== $author) { + throw new UnauthorizedAccessException("unauthorized_access"); + } + try { $db = $this->getConnection(); $sql = "DELETE FROM articles WHERE id = :id;"; diff --git a/php/model/LocalArticleManager.php b/php/model/LocalArticleManager.php index 62879e9..aff23c1 100644 --- a/php/model/LocalArticleManager.php +++ b/php/model/LocalArticleManager.php @@ -102,9 +102,18 @@ class LocalArticleManager implements ArticleManagerDAO { } } - public function deleteArticle($id) + public function deleteArticle($id, $author) { - // TODO: Sollte auch die Autorisierung prüfen... + $article = getArticle($id); + if (empty($article)) { + throw new NotFoundException("not_found_article"); + } + + // Berechtigungsprüfung: + if ($article->getAuthor() !== $author) { + throw new UnauthorizedAccessException("unauthorized_access"); + } + $articles = $this->getAllArticles(); $articleFound = false;