From 07961fbe352807326c1cb39ba405b60817b330cd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andrej=20Rama=C5=A1euski?= <andrej@x2.cz>
Date: Fri, 18 Dec 2020 20:25:37 +0100
Subject: [PATCH] user.id 0 a pospora X-Roles

---
 lib/CF/Helpers/Auth.pm | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/lib/CF/Helpers/Auth.pm b/lib/CF/Helpers/Auth.pm
index 50db7ee..7871526 100644
--- a/lib/CF/Helpers/Auth.pm
+++ b/lib/CF/Helpers/Auth.pm
@@ -74,7 +74,7 @@ sub register ( $class, $self, $conf) {
     });
 
     $self->helper( user => sub ( $c ) {
-        my $claims = $c->oauth_claims // return;
+        my $claims = $c->oauth_claims // return { id => 0 };
 
         if ( ! $c->stash->{user} ) {
             $c->stash->{user} = {
@@ -88,8 +88,16 @@ sub register ( $class, $self, $conf) {
     });
 
     $self->helper( user_roles => sub ( $c ) {
-        my $claims = $c->oauth_claims // return;
-        $c->stash->{user_roles} //= { map { $_ => 1 } @{ $claims->{roles} // [] }};
+        my @roles = ();
+
+        if ( $c->cfg->{test_x_roles} && $c->req->headers->header('X-Roles')) {
+            @roles = split /\W+/, $c->req->headers('X-Roles');
+        }
+        elsif ( my $claims = $c->oauth_claims ) {
+            @roles = @{ $claims->{roles} // [] };
+        }
+
+        $c->stash->{user_roles} //= { map { $_ => 1 }  @roles };
         return $c->stash->{user_roles};
     });
 
-- 
GitLab