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