[rt-users] script create user in RT system with validation LDAP
sercuto
sercuto at alumni.uv.es
Thu Mar 24 17:20:54 EDT 2011
Hi Kevin.
I don't have any users with a blank EmailAddress.
My target is create a simple script in perl for create users. This script be called inside RT server.
./create_user<username>
I could do it by inserting data directly in the database RT3, but I wanted to please do itusing APIs RT.
rt3_pruebas=# select count(*) from Users where emailaddress = '';
count
-------
0
(1 row)
Thanks.
El 24/03/2011 21:48, Kevin Falcone escribió:
> On Thu, Mar 24, 2011 at 06:46:19PM +0100, sercuto wrote:
>> I have change the script. I running the script and local users or
>> LDAP users, but don't create user.
> Did you check if you already have a user with a blank EmailAddress
> like I suggested?
>
> select count(*) from Users where EmailAddress = '';
> your logs say you're not pulling email back from LDAP
>
> Maybe you should explain what you're trying to do. It is possible
> that there are better ways to accomplish your goal.
> If all you want to do is require that new users exist in LDAP, then
> make sure that AutoCreateNonExternalUsers is set to 0.
>
> -kevin
>
>> This is my new script:
>>
>> #!/usr/bin/perl
>> use lib ("/usr/local/rt-3.8.2_pruebas/lib/");
>>
>> use RT::Interface::CLI qw(CleanEnv);
>> use RT;
>> use RT::Util;
>> RT::LoadConfig();
>> RT::Init();
>> use RT::Ticket;
>> use RT::CurrentUser;
>> use RT::CustomField;
>> use RT::Action::Generic;
>> use RT::Transaction;
>> use MIME::Entity;
>> package RT::Action::MyAction;
>> use base qw(RT::Action::Generic);
>> use RT::Authen::ExternalAuth::LDAP;
>> use RT::Authen::ExternalAuth::DBI;
>>
>> my $user = 'pruebas';
>> my $mail = 'pruebas at dominio.com';
>>
>>
>> $session{'CurrentUser'} = RT::CurrentUser->new();
>> my $load_method = RT->Config->Get('WebExternalGecos') ?
>> 'LoadByGecos' : 'Load';
>> $session{'CurrentUser'} = RT::CurrentUser->new();
>> $session{'CurrentUser'}->$load_method($user);
>> my $UserObj = RT::User->new(RT::CurrentUser->new('RT_System'));
>> my ($val, $msg) = $UserObj->Create(
>> %{ref($RT::AutoCreate)
>> ? $RT::AutoCreate : {}},
>> Name => $user,
>> Gecos => $user,
>> );
>>
>> $session{'CurrentUser'}->Load($user) if $UserObj->Id;
>> $RT::Logger->error( "No puedo crear el usuario $user: $msg" );
>>
>>
>> -------------------------------------------------------------------------------------------
>>
>> This is my ouput log file:
>>
>> [Thu Mar 24 17:40:34 2011] [debug]:
>> RT::Authen::ExternalAuth::CanonicalizeUserInfo called by RT::User
>> /usr/local/rt-3.8.2_pruebas/lib//RT/User_Vendor.pm 20 with:
>> Disabled: 0, EmailAddress: , Gecos: pruebas, Name: pruebas,
>> Privileged: 0
>> (/usr/local/rt-3.8.2_pruebas/lib//RT/Authen/ExternalAuth.pm:450)
>> [Thu Mar 24 17:40:34 2011] [debug]: Attempting to get user info
>> using this external service:
>> (/usr/local/rt-3.8.2_pruebas/lib//RT/Authen/ExternalAuth.pm:458)
>> [Thu Mar 24 17:40:34 2011] [info]:
>> RT::Authen::ExternalAuth::CanonicalizeUserInfo returning Disabled:
>> 0, EmailAddress: , Gecos: pruebas, Name: pruebas, Privileged: 0
>> (/usr/local/rt-3.8.2_pruebas/lib//RT/Authen/ExternalAuth.pm:536)
>> [Thu Mar 24 17:40:34 2011] [error]: No puedo crear el usuario
>> pruebas: Could not set user info (./crea_user2.pl:39)
>> ...................................................................................................................................
>>
>> thanks.
>>
>> El 24/03/2011 18:33, Kevin Falcone escribió:
>>> On Thu, Mar 24, 2011 at 05:22:05PM +0100, sercuto wrote:
>>>> Mi log file is this:
>>> I don't see most of your log messages showing up there, especially the
>>> part that tells you if this is an external or internal user. Are they
>>> getting cut out?
>>>
>>> You're also not returning an email address for the user, which makes
>>> me think you might already have a user in the system with a blank
>>> email address and RT won't allow you to make two like that.
>>>
>>> -kevin
>>>
>>>> [Thu Mar 24 16:20:36 2011] [debug]:
>>>> RT::Authen::ExternalAuth::CanonicalizeUserInfo called by RT::User
>>>> /usr/local/rt-3.8.2_pruebas/lib//RT/User_Vendor.pm 20 with:
>>>> Disabled: 0, EmailAddress: , Gecos: pruebas, Name: pruebas,
>>>> Privileged: 0
>>>> (/usr/local/rt-3.8.2_pruebas/lib//RT/Authen/ExternalAuth.pm:450)
>>>> [Thu Mar 24 16:20:36 2011] [debug]: Attempting to get user info
>>>> using this external service:
>>>> (/usr/local/rt-3.8.2_pruebas/lib//RT/Authen/ExternalAuth.pm:458)
>>>> [Thu Mar 24 16:20:36 2011] [info]:
>>>> RT::Authen::ExternalAuth::CanonicalizeUserInfo returning Disabled:
>>>> 0, EmailAddress: , Gecos: pruebas, Name: pruebas, Privileged: 0
>>>> (/usr/local/rt-3.8.2_pruebas/lib//RT/Authen/ExternalAuth.pm:536)
>>>> [Thu Mar 24 16:20:36 2011] [error]: No puedo crear el usuario
>>>> pruebas: Could not set user info (./scripts/crea_user2.pl:39)
>>>>
>>>> Thanks.
>>>>
>>>> El 24/03/2011 16:58, Kevin Falcone escribió:
>>>>> On Thu, Mar 24, 2011 at 03:20:12PM +0100, Sergio Cubero wrote:
>>>>>> I want create user with perl script, but don't working.
>>>>>> Can you help me?
>>>>> How doesn't it work?
>>>>> Please describe the failure and provide the logs.
>>>>>
>>>>> -kevin
>>>>>
>>>>>> #!/usr/bin/perl
>>>>>> use lib ("/usr/local/rt-3.8.2/lib/");
>>>>>> use RT::Interface::CLI qw(CleanEnv);
>>>>>> use RT;
>>>>>> RT::LoadConfig();
>>>>>> RT::Init();
>>>>>> use RT::Ticket;
>>>>>> use RT::CurrentUser;
>>>>>> use RT::CustomField;
>>>>>> use RT::Action::Generic;
>>>>>> use RT::Transaction;
>>>>>> use MIME::Entity;
>>>>>> package RT::Action::MyAction;
>>>>>> use base qw(RT::Action::Generic);
>>>>>> use RT::Authen::ExternalAuth::LDAP;
>>>>>> use RT::Authen::ExternalAuth::DBI;
>>>>>>
>>>>>> my $user = 'username';
>>>>>> my $mail = 'username at domain.com';
>>>>>> RT->Config->Get('WebExternalAuto');
>>>>>>
>>>>>> $session->{'CurrentUser'} = RT::CurrentUser->new();
>>>>>> $session->{'CurrentUser'}->Load($user);
>>>>>>
>>>>>> my $UserObj = RT::User->new($RT::SystemUser);
>>>>>> print $UserObj."\n";
>>>>>> my ($val, $msg) = $UserObj->SetName($user);
>>>>>>
>>>>>> my ($val, $msg) =
>>>>>>
>>>>>> $UserObj->Create(
>>>>>> %{ref($RT::AutoCreate) ? $RT::AutoCreate : {}},
>>>>>> Name => $user,
>>>>>> Gecos => $user,
>>>>>> _RecordTransaction => 1,
>>>>>> EmailAddress => $mail,
>>>>>> RealName => 'User USer',
>>>>>> Comments => 'user LDAP',
>>>>>> WorkPhone => 'phone,
>>>>>> Address1 => 'streetAddress',
>>>>>> City => 'l',
>>>>>> State => 'st',
>>>>>> Zip => 'postalCode',
>>>>>> Country => 'co'
>>>>>> );
>>>>>> $RT::Logger->info("Autocreated authenticated user " . $UserObj->Name .
>>>>>> " (" . $UserObj->Id . ")\n");
>>>>>>
>>>>>> $session{'CurrentUser'}->Load($user) if $UserObj->Id;
>>>>>> $RT::Logger->error( "No puedo crear el usuario $user: $msg" );
>>>>>>
>>>>>> if(RT::Authen::ExternalAuth::UserExists($user)){ print "EXISTS";}
>>>>>> else {print "NO EXISTS";}
>>>>>>
>>>>>>
>>>>>>
>>>>>> $RT::Logger->info( "Autocreated external user",
>>>>>> $UserObj->Name,
>>>>>> "(",
>>>>>> $UserObj->Id,
>>>>>> ")");
>>>>>>
>>>>>> $RT::Logger->debug("Loading new user (",
>>>>>> $username,
>>>>>> ") into current session");
>>>>>> $session->{'CurrentUser'}->Load($username);
>>>>>>
>>>>>>
>>>>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.bestpractical.com/pipermail/rt-users/attachments/20110324/ee33a57b/attachment.htm>
More information about the rt-users
mailing list