Show
Ignore:
Timestamp:
09/18/08 08:56:27 (18 months ago)
Author:
fumiakiy
Message:

Differentiate required SREG attributes from optionl attributes.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/openid2-server/plugins/openid2-server/lib/OpenID2Server/App.pm

    r1098 r1101  
    209209                $req{email} = $app->user->email; 
    210210            } 
    211             elsif ( ( 'nickname' eq $req) || ( 'fullname' eq $req ) ) { 
     211            elsif ( !exists($req{nickname}) 
     212               && ( ( 'nickname' eq $req ) || ( 'fullname' eq $req ) ) ) 
     213            { 
    212214                $req{nickname} = $app->user->nickname; 
    213215            } 
     
    221223                $opt{email} = $app->user->email; 
    222224            } 
    223             elsif ( ( 'nickname' eq $opt ) || ( 'fullname' eq $opt ) ) { 
     225            elsif ( !exists($req{nickname}) && !exists($opt{nickname}) 
     226               && ( ( 'nickname' eq $opt )    || ( 'fullname' eq $opt ) ) ) 
     227            { 
    224228                $opt{nickname} = $app->user->nickname; 
    225229            } 
     
    250254    # Simple Registration Extension support 
    251255    if ( $q->param('openid.ns.sreg') ) { 
    252         $param{additional_fields} = { 
    253             'ns.sreg' => $q->param('openid.ns.sreg'), 
    254             'sreg.email' => $q->param('openid.sreg.email'), 
    255             'sreg.nickname' => $q->param('openid.sreg.nickname'), 
    256             'sreg.language' => $q->param('openid.sreg.language') 
    257         }; 
     256        my %additional_fields; 
     257        my @p = $q->param; 
     258        foreach my $p (@p) { 
     259            next unless $p =~ /^__(\w+)_beacon__$/; 
     260            my $field = $1; 
     261            $additional_fields{'sreg.' . $field} = $q->param('openid.sreg.' . $field); 
     262        } 
     263        if ( keys %additional_fields ) { 
     264            $param{additional_fields} = { 
     265                'ns.sreg' => $q->param('openid.ns.sreg'), 
     266                %additional_fields 
     267            } 
     268        } 
    258269    } 
    259270