From 8a766512cb20f0c00fd7aaaa1b947a59358328a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrej=20Rama=C5=A1euski?= <andrej@x2.cz> Date: Sun, 3 Jan 2021 02:05:34 +0100 Subject: [PATCH] Presun generatoru tokenu --- lib/CF/Helpers/Auth.pm | 25 ------------------------- lib/CF/Helpers/Core.pm | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 25 deletions(-) diff --git a/lib/CF/Helpers/Auth.pm b/lib/CF/Helpers/Auth.pm index ba74f16..fe004ae 100644 --- a/lib/CF/Helpers/Auth.pm +++ b/lib/CF/Helpers/Auth.pm @@ -101,31 +101,6 @@ sub register ( $class, $self, $conf) { return $c->stash->{user_roles}; }); - $self->helper( jitsi_token => sub ( $c, $room='*' ) { - my $claims = $c->oauth_claims // return undef; - - my $jwt = Mojo::JWT->new( - secret => $c->cfg->{jitsi_token_secret}, - claims => { - aud => 'jitsi', - iss => 'cf-online', - sub => 'meet.jitsi', - room => $room, - exp => time + $c->cfg->{jitsi_token_lifetime}, - context => { - user => { - avatar => join ('', - $c->cfg->{piratar_base_url}, - $claims->{preferred_username}, - '.jpg', - ), - name => $claims->{name}, - email => $claims->{mail}, - } - }, - } - )->encode; - }); } 1; diff --git a/lib/CF/Helpers/Core.pm b/lib/CF/Helpers/Core.pm index b60ae0a..1251a2b 100644 --- a/lib/CF/Helpers/Core.pm +++ b/lib/CF/Helpers/Core.pm @@ -5,6 +5,7 @@ use feature 'signatures'; no warnings qw{ experimental::signatures } ; use YAML; +use Mojo::JWT; sub register ($class, $self, $conf) { @@ -162,6 +163,42 @@ sub register ($class, $self, $conf) { $self->helper( format_timestamp => sub($c, $timestamp, $format) { return $timestamp; }); + + $self->helper( jitsi_url => sub ( $c, $room, $lifetime=180, %user ) { + + $user{avatar} //= join ('', + $c->cfg->{piratar_base_url}, + $user{username}, + '.jpg', + ); + + my $jwt = Mojo::JWT->new( + secret => $c->cfg->{jitsi_token_secret}, + claims => { + aud => 'jitsi', + iss => 'cf-online', + sub => 'meet.jitsi', + room => $room, + moderator => $user{moderator} ? \1:\0, + exp => time + $lifetime, + context => { + user => { + avatar => $user{avatar}, + name => $user{name}, + email => $user{mail}, + } + }, + } + )->encode; + + return join ('', + $c->cfg->{jitsi_base_url}, + $c->cfg->{jitsi_room}, + '?jwt=', + $jwt, + ); + + }); } 1; -- GitLab