OpenID SREG in progress
This commit is contained in:
parent
dab3aaa07f
commit
e7fdfb79ed
|
@ -225,7 +225,6 @@ BEGIN {
|
|||
my @keys = $redis->keys('*');
|
||||
my %res;
|
||||
foreach my $k (@keys) {
|
||||
my $v = $redis->get($k);
|
||||
my $v =
|
||||
eval { thaw( MIME::Base64::decode_base64( $redis->get($k) ) ) };
|
||||
next if ($@);
|
||||
|
|
|
@ -18,22 +18,22 @@ sub new {
|
|||
|
||||
sub extensions {
|
||||
my $self = shift;
|
||||
$self->{_extensions} = @_;
|
||||
$self->{_extensions} = shift;;
|
||||
}
|
||||
|
||||
sub signed_return_url {
|
||||
my ( $self, %opts ) = splice @_;
|
||||
my $extra;
|
||||
if ( ref $self->{_extensions} ) {
|
||||
my $list = $self->args();
|
||||
my @list = $self->get_args();
|
||||
my @list = $self->get_args->();
|
||||
my %h;
|
||||
foreach my $arg (@list) {
|
||||
next unless ( $arg =~ /^openid\.(\w+)(\.[\w\.]+)?/ );
|
||||
print STDERR "ARG: $arg\n";
|
||||
next unless ( $arg =~ /^openid\.(\w+)\.([\w\.]+)?/ );
|
||||
my $tmp = $1;
|
||||
my $val = $2;
|
||||
if ( defined $self->{_extensions}->{$tmp} ) {
|
||||
push @{ $h{$tmp} }, $val, scalar self->get_args($arg);
|
||||
push @{ $h{$tmp} }, $val, scalar $self->args->($arg);
|
||||
}
|
||||
}
|
||||
my %vars;
|
||||
|
@ -43,7 +43,7 @@ sub signed_return_url {
|
|||
$vars{"openid.$ns.$k"} = $v;
|
||||
}
|
||||
}
|
||||
$opts{extra_fields} = \%vars;
|
||||
$opts{additional_fields} = \%vars;
|
||||
}
|
||||
return $self->SUPER::signed_return_url(%opts);
|
||||
}
|
||||
|
|
|
@ -1104,7 +1104,7 @@ sub testStruct {
|
|||
},
|
||||
},
|
||||
exportedVars => {
|
||||
keyTest => qr/^[a-zA-Z][\w-]*$/,
|
||||
keyTest => qr/^!?[a-zA-Z][\w-]*$/,
|
||||
keyMsgFail => 'Bad variable name',
|
||||
test => qr/^[a-zA-Z][\w-]*$/,
|
||||
msgFail => 'Bad attribute name',
|
||||
|
|
|
@ -128,12 +128,12 @@ sub extractFormInfo {
|
|||
or $self->{stack}->[1]->[0]->{m} =~ /^OpenID/ )
|
||||
{
|
||||
my ( @r, @o );
|
||||
foreach my $k ( values %{ $self->{exportedVars} } ) {
|
||||
while ( my ( $v, $k ) = each %{ $self->{exportedVars} } ) {
|
||||
if ( $k =~
|
||||
/^(?:(?:(?:full|nick)nam|languag|postcod|timezon)e|country|gender|email|dob)$/
|
||||
)
|
||||
{
|
||||
if (s/^!//) { push @r, $k }
|
||||
if ( $v =~ s/^!// ) { push @r, $k }
|
||||
else { push @o, $k }
|
||||
}
|
||||
else {
|
||||
|
@ -143,9 +143,9 @@ sub extractFormInfo {
|
|||
);
|
||||
}
|
||||
}
|
||||
my @tmp =
|
||||
( @r ? ( 'openid.sreg.required' => join( ',', @r ) ) : () ),
|
||||
( @o ? ( 'openid.sreg.optional' => join( ',', @o ) ) : () );
|
||||
my @tmp;
|
||||
push @tmp, 'openid.sreg.required' => join( ',', @r ) if (@r);
|
||||
push @tmp, 'openid.sreg.optional' => join( ',', @o ) if (@o);
|
||||
OpenID::util::push_url_arg( \$check_url, @tmp ) if (@tmp);
|
||||
}
|
||||
print $self->redirect($check_url);
|
||||
|
|
|
@ -1104,7 +1104,7 @@ sub printImage {
|
|||
|
||||
sub stamp {
|
||||
my $self = shift;
|
||||
return $self->{cipher}->encrypt( time() );
|
||||
return $self->{cipher} ? $self->{cipher}->encrypt( time() ) : 1;
|
||||
}
|
||||
|
||||
###############################################################
|
||||
|
@ -1170,15 +1170,17 @@ sub controlUrlOrigin {
|
|||
my $self = shift;
|
||||
if ( my $c = $self->param('confirm') ) {
|
||||
$c =~ s/^(-?)(.*)$/${1}1/;
|
||||
my $time = time() - $self->{cipher}->decrypt($2);
|
||||
if ( $time < 600 ) {
|
||||
$self->lmLog( "Confirm parameter accepted $c", 'debug' );
|
||||
$self->param( 'confirm', $c );
|
||||
print STDERR "DEBUG ".$self->param('confirm')."\n";
|
||||
}
|
||||
else {
|
||||
$self->lmLog( 'Confirmation to old, refused', 'notice' );
|
||||
$self->param( 'confirm', 0 );
|
||||
if($self->{cipher}) {
|
||||
my $time = time() - $self->{cipher}->decrypt($2);
|
||||
if ( $time < 600 ) {
|
||||
$self->lmLog( "Confirm parameter accepted $c", 'debug' );
|
||||
$self->param( 'confirm', $c );
|
||||
print STDERR "DEBUG ".$self->param('confirm')."\n";
|
||||
}
|
||||
else {
|
||||
$self->lmLog( 'Confirmation to old, refused', 'notice' );
|
||||
$self->param( 'confirm', 0 );
|
||||
}
|
||||
}
|
||||
}
|
||||
$self->{_url} ||= '';
|
||||
|
|
|
@ -45,12 +45,15 @@ sub setSessionInfo {
|
|||
my $self = shift;
|
||||
if ( ref( $self->{exportedVars} ) eq 'HASH' ) {
|
||||
foreach my $k ( keys %{ $self->{exportedVars} } ) {
|
||||
$k =~ s/^!//;
|
||||
my $required = ($k =~ s/^!//);
|
||||
$self->{sessionInfo}->{$k} =
|
||||
$self->param("openid.sreg.$self->{exportedVars}->{$k}")
|
||||
if ( $k =~
|
||||
/^(?:(?:(?:full|nick)nam|languag|postcod|timezon)e|country|gender|email|dob)$/
|
||||
);
|
||||
|
||||
$self->lmLog( "Required parameter $k is not provided by OpenID server, aborted", 'warn' ) if($required);
|
||||
return PE_ERROR;
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
|
Loading…
Reference in New Issue
Block a user