[09/10] testbot/Users: Forcefully log out the user as soon as the account is disabled or deleted.

Francois Gouget fgouget at codeweavers.com
Wed Apr 3 10:00:31 CDT 2013


Still delete any left-over session in Janitor.pl just in case.
---
 testbot/web/admin/UserDetails.pl |   19 +++++++++++++++++++
 testbot/web/admin/UsersList.pl   |   29 +++++++++++++++++++++++++++++
 2 files changed, 48 insertions(+)

diff --git a/testbot/web/admin/UserDetails.pl b/testbot/web/admin/UserDetails.pl
index bc56eec..f9c1bea 100644
--- a/testbot/web/admin/UserDetails.pl
+++ b/testbot/web/admin/UserDetails.pl
@@ -22,6 +22,7 @@ use strict;
 package UserDetailsPage;
 
 use ObjectModel::CGI::ItemPage;
+use WineTestBot::CGI::Sessions;
 use WineTestBot::Config;
 use WineTestBot::Users;
 
@@ -75,6 +76,20 @@ sub OnApprove($)
   exit;
 }
 
+sub OnOK($)
+{
+  my $self = shift;
+
+  return !1 if (!$self->Save());
+  if ($self->{Item}->Status ne 'active')
+  {
+    # Forcefully log out that user by deleting his web sessions
+    DeleteSessions($self->{Item});
+  }
+  $self->RedirectToList();
+  exit;
+}
+
 sub OnAction
 {
   my $self = shift;
@@ -84,6 +99,10 @@ sub OnAction
   {
     return $self->OnApprove();
   }
+  elsif ($Action eq "OK")
+  {
+    return $self->OnOK();
+  }
 
   return $self->SUPER::OnAction(@_);
 }
diff --git a/testbot/web/admin/UsersList.pl b/testbot/web/admin/UsersList.pl
index 4971f99..5148394 100644
--- a/testbot/web/admin/UsersList.pl
+++ b/testbot/web/admin/UsersList.pl
@@ -23,6 +23,7 @@ package UsersListPage;
 
 use ObjectModel::PropertyDescriptor;
 use ObjectModel::CGI::CollectionPage;
+use WineTestBot::CGI::Sessions;
 use WineTestBot::Config;
 use WineTestBot::Users;
 
@@ -69,6 +70,34 @@ sub GetActions
   return $self->SUPER::GetActions(@_);
 }
 
+sub OnAction
+{
+  my $self = shift;
+  my ($CollectionBlock, $Action) = @_;
+
+  if ($Action eq "Delete")
+  {
+    foreach my $UserName (@{$self->{Collection}->GetKeys()})
+    {
+      next if (!defined $self->GetParam($CollectionBlock->SelName($UserName)));
+      my $User = $self->{Collection}->GetItem($UserName);
+      $User->Status('deleted');
+      my ($ErrProperty, $ErrMessage) = $User->Save();
+      if (defined $ErrMessage)
+      {
+        $self->{ErrMessage} = $ErrMessage;
+        return !1;
+      }
+      # Forcefully log out that user by deleting his web sessions
+      DeleteSessions($User);
+    }
+    return 1;
+  }
+
+  return $self->SUPER::OnAction(@_);
+}
+
+
 package main;
 
 my $Request = shift;
-- 
1.7.10.4




More information about the wine-patches mailing list