-
Andrej Ramašeuski authoredAndrej Ramašeuski authored
Users.pm 2.53 KiB
package CF::Controller::Users;
use Mojo::Base 'Mojolicious::Controller';
use Mojo::Pg::PubSub;
use feature 'signatures';
no warnings qw{ experimental::signatures };
sub me ($c){
my $user = $c->_get( $c->user->{id} ) // return;
my $formatted = $user->formatted;
if (
( $user->jitsi_allowed || $user->roles =~ /chairman|jitsi/ )
&& $c->cfg->{jitsi_base_url}
&& $c->cfg->{jitsi_room}
) {
$formatted->{jitsi_url} = $c->jitsi_url(
$c->cfg->{jitsi_room},
$c->cfg->{jitsi_token_lifetime},
$user->get_columns,
moderator => ($user->roles =~ /chairman/) ? 1:0,
email => $c->oauth_claims->{mail},
);
}
$c->render(openapi => $c->spec_filter($formatted, 'User'));
}
sub ban ($c){
my $user = $c->_get( $c->stash->{id} ) // return;
my $guard = $c->schema->txn_scope_guard;
$user->update({ banned_until => \"now()+'8 hour'", });
#TODO: do modelu
my $msg = $c->schema->resultset('Announcement')->from_template(
5, $user->name,
);
my $announcement = $c->schema->resultset('Announcement')->create({
user_id => $c->user->{id},
type => 5,
content => $msg,
});
# potrebujeme kvuli datumu
$announcement = $c->schema->resultset('Announcement')->find({
id => $announcement->id,
});
$c->notify('announcement_created',
$announcement->format(),
);
$c->notify('user_banned',
$c->spec_filter($user->formatted, 'User'),
);
$guard->commit;
$c->render(status => 204, text => '');
}
sub unban ($c) {
my $user = $c->_get( $c->stash->{id} ) // return;
my $guard = $c->schema->txn_scope_guard;
$user->update({ banned_until => undef });
#TODO: ANN