OSDN Git Service

eventd: add user/login and user/logout handler
[newslash/newslash.git] / src / newslash_web / lib / Newslash / Web / Controller / API / Login.pm
1 package Newslash::Web::Controller::API::Login;
2 use Mojo::Base 'Mojolicious::Controller';
3 use Mojo::Util qw(dumper);
4 use Mojo::JSON qw(decode_json encode_json to_json from_json);
5
6
7
8 sub login {
9     my $c = shift;
10     my $params = $c->req->json;
11     my $nickname = $params->{'nickname'};
12     my $password = $params->{'password'};
13
14     if (defined $nickname && defined $password) {
15         my $users = $c->model('users');
16         my $user = $users->authentification($nickname, $password);
17         if ($user) {
18             if (!$c->user_auth->do_login($user, $c)) {
19                 $c->rendered(500);
20                 return;
21             }
22             $c->render(json => { nickname => $nickname });
23             $c->event_que->emit("user", "login", $user->{uid});
24             return;
25         }
26     }
27
28     $c->render(json => { error => 1,
29                          nickname => $nickname,
30                          reason => "auth_failed",
31                          message => "invalid nickname or password" });
32     $c->rendered(401);
33     return;
34 }
35
36 1;