summaryrefslogtreecommitdiff
path: root/lib/Ultramarine/Middleware/Authorisation.pm
blob: 86ba8f52a059abb1344a3d22a28a60aacd16368b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
use v6.d.PREVIEW;
use Cro::HTTP::Middleware;
use Ultramarine::Middleware::Authentication;
 
class Ultramarine::Middleware::Authorisation
 does Cro::HTTP::Middleware::Conditional {
    method process(Supply:D $request-stream{
        supply whenever $request-stream -> $request {
            if ($request ~~ Ultramarine::Request::Authed{
                # here we could also add some access control 
                emit $request;
            }
            else {
                my $response = Cro::HTTP::Response.new(
                    :$request,
                    :status<200>,
                );
                $response.set-body({
                   status => 'failed',
                   error => [
                             :code<40>,
                             :message('Wrong username or password'),
                         ],
                });
                emit $response;
            }
        }
    }
}