From 57c5252f7ed3b08da17ce03d5cb0809c205ce899 Mon Sep 17 00:00:00 2001 From: Daniel Berteaud Date: Fri, 26 Jun 2015 12:06:37 +0200 Subject: [PATCH] Get rid of the useless name in session --- vroom.pl | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/vroom.pl b/vroom.pl index 82bc5cf..377bcec 100755 --- a/vroom.pl +++ b/vroom.pl @@ -143,14 +143,22 @@ helper check_db_version => sub { return ($ver eq Vroom::Constants::DB_VERSION) ? '1' : '0'; }; +# Return human readable username if it exists, or just the session ID +helper get_name => sub { + my $self = shift; + if ($ENV{'REMOTE_USER'} && $ENV{'REMOTE_USER'} ne ''){ + return $ENV{'REMOTE_USER'}; + } + return $self->session('id'); +}; + # Create a cookie based session # And a new API key helper login => sub { my $self = shift; - if ($self->session('name')){ + if ($self->session('id')){ return 1; } - my $login = $ENV{'REMOTE_USER'} || lc $self->get_random(128); my $id = $self->get_random(256); my $key = $self->get_random(256); my $sth = eval { @@ -160,11 +168,10 @@ helper login => sub { }; $sth->execute($key); $self->session( - name => $login, id => $id, key => $key ); - $self->app->log->info($self->session('name') . " logged in from " . $self->tx->remote_address); + $self->app->log->info($self->get_name . " logged in from " . $self->tx->remote_address); return 1; }; @@ -181,7 +188,7 @@ helper logout => sub { $peers->{$self->session('peer_id')}->{socket}){ $peers->{$self->session('peer_id')}->{socket}->finish; } - $self->app->log->info($self->session('name') . " logged out"); + $self->app->log->info($self->get_name . " logged out"); $self->session( expires => 1 ); return 1; }; @@ -216,7 +223,7 @@ helper create_room => sub { $name, $owner ); - $self->app->log->info("Room $name created by " . $self->session('name')); + $self->app->log->info("Room $name created by " . $self->get_name); # Etherpad integration ? If so, create the corresponding pad if ($ec){ $self->create_pad($name); @@ -301,7 +308,7 @@ helper modify_room => sub { $room->{max_members}, $room->{id} ); - $self->app->log->info("Room " . $room->{name} ." modified by " . $self->session('name')); + $self->app->log->info("Room " . $room->{name} ." modified by " . $self->get_name); return 1; }; @@ -550,7 +557,7 @@ helper remove_notification => sub { $data->{id}, $email ); - $self->app->log->debug($self->session('name') . + $self->app->log->debug($self->get_name . " has removed $email from the list of email which are notified when someone joins room $room"); return 1; }; @@ -582,7 +589,7 @@ helper add_invitation => sub { $token, $email ); - $self->app->log->debug($self->session('name') . " has invited $email to join room $room"); + $self->app->log->debug($self->get_name . " has invited $email to join room $room"); return $token; }; @@ -734,7 +741,7 @@ helper create_etherpad_session => sub { if (!$ec || !$data || !$data->{etherpad_group}){ return 0; } - my $id = $ec->create_author_if_not_exists_for($self->session('name')); + my $id = $ec->create_author_if_not_exists_for($self->get_name); $self->session($room)->{etherpadAuthorId} = $id; my $etherpadSession = $ec->create_session( $data->{etherpad_group}, @@ -988,7 +995,7 @@ websocket '/socket.io/:ver/websocket/:id' => sub { my $self = shift; my $id = $self->stash('id'); # the ID must match the one stored in our session - if ($id ne $self->session('peer_id') || !$self->session('name')){ + if ($id ne $self->session('peer_id') || !$self->get_name){ $self->app->log->debug('Sometyhing is wrong, peer ID is ' . $id . ' but should be ' . $self->session('peer_id')); return $self->send('Bad session'); } @@ -1000,7 +1007,6 @@ websocket '/socket.io/:ver/websocket/:id' => sub { $peers->{$id}->{last} = time; # Associate the unique ID and name $peers->{$id}->{id} = $self->session('id'); - $peers->{$id}->{name} = $self->session('name'); $peers->{$id}->{check_invitations} = 1; # Register the i18n stash, for localization will be available in the main IOLoop # Outside of Mojo controller @@ -1020,7 +1026,7 @@ websocket '/socket.io/:ver/websocket/:id' => sub { !$self->session($room) || !$self->session($room)->{role} || $self->session($room)->{role} !~ m/^owner|participant$/){ - $self->app->log->debug("Failed to connect to the signaling channel, " . $self->session('name') . + $self->app->log->debug("Failed to connect to the signaling channel, " . $self->get_name . " (session ID " . $self->session('id') . ") has no role in room $room"); $self->send( Protocol::SocketIO::Message->new( type => 'disconnect' ) ); $self->finish; @@ -1427,7 +1433,7 @@ any '/api' => sub { $json->{msg} = $self->l('ERROR_NAME_CONFLICT'); return $self->render(json => $json, status => 409); } - if (!$self->create_room($req->{param}->{room},$self->session('name'))){ + if (!$self->create_room($req->{param}->{room},$self->get_name)){ $json->{err} = 'ERROR_OCCURRED'; $json->{msg} = $self->l('ERROR_OCCURRED'); return $self->render(json => $json, status => 500);