Mojolicious-Plugin-ContextAuth
view release on metacpan or search on metacpan
lib/Mojolicious/Plugin/ContextAuth/DB/Permission.pm view on Meta::CPAN
}
$params{permission_id} = Data::UUID->new->create_str;
my $error;
try {
$self->dbh->db->insert( corbac_permissions => \%params);
}
catch {
$self->error( 'Invalid parameter' );
$error = $_;
};
return if $error;
my $permission = $self->load( $params{permission_id} );
return $permission;
}
sub delete ($self, $id = $self->permission_id) {
$self->error('');
if ( !$id ) {
$self->error( "Need permission id" );
return;
}
if ( ref $id ) {
$self->error( "Invalid permission id" );
return;
}
my $error;
my $result;
try {
my $tx = $self->dbh->db->begin;
$self->dbh->db->delete(
corbac_role_permissions => { permission_id => $id }
);
$result = $self->dbh->db->delete(
corbac_permissions => {
permission_id => $id,
}
);
$tx->commit;
}
catch {
$self->error( "Cannot delete permission: " . $_ );
$error = 1;
};
return if $error;
return $result->rows;
}
sub update ($self, @params) {
$self->error('');
my $id = @params % 2 ? shift @params : $self->permission_id;
my %to_update = @params;
if ( exists $to_update{permission_name} && (
length $to_update{permission_name} > 255 ||
length $to_update{permission_name} < 3
)) {
$self->error( 'Invalid parameter' );
return;
}
delete $to_update{permission_id};
my $result;
my $error;
try {
$result = $self->dbh->db->update(
corbac_permissions => \%to_update,
{ permission_id => $id }
);
}
catch {
$self->error( 'Invalid parameter' );
$error = $_;
};
return if $error;
if ( !$result->rows ) {
$self->error( 'No permission updated' );
return;
}
return $self->load( $id );
}
sub search ($self, %params) {
$self->error('');
my $error;
my @permission_ids;
try {
my $result = $self->dbh->db->select(
corbac_permissions => ['permission_id'] => \%params,
);
while ( my $next = $result->hash ) {
push @permission_ids, $next->{permission_id};
}
}
catch {
$self->error('Cannot search for permissions');
$error = $_;
};
return if $error;
return @permission_ids;
( run in 0.511 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )