1
0
mirror of https://framagit.org/tykayn/date-poll-api synced 2023-08-25 08:23:11 +02:00

call to update a poll with a token

This commit is contained in:
Baptiste Lemoine 2020-04-17 16:12:35 +02:00
parent 603abc5332
commit 33a71d05e4

View File

@ -106,7 +106,7 @@ class PollController extends FramadateController {
/** /**
* @Put( * @Put(
* path = "/{id}", * path = "/{id}/{token}",
* name = "update_poll", * name = "update_poll",
* requirements = {"content"="\w+", "poll_id"="\d+"} * requirements = {"content"="\w+", "poll_id"="\d+"}
* ) * )
@ -114,8 +114,15 @@ class PollController extends FramadateController {
public public
function updatePollConfig( function updatePollConfig(
Poll $poll, Poll $poll,
string $token,
Request $request Request $request
) { ) {
if ( $poll->getAdminKey() !== $token ) {
return $this->json( [
'message' => 'you are NOT allowed to update the poll ' . $poll->getTitle(),
],
403 );
}
// TODO check validity of request // TODO check validity of request
// update only if we have the admin key // update only if we have the admin key
@ -347,13 +354,13 @@ class PollController extends FramadateController {
} }
/** /**
* Delete all expired polls and their children * Check is a slug is already taken by a poll
* @Get( * @Get(
* path = "/check-slug-is-unique/{slug}", * path = "/check-slug-is-unique/{slug}",
* name = "check_slug_is_unique", * name = "check_slug_is_unique",
* ) * )
*/ */
public function checkSlugIsUnique( $slug ) { public function checkSlugIsUniqueAction( $slug ) {
$emPoll = $this->getDoctrine()->getRepository( Poll::class ); $emPoll = $this->getDoctrine()->getRepository( Poll::class );
$found = $emPoll->findOneBySlug( $slug ); $found = $emPoll->findOneBySlug( $slug );
if ( $found ) { if ( $found ) {
@ -377,4 +384,56 @@ class PollController extends FramadateController {
} }
/**
* Delete all expired polls and their children
* @Get(
* path = "/admin/{token}",
* name = "check_slug_is_unique",
* )
*/
public function getAdministrationConfig( $token ) {
$emPoll = $this->getDoctrine()->getRepository( Poll::class );
$pollFound = $emPoll->findOneByAdminKey( $token );
if ( $pollFound ) {
$poll = $pollFound;
$comments = [];
$stacks = [];
$choices = [];
foreach ( $poll->getComments() as $c ) {
$comments[] = $c->display();
}
foreach ( $poll->getStacksOfVotes() as $c ) {
$stacks[] = $c->display();
}
foreach ( $poll->getChoices() as $c ) {
$choices[] = $c->display();
}
$returnedPoll = [
'message' => 'your poll config',
'poll' => $poll,
'stacks_count' => count( $poll->getStacksOfVotes() ),
'stacks' => $stacks,
'choices_count' => $poll->computeAnswers(),
'choices' => $choices,
'comments' => $comments,
'comments_count' => count( $comments ),
'token' => $token,
];
return $this->json( $returnedPoll,
200 );
}
return $this->json( [
'message' => 'You are not allowed to do anything with this token',
'data' => [
'token' => $token,
],
],
403 );
}
} }