Changeset 83

Show
Ignore:
Timestamp:
06/25/07 19:38:07 (2 years ago)
Author:
pdingle
Message:

added access rights abilities for interop

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/wp-infocard/custom/customdata.pw.php

    r66 r83  
    2828        function describeCustomData() 
    2929        { 
    30                 return "camera type is requested and used to change ad content"; 
     30                return "camera type is used to change ad content." 
     31                . "group is used if the returned claim is photogroup. " 
     32                . "grouprole is used if the returned claim is grouprole "; 
     33 
    3134        } 
    3235 
     
    5356                        'Camera Type'); 
    5457 
    55                 //$claimslist['cameratype'] = new pw_claimtype( 
    56         //              'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/postalcode', 
    57         //              'postalcode', 
    58         //              FALSE, 
    59         //              'Camera Type'); 
     58                $claimslist['group'] = new pw_claimtype( 
     59                        'http://burtongroup.com/interop/2007/05/identity/group', 
     60                        'group', 
     61                        FALSE, 
     62                        'Group Membership'); 
     63 
     64                $claimslist['grouprole'] = new pw_claimtype( 
     65                        'http://burtongroup.com/interop/2007/05/identity/groupRole', 
     66                        'groupRole', 
     67                        FALSE, 
     68                        'Group Role'); 
    6069                return; 
    6170        }//end function add CustomClaims 
     
    8493                        'Custom Data Mapping' 
    8594                        ); 
     95                $datamap['group'] = new pw_mapping( 
     96                        'Group Membership', 
     97                        'group', 
     98                        PW_TABLE_PREFIX . 'usermeta', 
     99                        'return $' . 'claimslist[\'group\']->token_value;' , 
     100                        'Custom Data Mapping' 
     101                        ); 
     102                $datamap['grouprole'] = new pw_mapping( 
     103                        'Group Role', 
     104                        'grouprole', 
     105                        PW_TABLE_PREFIX . 'usermeta', 
     106                        'return $' . 'claimslist[\'grouprole\']->token_value;' , 
     107                        'Custom Data Mapping' 
     108                        ); 
    86109                return; 
    87110        } 
     
    129152                        pw_utils::printDebug('Existing Value: found custom value '.$datamap['cameratype']->mappingattribute.' in usermeta ( '.$datamap['cameratype']->db_value.' )<br/>'); 
    130153                } 
     154 
     155                $grp = get_usermeta( $ID, 'group'); 
     156                if ( $grp ) 
     157                { 
     158                        $datamap['group']->add_db_value( $grp ); 
     159                        pw_utils::printDebug('Existing Value: found custom value '.$datamap['group']->mappingattribute.' in usermeta ( '.$datamap['group']->db_value.' )<br/>'); 
     160                } 
     161 
     162                $grpr = get_usermeta( $ID, 'grouprole'); 
     163                if ( $grpr ) 
     164                { 
     165                        $datamap['grouprole']->add_db_value( $grpr ); 
     166                        pw_utils::printDebug('Existing Value: found custom value '.$datamap['grouprole']->mappingattribute.' in usermeta ( '.$datamap['grouprole']->db_value.' )<br/>'); 
     167                } 
     168 
    131169                return; 
    132170        } // end function evaluateIncomingCustomData 
     
    142180                        pw_utils::printDebug("&nbsp;".$datamap['cameratype']->displayname."User meta updated for user # $ID<br />"); 
    143181                } 
     182 
     183                if (($datamap['group']) && (!$datamap['group']->compare())) 
     184                { 
     185                        $grp = $datamap['group']->new_value; 
     186                        update_usermeta( $ID, 'group', $grp ); 
     187                        pw_utils::printDebug("&nbsp;".$datamap['group']->displayname."User meta updated for user # $ID<br />"); 
     188                } 
     189 
     190                if (($datamap['grouprole']) && (!$datamap['grouprole']->compare())) 
     191                { 
     192                        $grpr = $datamap['grouprole']->new_value; 
     193                        update_usermeta( $ID, 'grouprole', $grpr ); 
     194                        pw_utils::printDebug("&nbsp;".$datamap['grouprole']->displayname."User meta updated for user # $ID<br />"); 
     195                } 
     196 
     197                pw_utils::printDebugHeader("Access Rights Data" ); 
     198                // Set capabilities if either a group or a grouprole exists 
     199                if ( $datamap['group']->new_value === 'photogroup' ) 
     200                { 
     201                         
     202                        pw_utils::printDebug("&nbsp;Photo Group Claim detected<br />" ); 
     203                        $thisuser = new WP_User( $ID ); 
     204                        if ( $datamap['grouprole']->new_value === 'photogroup:admin' ) 
     205                        { 
     206                                pw_utils::printDebug("&nbsp;Photo Group Admin Role Claim detected<br />" ); 
     207                                if ($thisuser->has_cap('administrator')) 
     208                                        pw_utils::printDebug("&nbsp;user already has Admin capabilities<br />" ); 
     209                                else 
     210                                { 
     211                                        pw_utils::printDebug("&nbsp;adding Admin abilities<br />" ); 
     212                                        $thisuser->set_role('administrator');    
     213                                } 
     214                        } 
     215                        else 
     216                        { 
     217                                if ($thisuser->has_cap('author')) 
     218                                { 
     219                                        pw_utils::printDebug("&nbs;user already has Author capabilities<br />" ); 
     220                                } 
     221                                else 
     222                                { 
     223                                        pw_utils::printDebug("&nbsp;adding Editor abilities<br />" ); 
     224                                        $thisuser->set_role('author');   
     225                                } 
     226                        } 
     227                } 
     228                else 
     229                { 
     230                        $thisuser = new WP_User( $ID ); 
     231                        // there are no capabilities here 
     232                        if ($thisuser->has_cap('administrator')) 
     233                        { 
     234                                if ( $ID !== "1" )       
     235                                { 
     236                                        pw_utils::printDebug("&nbsp;removing admin rights<br />" ); 
     237                                        $thisuser->remove_role('administrator'); 
     238                                        $thisuser->set_role('subscriber'); 
     239                                         
     240                                } 
     241                        } 
     242                        else 
     243                        { 
     244                                if ( $thisuser->has_cap('author') ) 
     245                                { 
     246                                        pw_utils::printDebug("&nbsp; no access rights specified - resetting user rights to a mere subscriber<br />" ); 
     247                                        $thisuser->remove_role('author'); 
     248                                        $thisuser->set_role('subscriber'); 
     249                                } 
     250                                else 
     251                                        pw_utils::printDebug("&nbsp;  no change in access rights<br/>" ); 
     252                                         
     253 
     254                                 
     255                        } 
     256                } 
     257                         
    144258                return; 
    145259        } // end function updateNewCustom