OIDC-Lite
view release on metacpan or search on metacpan
lib/OIDC/Lite/Server/AuthorizationHandler.pm view on Meta::CPAN
package OIDC::Lite::Server::AuthorizationHandler;
use strict;
use warnings;
use Params::Validate;
use OAuth::Lite2::Server::Error;
my @DEFINED_DISPLAY_PARAMS = qw(
page
popup
touch
wap
);
my @DEFINED_PROMPT_PARAMS = qw(
none
login
consent
select_account
);
sub new {
my $class = shift;
my %args = Params::Validate::validate(@_, {
data_handler => 1,
response_types => 1,
});
my $self = bless {
data_handler => $args{data_handler},
response_types => $args{response_types},
}, $class;
return $self;
}
sub handle_request {
my ($self) = @_;
my $dh = $self->{data_handler};
my $req = $self->{data_handler}->request;
# response_type
my $allowed_response_type = $self->{response_types};
my $response_type = $req->param("response_type")
or OAuth::Lite2::Server::Error::InvalidRequest->throw(
description => "'response_type' not found"
);
my @response_type_for_sort = split(/\s/, $response_type);
@response_type_for_sort = sort @response_type_for_sort;
$response_type = join(' ', @response_type_for_sort);
my %allowed_response_type_hash;
$allowed_response_type_hash{$_}++ foreach @$allowed_response_type;
OAuth::Lite2::Server::Error::InvalidRequest->throw(
description => "'response_type' not allowed"
) unless (exists $allowed_response_type_hash{$response_type});
# client_id
my $client_id = $req->param("client_id")
or OAuth::Lite2::Server::Error::InvalidClient->throw(
description => "'client_id' not found"
);
OAuth::Lite2::Server::Error::InvalidClient->throw
unless ($dh->validate_client_by_id($client_id));
OAuth::Lite2::Server::Error::InvalidRequest->throw(
description => "'response_type' not allowed for this 'client_id'"
) unless ($dh->validate_client_for_authorization($client_id, $response_type));
( run in 1.131 second using v1.01-cache-2.11-cpan-364913b4093 )