# -- # 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::System::Console::Command::Admin::CustomerUser::SetPassword; use strict; use warnings; use parent qw(Kernel::System::Console::BaseCommand); our @ObjectDependencies = ( 'Kernel::Config', 'Kernel::System::CustomerUser', ); sub Configure { my ( $Self, %Param ) = @_; $Self->Description('Update the password for a customer user.'); $Self->AddArgument( Name => 'user', Description => "Specify the user login of the agent/customer to be updated.", Required => 1, ValueRegex => qr/.*/smx, ); $Self->AddArgument( Name => 'password', Description => "Set a new password for the user (a password will be generated otherwise).", Required => 0, ValueRegex => qr/.*/smx, ); return; } sub Run { my ( $Self, %Param ) = @_; my $Login = $Self->GetArgument('user'); $Self->Print("Setting password for user $Login...\n"); my $CustomerUserObject = $Kernel::OM->Get('Kernel::System::CustomerUser'); my %CustomerUserList = $CustomerUserObject->CustomerSearch( UserLogin => $Login, ); if ( !scalar %CustomerUserList ) { $Self->PrintError("No customer user found with login '$Login'!\n"); return $Self->ExitCodeError(); } # if no password has been provided, generate one my $Password = $Self->GetArgument('password'); if ( !$Password ) { $Password = $CustomerUserObject->GenerateRandomPassword( Size => 12 ); $Self->Print("Generated password '$Password'.\n"); } my $Result = $CustomerUserObject->SetPassword( UserLogin => $Login, PW => $Password, ); if ( !$Result ) { $Self->PrintError("Failed to set password!\n"); return $Self->ExitCodeError(); } $Self->Print("Successfully set password for customer user '$Login'.\n"); return $Self->ExitCodeOk(); } 1;