Cleanup create_room helper

master
Daniel Berteaud 10 years ago
parent bdb86d4973
commit 28cffe0481
  1. 86
      vroom.pl

@ -158,26 +158,57 @@ helper logout => sub {
helper create_room => sub {
my $self = shift;
my ($name,$owner) = @_;
my $res = {status => undef, msg => undef};
# Convert room names to lowercase
if ($name ne lc $name){
$name = lc $name;
}
# Exit if the name isn't valid or already taken
return undef if ($self->get_room_by_name($name) || !$self->valid_room_name($name)->{status});
# Check if the name is valid
$res = $self->valid_room_name($name);
if (!$res->{status}){
return $res;
}
elsif ($self->get_room_by_name($name)){
$res->{msg} = 'ERROR_NAME_CONFLICT';
return $res;
}
my $sth = eval {
$self->db->prepare('INSERT INTO `rooms`
(`name`,`create_date`,`last_activity`,`owner`,`token`,`realm`)
VALUES (?,CONVERT_TZ(NOW(), @@session.time_zone, \'+00:00\'),CONVERT_TZ(NOW(), @@session.time_zone, \'+00:00\'),?,?,?)');
} || return undef;
# Gen a random token. Will be used as a turnPassword
my $tp = $self->get_random(256);
$sth->execute($name,$owner,$tp,$config->{'turn.realm'}) || return undef;
(`name`,
`create_date`,
`last_activity`,
`owner`,
`token`,
`realm`)
VALUES (?,
CONVERT_TZ(NOW(), @@session.time_zone, \'+00:00\'),
CONVERT_TZ(NOW(), @@session.time_zone, \'+00:00\'),
?,
?,
?)');
};
if ($@){
$res->{msg} = $@;
return $res;
}
$sth->execute(
$name,
$owner,
$self->get_random(256),
$config->{'turn.realm'}
);
if ($sth->err){
$res->{msg} = "DB Error: " . $sth->errstr . " (code " . $sth->err . ")";
return $res;
}
$self->app->log->info("Room $name created by " . $self->session('name'));
# Etherpad integration ? If so, create the corresponding pad
if ($ec){
$self->create_pad($name);
}
return 1;
$res->{status} = 1;
$res->{msg} = 'ROOM_CREATED';
return $res;
};
# Read room param in the DB and return a perl hashref
@ -993,30 +1024,35 @@ post '/create' => sub {
my $name = $self->param('roomName') || $self->get_random_name();
# Create a session for this user, but don't set a role for now
$self->login;
my $status = 'error';
my $err = '';
my $msg = $self->l('ERROR_OCCURRED');
my $json = {
status => 'error',
err => 'ERROR_OCCURRED',
msg => $self->l('ERROR_OCCURRED'),
room => $name
};
# Cleanup unused rooms before trying to create it
$self->delete_rooms;
my $res = $self->valid_room_name($name);
if (!$res->{status}){
$err = $res->{msg};
$msg = $self->l($res->{msg});
$json->{err} = $res->{msg};
$json->{msg} = $self->l($res->{msg});
return $self->render(json => $json);
}
elsif ($self->get_room_by_name($name)){
$err = 'ERROR_NAME_CONFLICT';
$msg = $self->l('ERROR_NAME_CONFLICT');
$json->{err} = 'ERROR_NAME_CONFLICT';
$json->{msg} = $self->l('ERROR_NAME_CONFLICT');
return $self->render(json => $json);
}
elsif ($self->create_room($name,$self->session('name'))){
$status = 'success';
$self->session($name => {role => 'owner'});
$res = $self->create_room($name,$self->session('name'));
if (!$res->{status}){
$json->{err} = $res->{msg};
$json->{msg} = $self->l($res->{msg});
return $self->render(json => $json);
}
$self->render(json => {
status => $status,
err => $err,
msg => $msg,
room => $name
});
$json->{status} = 'success';
$json->{err} = $res->{msg};
$self->session($name => {role => 'owner'});
return $self->render(json => $json);
};
# Translation for JS resources

Loading…
Cancel
Save