Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package IdPAccountManager::ServiceProvider;
use strict;
use IdPAccountManager::Data::Serviceprovider;
use IdPAccountManager::Data::Serviceprovider::Manager;
use IdPAccountManager::Tools;
use Conf;
require Exporter;
my @ISA = qw(Exporter);
my @EXPORT = qw();
use Carp;
INIT {
## Set error mode to non fatal
IdPAccountManager::Data::Serviceprovider::Manager->error_mode('return');
}
sub new {
my ($pkg) = shift;
my %args = @_;
my $self = {};
## Bless ServiceProvider object
bless $self, $pkg;
## Object may be created either with a hashref as argument or an IdPAccountManager::Data::Serviceprovider object
## Second case is usefull when fetching a set of IdPAccountManager::Data::Serviceprovider via IdPAccountManager::Data::Serviceprovider::Manager
if (ref($_[0]) eq 'IdPAccountManager::Data::Serviceprovider') {
$self->{'persistent'} = $_[0];
}else {
$self->{'persistent'} = IdPAccountManager::Data::Serviceprovider->new(%args);
}
return $self;
}
sub load {
my $self = shift;
my %args = @_;
return $self->{'persistent'}->load(%args);
}
sub get {
my $self = shift;
my $attribute_name = shift;
return $self->{'persistent'}->$attribute_name;
}
sub save {
my $self = shift;
unless ($self->{'persistent'}->save()) {
IdPAccountManager::Tools::do_log('error', "Failed to save Serviceprovider in DB");
return undef;
}
}
## Delete a test account
sub delete {
my $self = shift;
unless ($self->{'persistent'}->delete()) {
IdPAccountManager::Tools::do_log('error', "Failed to delete a Serviceprovider in DB");
return undef;
}
}
## Print the content of a test account
sub print {
my $self = shift;
my $fd = shift || \*STDOUT;
printf $fd "ServiceProvider ID=%s; entityid=%s; displayname=%s; contacts=%s\n",
$self->get('id'), $self->get('entityid'), $self->get('displayname'), $self->get('contacts');
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
return 1.
}
## list all test accounts
## Class method
sub list_service_providers {
my %args = @_;
my $persistent_accounts= IdPAccountManager::Data::Serviceprovider::Manager->get_serviceproviders(%args);
my $service_providers;
foreach my $persistent_sp (@{$persistent_accounts}) {
my $service_provider = new IdPAccountManager::ServiceProvider($persistent_sp);
push @$service_providers, $service_provider;
}
return $service_providers;
}
1; # Magic true value required at end of module
__END__
=head1 NAME
IdPAccountManager::ServiceProvider - Manage Service Providers for which test accounts have been requested for the Test Identity Provider
=head1 SYNOPSIS
=head1 DESCRIPTION
=head1 SUBROUTINES/METHODS
=head1 AUTHOR
Olivier Salaün (olivier.salaun@renater.fr)