https://github.com/genome/genome
Raw File
Tip revision: 9e9e34d5417d7855d62951ce905669665fbbf6ef authored by Gabriel Sanderson on 13 February 2014, 21:39:55 UTC
added more checking and an error
Tip revision: 9e9e34d
sync_genome_sys_user.pl

# sync genome_sys_user from ldap

#UR_DBI_NO_COMMIT=1

use Genome;
use Data::Dumper;

my @c = `ldapsearch -x`;

my @users;
my $user;

for my $c (@c) {

    next if $c =~ /^\#/;
    chomp($c);

    if ($c =~ /^$/) {
        # process/destroy user
        push @users, $user;
        undef $user;
    } else {
        my ($key, $value) = split(/\:\s+/,$c);
        $user->{$key} = $value;       
    }

}

# called email in db, mail in ldap

my $ldap_user = {};
for my $u (@users) {
    next if !$u->{'mail'};
    $ldap_user->{$u->{'mail'}} = $u;
}

my @db_users = Genome::Sys::User->fix_params_and_get();

print scalar(@db_users);
print 

my @changes;

my $db_user = {};
for my $u (@db_users) {

    my $email = $u->email();
    if (!$ldap_user->{$email}) {
        push @changes, '- ' . $email;        
        $u->delete();
    } else {
        $db_user->{$email} = $u;
    }
}

for my $mail (keys %$ldap_user) {
    my $u = $ldap_user->{$mail};

    if (!$db_user->{$mail}) {
        Genome::Sys::User->create(  
            email => $u->{'mail'},
            name => $u->{'cn'}
        );
        push @changes, '+ ' . $u->{'mail'};
    }
}

print Dumper \@changes;

UR::Context->commit();



back to top