[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