-
Andrej Ramašeuski authoredAndrej Ramašeuski authored
Meets.pm 6.67 KiB
package SeMeet::Controller::Meets;
use Mojo::Base 'Mojolicious::Controller', -signatures;
use UUID::URandom qw(create_uuid_string);
use Mojo::JWT;
use constant AVATAR_SIZE => 320;
use constant JITSI_TOKEN_LIFETIME => 3600 * 24;
sub create($c) {
$c->openapi->valid_input or return;
my $args = $c->req->json;
return $c->error(403, 'Access denied') if ! $c->stash->{permissions}{create};
my $exists = $c->schema->resultset('Meet')->count({
deleted => undef,
name => $args->{name},
});
return $c->error(400, 'DUPLICTE_NAME') if $exists;
my $guard = $c->schema->txn_scope_guard;
my $meet = $c->schema->resultset('Meet')->create({
uuid => create_uuid_string(),
owner_id => $c->stash->{user}->id,
name => $args->{name},
});
$guard->commit;
$c->trace(\'User %s create meet "%s" with id %d',
$c->stash->{user}->username,
$meet->name,
$meet->id,
);
$c->render(
status => 201,
openapi => { id => $meet->id },
);
}
sub get($c) {
$c->openapi->valid_input or return;
my $args = $c->req->json;
my $meet = $c->_get($c->stash->{id}, 0) // return;
my $users = { 0 => [], 1 => [] };
my @invites = ();
USER:
foreach my $user ( $meet->users ) {
push @{ $users->{ $user->is_moderator} }, {
id => $user->id,
name => $user->user_name,
}
}
INVITE:
foreach my $invite ( $meet->invites ) {
push @invites, {
id => $invite->id,
token => $invite->token,
displayname => $invite->displayname,
}
}