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

Differentiate required SREG attributes from optionl attributes.

Location:
trunk/openid2-server/plugins/openid2-server
Files:
2 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 
  • trunk/openid2-server/plugins/openid2-server/tmpl/setup.tmpl

    r584 r1101  
    2626        id="<mt:var name="__key__">" 
    2727        label="<mt:var name="__key__">"> 
    28         <input type="hidden" name="openid.sreg.<mt:var name="__key__">" value="<mt:var name="__value__">" /><mt:var name="__value__"> 
     28        <input type="hidden" name="openid.sreg.<mt:var name="__key__">" value="<mt:var name="__value__">" /><mt:var name="__value__"><input type="hidden" name="__<mt:var name="__key__">_beacon__" value="1" /> 
    2929    </mtapp:setting> 
    3030    </mt:loop> 
     31</fieldset> 
     32</mt:if> 
     33<mt:if name="sreg_optional"> 
     34<fieldset> 
    3135    <mt:loop name="sreg_optional"> 
    3236    <mtapp:setting 
    3337        id="<mt:var name="__key__">" 
    3438        label="<mt:var name="__key__">"> 
    35         <input type="hidden" name="openid.sreg.<mt:var name="__key__">" value="<mt:var name="__value__">" /><mt:var name="__value__"> 
     39        <input type="hidden" name="openid.sreg.<mt:var name="__key__">" value="<mt:var name="__value__">" /><mt:var name="__value__">&nbsp;<input type="checkbox" name="__<mt:var name="__key__">_beacon__" value="1" /> 
    3640    </mtapp:setting> 
    3741    </mt:loop>