View | Details | Raw Unified | Return to bug 22031
Collapse All | Expand All

(-)a/C4/Auth.pm (-13 / +19 lines)
Lines 2039-2058 sub haspermission { Link Here
2039
    my $flags = getuserflags( $row, $userid );
2039
    my $flags = getuserflags( $row, $userid );
2040
2040
2041
    return $flags if $flags->{superlibrarian};
2041
    return $flags if $flags->{superlibrarian};
2042
2043
    foreach my $module ( keys %$flagsrequired ) {
2042
    foreach my $module ( keys %$flagsrequired ) {
2044
        my $subperm = $flagsrequired->{$module};
2043
        my $subperms = $flagsrequired->{$module};
2045
        if ( $subperm eq '*' ) {
2044
        my @sub_loop;
2046
            return 0 unless ( $flags->{$module} == 1 or ref( $flags->{$module} ) );
2045
        if ( ref($subperms) eq 'ARRAY' ) {
2046
            @sub_loop = @$subperms;
2047
        } else {
2047
        } else {
2048
            return 0 unless (
2048
            push @sub_loop, $subperms;
2049
                ( defined $flags->{$module} and
2049
        }
2050
                    $flags->{$module} == 1 )
2050
        foreach my $subperm (@sub_loop){
2051
                or
2051
            if ( $subperm eq '*' ) {
2052
                ( ref( $flags->{$module} ) and
2052
                return 0 unless ( $flags->{$module} == 1 or ref( $flags->{$module} ) );
2053
                    exists $flags->{$module}->{$subperm} and
2053
            } else {
2054
                    $flags->{$module}->{$subperm} == 1 )
2054
                return 0 unless (
2055
            );
2055
                    ( defined $flags->{$module} and
2056
                        $flags->{$module} == 1 )
2057
                    or
2058
                    ( ref( $flags->{$module} ) and
2059
                        exists $flags->{$module}->{$subperm} and
2060
                        $flags->{$module}->{$subperm} == 1 )
2061
                );
2062
            }
2056
        }
2063
        }
2057
    }
2064
    }
2058
    return $flags;
2065
    return $flags;
2059
- 

Return to bug 22031