|
Lines 3622-3643
partial permissions with the given permissions as hash keys
Link Here
|
| 3622 |
sub permissions { |
3622 |
sub permissions { |
| 3623 |
my ($self) = @_; |
3623 |
my ($self) = @_; |
| 3624 |
|
3624 |
|
| 3625 |
my $dbh = C4::Context->dbh; |
3625 |
# Get userFlags using ORM |
| 3626 |
my $sth = $dbh->prepare("SELECT bit, flag FROM userflags ORDER BY bit"); |
3626 |
|
| 3627 |
$sth->execute(); |
3627 |
my $schema = Koha::Database->schema; |
| 3628 |
my $userflags = { map { $_->[0] => $_->[1] } @{ $sth->fetchall_arrayref() } }; |
3628 |
my @userflags = $schema->resultset('Userflag')->search( {}, { order_by => 'bit'})->all; |
|
|
3629 |
my %userflags_map = map { $_->bit => $_->flag } @userflags; |
| 3629 |
|
3630 |
|
| 3630 |
my $flags = $self->flags // 0; |
3631 |
my $flags = $self->flags // 0; |
| 3631 |
|
3632 |
|
| 3632 |
my $active_flags = {}; |
3633 |
my $active_flags = {}; |
| 3633 |
|
3634 |
|
| 3634 |
foreach my $bit ( keys %$userflags ) { |
3635 |
# Check which flags are active based on bit values |
|
|
3636 |
foreach my $bit ( keys %$userflags_map ) { |
| 3635 |
if ( $flags & ( 1 << $bit ) ) { |
3637 |
if ( $flags & ( 1 << $bit ) ) { |
| 3636 |
my $flag = $userflags->{$bit}; |
3638 |
my $flag = $userflags_map{$bit}; |
| 3637 |
$active_flags->{$flag} = 1; |
3639 |
$active_flags->{$flag} = 1; |
| 3638 |
} |
3640 |
} |
| 3639 |
} |
3641 |
} |
| 3640 |
|
3642 |
|
|
|
3643 |
# Get granular subpermissions using existing helper |
| 3641 |
my $user_perms = get_user_subpermissions( $self->userid ); |
3644 |
my $user_perms = get_user_subpermissions( $self->userid ); |
| 3642 |
|
3645 |
|
| 3643 |
for my $module ( keys %$user_perms ) { |
3646 |
for my $module ( keys %$user_perms ) { |
| 3644 |
- |
|
|