From 1a8f92b856cddb612b064e14217cf6bb1c4a17e4 Mon Sep 17 00:00:00 2001 From: Darin McBride Date: Thu, 6 Aug 2015 16:56:06 -0600 Subject: [PATCH] Add view_authorized_sitters to see who can sit for you. --- lib/Lacuna/RPC/Empire.pm | 27 ++++++++++++++++++++++++--- lib/Lacuna/Session.pm | 7 +++++++ 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/lib/Lacuna/RPC/Empire.pm b/lib/Lacuna/RPC/Empire.pm index 53af81b5..d7272ae8 100644 --- a/lib/Lacuna/RPC/Empire.pm +++ b/lib/Lacuna/RPC/Empire.pm @@ -1154,8 +1154,9 @@ sub authorize_sitters { my ($self, $session_id, @sitters) = @_; my $session = $self->get_session($session_id); - my $baby_id = $session->empire_id; + $session->check_captcha; + my $baby_id = $session->empire_id; my $rs = Lacuna->db->resultset('SitterAuths'); for my $sitter (@sitters) { @@ -1168,7 +1169,27 @@ sub authorize_sitters $auth->update_or_insert; } - return { status => $self->format_status($empire) }; + return { status => $self->format_status($session->empire) }; +} + +sub view_authorized_sitters +{ + my ($self, $session_id) = @_; + my $session = $self->get_session($session_id); + + my $baby_id = $session->empire_id; + my $rs = Lacuna->db->resultset('SitterAuths')->search({baby_id => $baby_id}); + + my @auths; + while (my $auth = $rs->next) + { + push @auths, { + id => $auth->sitter_id, + name => $auth->sitter->name, + }; + } + + return { status => $self->format_status($session->empire), auths => \@auths }; } __PACKAGE__->register_rpc_method_names( @@ -1195,7 +1216,7 @@ __PACKAGE__->register_rpc_method_names( get_full_status get_status boost_building boost_storage boost_water boost_energy boost_ore boost_food boost_happiness boost_spy_training view_boosts - authorize_sitters + authorize_sitters view_authorized_sitters ), ); diff --git a/lib/Lacuna/Session.pm b/lib/Lacuna/Session.pm index 86e120fc..9177fbac 100644 --- a/lib/Lacuna/Session.pm +++ b/lib/Lacuna/Session.pm @@ -18,6 +18,7 @@ sub BUILD { my $session_data = Lacuna->cache->get_and_deserialize('session', $self->id); if (defined $session_data && ref $session_data eq 'HASH') { $self->api_key($session_data->{api_key}); + $self->real_empire_id($session_data->{real_empire_id}); $self->empire_id($session_data->{empire_id}); $self->extended($session_data->{extended}); $self->_is_sitter($session_data->{is_sitter}); @@ -60,6 +61,10 @@ has empire_id => ( }, ); +has real_empire_id => ( + is => 'rw', +); + has ip_address => ( is => 'rw', ); @@ -119,6 +124,7 @@ sub update { 'session', $self->id, { + real_empire_id => $self->real_empire_id, empire_id => $self->empire_id, api_key => $self->api_key, extended => $self->extended, @@ -152,6 +158,7 @@ sub end { sub start { my ($self, $empire, $options) = @_; + $self->real_empire_id($empire->id) if !$options->{is_sitter}; $self->empire_id($empire->id); $self->api_key($options->{api_key}); $self->_is_sitter($options->{is_sitter}); -- 2.51.2