package SeMeet::Schema::Result::Invite; use strict; use warnings; use base 'DBIx::Class::Core'; use Mojo::JWT; use constant MEET_TOKEN_LIFETIME => 3600 * 24; our $VERSION = 1; __PACKAGE__->table('invites'); __PACKAGE__->add_columns( id => { data_type => 'integer', is_auto_increment => 1, is_nullable => 0, sequence => 'uid_seq' }, qw( token created expire user_id meet_id email displayname ), ); __PACKAGE__->set_primary_key('id'); __PACKAGE__->add_unique_constraint( 'token' => [qw(token)] ); sub meet_token { my $self = shift; my $meet = shift; my $cfg = shift; return Mojo::JWT->new( secret => $cfg->{jitsi_secret}, claims => { aud => 'semeet', iss => 'semeet', sub => 'meet.pirati.cz', room => $meet->uuid, moderator => \0, exp => time + MEET_TOKEN_LIFETIME, context => { user => { name => $self->displayname . ' (HOST)', email => $self->email, } }, } )->encode; } 1;