1
0
mirror of https://github.com/dani/vroom.git synced 2024-06-18 04:09:14 +02:00

CLeanups in invitation response handling

This commit is contained in:
Daniel Berteaud 2014-10-19 12:25:03 +02:00
parent 971b114251
commit 81f1ece9ba
2 changed files with 26 additions and 24 deletions

View File

@ -3,14 +3,13 @@
%= include 'public_toolbar'
<div class="container-fluid">
<div class="well publicForm">
<form role="form" action="<%= $self->url_for('/invitation') %>" method="post">
<form role="form" method="post">
<legend class="text-center">
<%=l 'INVITATION_RESPONSE' %>
</legend>
<p class="text-center">
<%=l 'CANNOT_JOIN_NOW' %>
</p>
<input name="token" type="hidden" value="<%= $inviteId %>"/>
<div class="form-group">
<label for="response">
<%=l 'WILL_YOU_JOIN' %>
@ -38,7 +37,7 @@
<%=l 'CLICK_SEND_OR_JOIN_NOW' %>
</p>
</div>
<a class="btn btn-default btn-lg" role="button" href="<%= $self->get_url('/') . $room %><% if ($inviteId ne ''){ %>?token=<%= $inviteId %><% } %>">
<a class="btn btn-default btn-lg" role="button" href="<%= $self->get_url('/') . $room . '/' . $token %>">
<%=l 'JOIN_THIS_ROOM' %>
</a>
<button type="submit" class="btn btn-primary btn-lg">

View File

@ -684,16 +684,20 @@ helper get_invitation_list => sub {
return $sth->fetchall_hashref('id');
};
helper respond_invitation => sub {
helper respond_to_invitation => sub {
my $self = shift;
my ($id,$response,$message) = @_;
my ($token,$response,$message) = @_;
my $sth = eval {
$self->db->prepare('UPDATE `email_invitations`
SET `response`=?,
`message`=?
WHERE `token`=?');
} || return undef;
$sth->execute($response,$message,$id) || return undef;
};
$sth->execute(
$response,
$message,
$token
);
return 1;
};
@ -885,12 +889,12 @@ get '/kicked/(:room)' => sub {
} => 'kicked';
# Route for invitition response
get '/invitation' => sub {
any [qw(GET POST)] => '/invitation/:token' => { token => '' } => sub {
my $self = shift;
my $inviteId = $self->param('token') || '';
my $token = $self->stash('token');
# Delete expired invitation now
$self->delete_invitations;
my $invite = $self->get_invitation_by_token($inviteId);
my $invite = $self->get_invitation_by_token($token);
my $room = $self->get_room_by_id($invite->{room_id});
if (!$invite || !$room){
return $self->render('error',
@ -899,21 +903,20 @@ get '/invitation' => sub {
room => $room
);
}
$self->render('invitation',
inviteId => $inviteId,
room => $room->{name},
);
};
post '/invitation' => sub {
my $self = shift;
my $id = $self->param('token') || '';
my $response = $self->param('response') || 'decline';
my $message = $self->param('message') || '';
if ($response !~ m/^(later|decline)$/ || !$self->respond_invitation($id,$response,$message)){
return $self->render('error');
if ($self->req->method eq 'GET'){
return $self->render('invitation',
token => $token,
room => $room->{name},
);
}
elsif ($self->req->method eq 'POST'){
my $response = $self->param('response') || 'decline';
my $message = $self->param('message') || '';
if ($response !~ m/^(later|decline)$/ || !$self->respond_to_invitation($token,$response,$message)){
return $self->render('error');
}
return $self->render('invitation_thanks');
}
$self->render('invitation_thanks');
};
# This handler creates a new room