Bug 13799: Add cookie-based authentication to REST API
[koha.git] / Koha / REST / V1.pm
1 package Koha::REST::V1;
2
3 use Modern::Perl;
4 use Mojo::Base 'Mojolicious';
5
6 use C4::Auth qw( check_cookie_auth get_session );
7 use Koha::Borrowers;
8
9 sub startup {
10     my $self = shift;
11
12     my $route = $self->routes->under->to(
13         cb => sub {
14             my $c = shift;
15
16             my ($status, $sessionID) = check_cookie_auth($c->cookie('CGISESSID'));
17             if ($status eq "ok") {
18                 my $session = get_session($sessionID);
19                 my $user = Koha::Borrowers->find($session->param('number'));
20                 $c->stash('koha.user' => $user);
21             }
22
23             return 1;
24         }
25     );
26
27     # Force charset=utf8 in Content-Type header for JSON responses
28     $self->types->type(json => 'application/json; charset=utf8');
29
30     $self->plugin(Swagger2 => {
31         route => $route,
32         url => $self->home->rel_file("api/v1/swagger.json"),
33     });
34 }
35
36 1;