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;