# -- # 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::GenericInterface::Operation::Session::Common; use strict; use warnings; use Kernel::System::VariableCheck qw(:all); our $ObjectManagerDisabled = 1; =head1 NAME Kernel::GenericInterface::Operation::Session::Common - Base class for Session Operations =head1 PUBLIC INTERFACE =head2 CreateSessionID() performs user authentication and return a new SessionID value my $SessionID = $CommonObject->CreateSessionID( Data { UserLogin => 'Agent1', CustomerUserLogin => 'Customer1', # optional, provide UserLogin or # CustomerUserLogin Password => 'some password', # plain text password } ); Returns undef on failure or $SessionID = 'AValidSessionIDValue'; # the new session id value =cut sub CreateSessionID { my ( $Self, %Param ) = @_; my $User; my %UserData; my $UserType; # get params my $PostPw = $Param{Data}->{Password} || ''; if ( defined $Param{Data}->{UserLogin} && $Param{Data}->{UserLogin} ) { # if UserLogin my $PostUser = $Param{Data}->{UserLogin} || ''; # check submitted data $User = $Kernel::OM->Get('Kernel::System::Auth')->Auth( User => $PostUser, Pw => $PostPw, ); %UserData = $Kernel::OM->Get('Kernel::System::User')->GetUserData( User => $User, Valid => 1, ); $UserType = 'User'; } elsif ( defined $Param{Data}->{CustomerUserLogin} && $Param{Data}->{CustomerUserLogin} ) { # if UserCustomerLogin my $PostUser = $Param{Data}->{CustomerUserLogin} || ''; # check submitted data $User = $Kernel::OM->Get('Kernel::System::CustomerAuth')->Auth( User => $PostUser, Pw => $PostPw, ); %UserData = $Kernel::OM->Get('Kernel::System::CustomerUser')->CustomerUserDataGet( User => $PostUser, Valid => 1, ); $UserType = 'Customer'; } # login is invalid return if !$User; # create new session id my $NewSessionID = $Kernel::OM->Get('Kernel::System::AuthSession')->CreateSessionID( %UserData, UserLastRequest => $Kernel::OM->Create('Kernel::System::DateTime')->ToEpoch(), UserType => $UserType, SessionSource => 'GenericInterface', ); return $NewSessionID if ($NewSessionID); return; } 1; =head1 TERMS AND CONDITIONS This software is part of the OTRS project (L). 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 L. =cut