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