diff --git a/lib/CF/Helpers/Auth.pm b/lib/CF/Helpers/Auth.pm index ba74f16ec84b8b45e0d13885ee400ac9d5448298..fe004ae28cd7180e9871b0548c8a98af9ae08a28 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 b60ae0a9b1805e08bba926cc58c4a66872515b59..1251a2ba30429af1e00146f75292b54dc894f820 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;