package Hoppy::Service::Login; use strict; use warnings; use Data::GUID; use base qw( Hoppy::Service::Base ); sub work { my $self = shift; my $args = shift; my $in_data = $args->{in_data}; my $poe = $args->{poe}; my $session_id = $poe->session->ID; ## It can generate and distribute ID automatically if ( $in_data->{params}->{auto} ) { $args->{user_id} = Data::GUID->new->as_string; } else { $args->{user_id} = $in_data->{params}->{user_id}; } ## login my $c = $self->context; my $result = $c->room->login( { user_id => $args->{user_id}, password => $in_data->{params}->{password}, room_id => $in_data->{params}->{room_id}, session_id => $session_id, }, $poe ); ## response if ( $in_data->{id} ) { ## set out_data my $out_data = {}; if ($result) { $out_data = { result => { login_id => $args->{user_id}, login_time => time() }, error => "" }; } else { $out_data = { result => "", error => "login failed" }; } $out_data->{id} = $in_data->{id}; ## respond it my $serialized = $c->formatter->serialize($out_data); $c->unicast( { session_id => $session_id, user_id => $args->{user_id}, message => $serialized } ); } if ( my $hook = $c->hook->{login} ) { $hook->work($args); } } 1; __END__ =head1 NAME Hoppy::Service::Login - Default login service. =head1 SYNOPSIS =head1 DESCRIPTION Default login service. =head1 METHODS =head2 work =head1 AUTHOR Takeshi Miki Emiki@cpan.orgE =head1 LICENSE This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =head1 SEE ALSO =cut