summaryrefslogtreecommitdiff
path: root/lib/Ultramarine/Middleware/Authorisation.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Ultramarine/Middleware/Authorisation.pm')
-rw-r--r--lib/Ultramarine/Middleware/Authorisation.pm18
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/Ultramarine/Middleware/Authorisation.pm b/lib/Ultramarine/Middleware/Authorisation.pm
new file mode 100644
index 0000000..0ddacf6
--- /dev/null
+++ b/lib/Ultramarine/Middleware/Authorisation.pm
@@ -0,0 +1,18 @@
+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 {
+ emit Cro::HTTP::Response.new(:status<403>);
+ }
+ }
+ }
+}