80 lines
2.1 KiB
Perl
80 lines
2.1 KiB
Perl
package Lemonldap::NG::Manager::Api::Common;
|
|
|
|
our $VERSION = '2.0.8';
|
|
|
|
package Lemonldap::NG::Manager::Api;
|
|
|
|
use Lemonldap::NG::Manager::Build::Attributes;
|
|
use Lemonldap::NG::Manager::Build::CTrees;
|
|
|
|
# use Scalar::Util 'weaken'; ?
|
|
|
|
sub _isSimpleKeyValueHash {
|
|
my ( $self, $hash ) = @_;
|
|
return 0 if ( ref($hash) ne "HASH" );
|
|
|
|
foreach ( keys %$hash ) {
|
|
return 0 if ( ref( $hash->{$_} ) ne '' || ref($_) ne '' );
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
sub _setDefaultValues {
|
|
my ( $self, $attrs, $rootNode ) = @_;
|
|
my @allAttrs = $self->_listAttributes($rootNode);
|
|
my $defaultAttrs = Lemonldap::NG::Manager::Build::Attributes::attributes();
|
|
|
|
foreach $attr (@allAttrs) {
|
|
unless ( defined $attrs->{$attr} ) {
|
|
$attrs->{$attr} = $defaultAttrs->{$attr}->{default}
|
|
if ( defined $defaultAttrs->{$attr}
|
|
&& defined $defaultAttrs->{$attr}->{default} );
|
|
}
|
|
}
|
|
|
|
return $attrs;
|
|
}
|
|
|
|
sub _hasAllowedAttributes {
|
|
my ( $self, $attributes, $rootNode ) = @_;
|
|
my @allowedAttributes = $self->_listAttributes($rootNode);
|
|
|
|
foreach $attribute ( keys %{$attributes} ) {
|
|
if ( length( ref($attribute) ) ) {
|
|
return {
|
|
res => "ko",
|
|
msg => "Invalid input: Attribute $attribute is not a string."
|
|
};
|
|
}
|
|
unless ( grep { /^$attribute$/ } @allowedAttributes ) {
|
|
return {
|
|
res => "ko",
|
|
msg => "Invalid input: Attribute $attribute does not exist."
|
|
};
|
|
}
|
|
}
|
|
|
|
return { res => "ok" };
|
|
}
|
|
|
|
sub _listAttributes {
|
|
my ( $self, $rootNode ) = @_;
|
|
my $mainTree = Lemonldap::NG::Manager::Build::CTrees::cTrees();
|
|
my $rootNodes = [ grep { ref($_) eq "HASH" } @{ $mainTree->{$rootNode} } ];
|
|
my @attributes = map { $self->_listNodeAttributes($_) } @$rootNodes;
|
|
|
|
return @attributes;
|
|
}
|
|
|
|
sub _listNodeAttributes {
|
|
my ( $self, $node ) = @_;
|
|
my @attributes =
|
|
map { ref($_) eq "HASH" ? $self->_listNodeAttributes($_) : $_ }
|
|
@{ $node->{nodes} };
|
|
|
|
return @attributes;
|
|
}
|
|
|
|
1;
|