Add device token management and server connection detection

This commit is contained in:
Ben Goldsworthy 2020-11-28 19:53:19 +00:00
parent 0d4202562f
commit 9d4c736d95
14 changed files with 4990 additions and 7 deletions

View file

@ -137,11 +137,13 @@ sub startup {
# Always available api routes
my $api_public = $api_public_get->under('/')->to('api-auth#check_json');
$api_public->post('/test-connection')->to('api-auth#test_connection');
$api_public->post('/login')->to('api-auth#post_login');
$api_public->post('/register')->to('api-register#post_register');
$api_public->post('/logout')->to('api-auth#post_logout');
$api_public->post('/feedback')->to('api-feedback#post_feedback');
$api_public->post('/add-device-token')->to('api-devices#add_token');
$api_public->post('/get-device-tokens')->to('api-devices#get_tokens');
$api_public->post('/send-message')->to('api-sendmessage#post_message');
# Private, must be authenticated api routes

View file

@ -60,6 +60,18 @@ sub auth {
return 0;
}
sub test_connection {
my $c = shift;
return $c->render(
json => {
success => Mojo::JSON->true,
message => 'Database connection successful',
},
status => 200,
);
}
sub post_login {
my $c = shift;

View file

@ -10,10 +10,12 @@ use Carp;
has error_messages => sub {
return {
devicetoken => {
required => { message => 'Device token is required or not registered', status => 400 },
required => { message => 'Device token is required', status => 400 },
in_resultset => { message => 'Device token not found', status => 400 },
},
sender => {
required => { message => 'Sender name is required', status => 400 },
in_resultset => { message => 'Sender org not found', status => 400 },
},
messagetext => {
required => { message => 'Message is required', status => 400 },
@ -70,10 +72,8 @@ sub post_message {
my $validation = $c->validation;
$validation->input( $c->stash->{api_json} );
my $user_rs = $c->schema->resultset('User');
$validation->required('devicetoken');
$validation->required('sender');
$validation->required('devicetoken')->in_resultset('token', $c->schema->resultset('DeviceToken'));
$validation->required('sender')->in_resultset('name', $c->schema->resultset('Organisation'));
$validation->required('messagetext');
return $c->api_validation_error if $validation->has_error;

View file

@ -6,7 +6,7 @@ use warnings;
use base 'DBIx::Class::Schema';
our $VERSION = 31;
our $VERSION = 32;
__PACKAGE__->load_namespaces;