From 67f4dcdba58fe4fa22b6f4486779fe75623dcb61 Mon Sep 17 00:00:00 2001 From: KaroGil Date: Thu, 28 Nov 2024 09:52:35 +0100 Subject: [PATCH 1/3] added functionality to delete own polls --- FeedApp/fullstack_db.mv.db | Bin 45056 -> 61440 bytes .../FeedApp/controller/PollController.java | 15 +++++++++++++-- Frontend/src/components/SeePolls.vue | 15 +++++++++++++++ 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/FeedApp/fullstack_db.mv.db b/FeedApp/fullstack_db.mv.db index 0d61d90cb16560e9b7bfb497a414676055221264..d95d8b599d4858f71fc1b0d9b95a1ebc38bb6d12 100644 GIT binary patch literal 61440 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 pE6o32gfDOSOvEx|^8fLy1?sW%{Jlv2w createPoll( @RequestHeader("Authorization") String public Poll getPoll(@PathVariable UUID pollId) { return manager.getPoll(pollId); } @DeleteMapping - public void deleteAllPolls() { manager.deleteAllPolls(); } + public void deleteAllPolls() { + manager.deleteAllPolls(); + } @DeleteMapping("/{pollId}") - public void deletePoll(@PathVariable UUID pollId) { manager.deletePoll(pollId); } + public void deletePoll(@RequestHeader("Authorization") String token, @PathVariable UUID pollId) { + String jwt = token.replace("Bearer ", "").trim(); + UUID userId = JwtService.parseToken(jwt); + logger.info("UserId from token: {}", userId); + logger.info("PollId from token: {}", pollId); + logger.info("UserId equals to pollcreatorid: {}", userId == getPoll(pollId).getCreatorUserID()); + if(userId.equals(getPoll(pollId).getCreatorUserID())){ + manager.deletePoll(pollId); + } + } @PutMapping("/{pollId}") public void updatePoll(@PathVariable UUID pollId, @RequestBody Poll poll) { manager.updatePoll(pollId, poll); } diff --git a/Frontend/src/components/SeePolls.vue b/Frontend/src/components/SeePolls.vue index 9c315df..aafa91b 100644 --- a/Frontend/src/components/SeePolls.vue +++ b/Frontend/src/components/SeePolls.vue @@ -58,6 +58,16 @@ async function vote(pollid: string, optionid: number) { } } +// Lets a user delete their own polls +async function deleteOwnPoll(id: number){ + try { + const url = `/polls/${id}` + await defaultFetch(url, 'DELETE', getUserToken()) + } catch (error) { + console.error('Error:', error) + } +} + // Fetch the poll owners async function fetchPollOwners() { try { @@ -90,6 +100,7 @@ fetchPolls()
  • {{ poll.question }} created by: {{ pollOwners[poll.creatorUserID]?.email || 'Unknown' }} +

    X