init III
This commit is contained in:
231
Perl OTRS/Kernel/Modules/AdminSession.pm
Normal file
231
Perl OTRS/Kernel/Modules/AdminSession.pm
Normal file
@@ -0,0 +1,231 @@
|
||||
# --
|
||||
# Copyright (C) 2001-2019 OTRS AG, https://otrs.com/
|
||||
# --
|
||||
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
|
||||
# the enclosed file COPYING for license information (GPL). If you
|
||||
# did not receive this file, see https://www.gnu.org/licenses/gpl-3.0.txt.
|
||||
# --
|
||||
|
||||
package Kernel::Modules::AdminSession;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
our $ObjectManagerDisabled = 1;
|
||||
|
||||
sub new {
|
||||
my ( $Type, %Param ) = @_;
|
||||
|
||||
# allocate new hash for object
|
||||
my $Self = {%Param};
|
||||
bless( $Self, $Type );
|
||||
|
||||
return $Self;
|
||||
}
|
||||
|
||||
sub Run {
|
||||
my ( $Self, %Param ) = @_;
|
||||
|
||||
my $LayoutObject = $Kernel::OM->Get('Kernel::Output::HTML::Layout');
|
||||
my $SessionObject = $Kernel::OM->Get('Kernel::System::AuthSession');
|
||||
my $WantSessionID = $Kernel::OM->Get('Kernel::System::Web::Request')->GetParam( Param => 'WantSessionID' ) || '';
|
||||
|
||||
# ------------------------------------------------------------ #
|
||||
# kill session id
|
||||
# ------------------------------------------------------------ #
|
||||
if ( $Self->{Subaction} eq 'Kill' ) {
|
||||
|
||||
# challenge token check for write action
|
||||
$LayoutObject->ChallengeTokenCheck();
|
||||
|
||||
$SessionObject->RemoveSessionID( SessionID => $WantSessionID );
|
||||
return $LayoutObject->Redirect( OP => "Action=AdminSession" );
|
||||
}
|
||||
|
||||
# ------------------------------------------------------------ #
|
||||
# kill all session id
|
||||
# ------------------------------------------------------------ #
|
||||
elsif ( $Self->{Subaction} eq 'KillAll' ) {
|
||||
|
||||
# challenge token check for write action
|
||||
$LayoutObject->ChallengeTokenCheck();
|
||||
|
||||
$SessionObject->CleanUp();
|
||||
return $LayoutObject->Redirect( OP => "Action=AdminSession" );
|
||||
}
|
||||
|
||||
# ------------------------------------------------------------ #
|
||||
# Detail View
|
||||
# ------------------------------------------------------------ #
|
||||
elsif ( $Self->{Subaction} eq 'Detail' ) {
|
||||
|
||||
# Get data for session ID
|
||||
my %Data = $SessionObject->GetSessionIDData( SessionID => $WantSessionID );
|
||||
|
||||
if ( !%Data ) {
|
||||
$Kernel::OM->Get('Kernel::System::Log')->Log(
|
||||
Message => "No Session Data for Session ID $WantSessionID",
|
||||
Priority => 'error',
|
||||
);
|
||||
}
|
||||
|
||||
$Data{SessionID} = $WantSessionID;
|
||||
|
||||
# create blocks
|
||||
$LayoutObject->Block(
|
||||
Name => 'ActionList',
|
||||
);
|
||||
$LayoutObject->Block(
|
||||
Name => 'ActionOverview',
|
||||
);
|
||||
$LayoutObject->Block(
|
||||
Name => 'ActionKillSession',
|
||||
Data => {%Data},
|
||||
);
|
||||
|
||||
$LayoutObject->Block(
|
||||
Name => 'DetailView',
|
||||
Data => {%Data},
|
||||
);
|
||||
|
||||
KEY:
|
||||
for my $Key ( sort keys %Data ) {
|
||||
if ( ($Key) && ( defined( $Data{$Key} ) ) && $Key ne 'SessionID' ) {
|
||||
if ( ref $Data{$Key} ) {
|
||||
$Data{$Key} = '[...]';
|
||||
}
|
||||
elsif ( $Key =~ /^_/ ) {
|
||||
next KEY;
|
||||
}
|
||||
elsif ( $Key =~ /Password|Pw/ ) {
|
||||
$Data{$Key} = '[xxx]';
|
||||
}
|
||||
else {
|
||||
$Data{$Key} = $LayoutObject->Ascii2Html( Text => $Data{$Key} );
|
||||
}
|
||||
if ( $Key eq 'UserSessionStart' ) {
|
||||
|
||||
my $DateTimeObject = $Kernel::OM->Create('Kernel::System::DateTime');
|
||||
my $Age = int(
|
||||
( $DateTimeObject->ToEpoch() - $Data{UserSessionStart} )
|
||||
/ 3600
|
||||
);
|
||||
my $TimeStamp = $Kernel::OM->Create(
|
||||
'Kernel::System::DateTime',
|
||||
ObjectParams => {
|
||||
Epoch => $Data{UserSessionStart},
|
||||
}
|
||||
)->ToString();
|
||||
$Data{$Key} = "$TimeStamp / $Age h ";
|
||||
}
|
||||
if ( $Data{$Key} eq ';' ) {
|
||||
$Data{$Key} = '';
|
||||
}
|
||||
}
|
||||
|
||||
if ( $Data{$Key} ) {
|
||||
|
||||
# create blocks
|
||||
$LayoutObject->Block(
|
||||
Name => 'DetailViewRow',
|
||||
Data => {
|
||||
Key => $Key,
|
||||
Value => $Data{$Key},
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
# generate output
|
||||
my $Output = $LayoutObject->Header();
|
||||
$Output .= $LayoutObject->NavigationBar();
|
||||
|
||||
$Output .= $LayoutObject->Output(
|
||||
TemplateFile => 'AdminSession',
|
||||
Data => {
|
||||
Action => $Self->{Subaction},
|
||||
%Data,
|
||||
},
|
||||
);
|
||||
|
||||
$Output .= $LayoutObject->Footer();
|
||||
return $Output;
|
||||
}
|
||||
|
||||
# ------------------------------------------------------------ #
|
||||
# else, show session list
|
||||
# ------------------------------------------------------------ #
|
||||
else {
|
||||
|
||||
# get all sessions
|
||||
my @List = $SessionObject->GetAllSessionIDs();
|
||||
my $Table = '';
|
||||
my $Counter = @List;
|
||||
my %MetaData = ();
|
||||
$MetaData{UserSession} = 0;
|
||||
$MetaData{CustomerSession} = 0;
|
||||
$MetaData{UserSessionUniq} = 0;
|
||||
$MetaData{CustomerSessionUniq} = 0;
|
||||
|
||||
$LayoutObject->Block(
|
||||
Name => 'Overview',
|
||||
);
|
||||
|
||||
$LayoutObject->Block(
|
||||
Name => 'Filter'
|
||||
);
|
||||
|
||||
for my $SessionID (@List) {
|
||||
my $List = '';
|
||||
my %Data = $SessionObject->GetSessionIDData( SessionID => $SessionID );
|
||||
if ( $Data{UserType} && $Data{UserLogin} ) {
|
||||
$MetaData{"$Data{UserType}Session"}++;
|
||||
if ( !$MetaData{"$Data{UserLogin}"} ) {
|
||||
$MetaData{"$Data{UserType}SessionUniq"}++;
|
||||
$MetaData{"$Data{UserLogin}"} = 1;
|
||||
}
|
||||
}
|
||||
|
||||
$Data{UserType} = 'Agent' if ( !$Data{UserType} || $Data{UserType} ne 'Customer' );
|
||||
|
||||
# create blocks
|
||||
$LayoutObject->Block(
|
||||
Name => 'Session',
|
||||
Data => {
|
||||
SessionID => $SessionID,
|
||||
UserFirstname => $Data{UserFirstname},
|
||||
UserLastname => $Data{UserLastname},
|
||||
UserFullname => $Data{UserFullname},
|
||||
UserType => $Data{UserType},
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
# create blocks
|
||||
$LayoutObject->Block(
|
||||
Name => 'ActionList',
|
||||
);
|
||||
$LayoutObject->Block(
|
||||
Name => 'ActionSummary',
|
||||
Data => {
|
||||
Counter => $Counter,
|
||||
%MetaData
|
||||
}
|
||||
);
|
||||
|
||||
# generate output
|
||||
my $Output = $LayoutObject->Header();
|
||||
$Output .= $LayoutObject->NavigationBar();
|
||||
$Output .= $LayoutObject->Output(
|
||||
TemplateFile => 'AdminSession',
|
||||
Data => {
|
||||
Counter => $Counter,
|
||||
%MetaData
|
||||
}
|
||||
);
|
||||
$Output .= $LayoutObject->Footer();
|
||||
return $Output;
|
||||
}
|
||||
}
|
||||
|
||||
1;
|
||||
Reference in New Issue
Block a user