Module: tools Branch: master Commit: 77129d2e16eaa902fcbb86a09bbd00d63634a053 URL: http://source.winehq.org/git/tools.git/?a=commit;h=77129d2e16eaa902fcbb86a09...
Author: Francois Gouget fgouget@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;