package LIMS::Controller::Roles::User; use Moose::Role; use Data::Dumper; has lab_staff => ( is => 'ro', isa => 'ArrayRef[HashRef]', traits => ['Array'], default => sub { [] }, handles => { add_lab_staff_user => 'push', }, ); sub get_lab_staff_users { my $self = shift; my $all_users = $self->model('User')->get_all_users({sort_by => 'username'}); my $settings = $self->cfg('settings'); # warn Dumper $settings; my $lab_name_abbr = $settings->{lab_name_abbreviation}; # always exists my $central_labs = $settings->{central_labs} || ''; # optional my @labs; push @labs, $lab_name_abbr; push @labs, split ',', $central_labs; # warn Dumper \@labs; for my $user (@$all_users) { my $user_location = $central_labs eq 'all_locations' # eg genomics, make all lab-staff: ? 'all_locations' : $user->user_location->location_name; next unless $user->active eq 'yes' && grep $user_location eq $_, @labs; # warn $user->username; my %user = ( id => $user->id, username => $user->username, ); $self->add_lab_staff_user(\%user); } # $self->debug($self->lab_staff); return $self->lab_staff; } #------------------------------------------------------------------------------- sub generate_new_password { my $self = shift; srand; # assemble list of alphanumeric chars, excluding ambiguous lc(L), uc(o), 0 & 1: my @elements = grep m![^lO]!, ( 'a' .. 'z', 'A' .. 'Z', 2 .. 9 ); # join 10 randomly-selected @elements: my $pwd = join '', ( map $elements[ int(rand @elements) ], 1 .. 10 ); return $pwd; } 1;