CallBackery
view release on metacpan or search on metacpan
lib/CallBackery/GuiPlugin/Abstract.pm view on Meta::CPAN
type => '*unknown*',
options => {},
# followed by type dependent keys
}
};
=head2 checkAccess()
Check if the current user may access the Plugin. Override in the Child
class to limit accessibility. By default plugins are not accessible
unless you have numeric UID or the word C<__CONFIG>.
The L<CallBackery::Command::shell> sets the userId to C<__SHELL>. If a
plugin should be configurable interactively it must allow access to
the C<__SHELL> user.
checkAccess can also return a promise or be an async method
=cut
has checkAccess => sub {
my $self = shift;
my $userId = $self->user->userId;
return (defined $userId and ($userId eq '__CONFIG' or $userId =~ /^\d+$/));
};
=head2 mayAnonymous
may this gui plugin run for unauthenticated users ?
=cut
has mayAnonymous => sub {
return 0;
};
=head2 stateFiles
A list of files that contain the state of the settings configured by
this plugin this is used both for backup purposes and to replicate the
settings to a second installation.
=cut
has stateFiles => sub {
[];
};
=head2 unconfigureFiles
a list of files to be removed when 'unConfiguring' a device
=cut
has unConfigureFiles => sub {
[];
};
=head2 eventActions
A map of callbacks that will be called according to events in the
system. The following events are available:
configChanged
=cut
has eventActions => sub {
{};
};
=head1 METHODS
All the methods of L<Mojo::Base> plus:
=cut
=head2 makeRxValidator(rx,error)
Create a regular expression base validator function. The supplied
regular expression gets anchored front and back automatically.
=cut
sub createRxValidator {
my $self = shift;
my $rx = shift;
my $error = shift;
return sub {
my $value = shift;
return undef if $value =~ /^${rx}$/;
return $error;
};
}
=head2 filterHashKey(data,key)
Walks a hash/array structure and removes all occurrences of the given
key.
CODE references get turned into 'true' values and JSON true/false get
passed on.
=cut
sub filterHashKey {
my $self = shift;
my $data = shift;
my $filterKey = shift;
my $ref = ref $data;
if (not $ref
or $ref eq ref true
or $ref eq 'CallBackery::Translate'){
return $data;
}
elsif ($ref eq 'CODE'){
return true;
}
elsif ($ref eq 'ARRAY'){
return [ map { $self->filterHashKey($_,$filterKey) } @$data ];
( run in 1.446 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )