CGI-Bus
view release on metacpan or search on metacpan
lib/CGI/Bus.pm view on Meta::CPAN
push @{$s->{-cache}->{-unames}}, $v
if !grep /^\Q$v\E$/, @{$s->{-cache}->{-unames}};
}
}
$_[0]->{-cache}->{-unames}
}
sub usdomain {# User names Server Domain
if (!$_[0]->{-cache}->{-usdomain} ||$_[1]) {
$_[0]->{-cache}->{-usdomain} =$_[1]
|| (ref($_[0]->{-usdomain}) eq 'CODE'
? &{$_[0]->{-usdomain}}(@_)
: $_[0]->uauth->usdomain(@_[1..$#_]));
}
$_[0]->{-cache}->{-usdomain}
}
sub userver { # User names Server
if (!$_[0]->{-cache}->{-userver} ||$_[1]) {
$_[0]->{-cache}->{-userver} =$_[1]
||(ref($_[0]->{-userver}) eq 'CODE'
? &{$_[0]->{-userver}}(@_)
: $_[0]->uauth->userver(@_[1..$#_]));
}
$_[0]->{-cache}->{-userver}
}
sub ugroups { # User groups [user name]
if (!defined($_[0]->{-cache}->{-ugroups})
|| ($_[1] && (lc($_[0]->useron ||'') ne lc($_[1]))
&& (lc($_[0]->user ||'') ne lc($_[1])))) {
my $s =$_[0];
my $r =[];
return($r) if !defined($s->user) && !$_[1];
$r = ref($s->{-ugroups}) eq 'CODE'
? &{$s->{-ugroups}}(@_)
: $_[0]->uauth->ugroups(@_[1..$#_]);
if ($_[0]->{-ugrpcnv}) {
my $ga =[];
local $_;
foreach $_ (@$r) {
$_ =&{$_[0]->{-ugrpcnv}}(@_);
push(@$ga, $_) if defined($_) && $_ ne '';
}
$r =$ga;
}
if ($_[0]->{-ugrpadd}) {
local $_ =$r;
my $ugadd=ref($s->{-ugrpadd}) eq 'CODE' ? &{$s->{-ugrpadd}}(@_) : $s->{-ugrpadd};
foreach my $e ( ref($ugadd) eq 'ARRAY'
? @{$ugadd}
: ref($ugadd) eq 'HASH'
? keys(%$ugadd)
: $ugadd){
push @$r, $e if !grep /^\Q$e\E$/i, @$r
}
}
{ use locale;
$r =[sort {lc($a) cmp lc($b)} @$r];
}
$s->{-cache}->{-ugroups} =$r
if !$_[1]
|| (lc($_[0]->useron) eq lc($_[1]))
|| (lc($_[0]->user) eq lc($_[1]));
return($r)
}
$_[0]->{-cache}->{-ugroups}
}
sub ugnames { # User & Group Names
if (!defined($_[0]->{-cache}->{-ugnames})) {
my $s =$_[0];
return('') if !defined($s->user);
$s->{-cache}->{-ugnames} =[];
push @{$s->{-cache}->{-ugnames}}, @{$s->unames};
push @{$s->{-cache}->{-ugnames}}, @{$s->ugroups};
}
$_[0]->{-cache}->{-ugnames}
}
sub uglist { # User & Group List
my $s =shift;
my $o =defined($_[0]) && substr($_[0],0,1) eq '-' ? shift : '-ug';
my $r =
ref($s->{-uglist}) eq 'CODE' ? &{$s->{-uglist}}($s,$o,@_)
: $s->uauth->uglist($o,@_);
if ($s->{-ugrpadd}) {
local $_ =$r;
my $ugadd=ref($s->{-ugrpadd}) eq 'CODE' ? &{$s->{-ugrpadd}}(@_) : $s->{-ugrpadd};
if ((ref($r) eq 'HASH')
&& (ref($ugadd) eq 'HASH')) {
foreach my $e (keys(%$ugadd)) {
$r->{$e} =$ugadd->{$e} if !$r->{$e}
}
}
else {
foreach my $e ( ref($ugadd) eq 'ARRAY'
? @{$ugadd}
: ref($ugadd) eq 'HASH'
? keys(%$ugadd)
: $ugadd){
if (ref($r) eq 'HASH') {
$r->{$e} =$e if !$r->{$e}
}
else {
push @$r, $e if !grep /^\Q$e\E$/i, @$r
}
}
}
}
$r =do{use locale; [sort {lc($a) cmp lc($b)} @$r]} if ref($r) eq 'ARRAY';
if ($s->{-ugrpcnv}) {
local $_;
if (ref($r) eq 'ARRAY') {
my @g;
foreach $_ (@$r) {
$_ =&{$s->{-ugrpcnv}}($s,$o);
push(@g, $_) if defined($_) && $_ ne '';
}
$r =[sort {lc($a) cmp lc($b)} @g];
}
else {
my $w =$_[1]; # width of label
foreach my $k (keys %$r) {
$_ =$k;
$_ =&{$s->{-ugrpcnv}}($s,$o);
if (defined($_) && $_ ne '') {
$r->{$_} =$r->{$k};
$r->{$_} =substr($r->{$_},0,$w) if $w;
}
elsif (!defined($_) || $_ eq '' || $_ ne $k) {
delete $r->{$k}
}
}
}
}
$r
}
sub unamesun {# User Names Unique list
my $s =shift;
my $r =[];
foreach my $n (ref($_[0]) ? @{$_[0]} : @_) {
next if grep {lc($n) eq lc($_)
|| lc($s->usercn($n)) eq lc($s->usercn($_))} @$r;
push @$r, $n;
}
$r
}
sub userauth {# User Authenticate
my $s =shift;
$s->{-w32IISdpsn} =($ENV{SERVER_SOFTWARE}||'') !~/IIS/
? 0
: ($s->{-login}||'') =~/\/$/i
? 2
: 0
if !defined($s->{-w32IISdpsn});
ref($s->{-userauth}) eq 'CODE' ? &{$s->{-userauth}}($s,@_)
: ref($s->{-userauth}) eq 'ARRAY' ? $s->uauth->auth($s->{-userauth},@_)
: $s->{-userauth} ? $s->uauth->auth([$s->{-userauth}],@_)
: $s->uauth->auth(@_);
$s->{-cache}->{-userauth} =$s->user
}
sub userauthopt { # User Authenticate optional
( run in 1.303 second using v1.01-cache-2.11-cpan-ceb78f64989 )