Francois Gouget : testbot/Users: Forcefully log out the user as soon as the account is disabled or deleted.
Alexandre Julliard
julliard at winehq.org
Thu Apr 4 12:31:30 CDT 2013
Module: tools
Branch: master
Commit: 77129d2e16eaa902fcbb86a09bbd00d63634a053
URL: http://source.winehq.org/git/tools.git/?a=commit;h=77129d2e16eaa902fcbb86a09bbd00d63634a053
Author: Francois Gouget <fgouget at codeweavers.com>
Date: Thu Apr 4 12:14:34 2013 +0200
testbot/Users: Forcefully log out the user as soon as the account is disabled or deleted.
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(+), 0 deletions(-)
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;
More information about the wine-cvs
mailing list