Skip to:
Content

BuddyPress.org

Changeset 1032 for trunk/bp-groups.php


Ignore:
Timestamp:
02/09/2009 06:52:51 AM (17 years ago)
Author:
apeatling
Message:

Added nonce security checks to all BuddyPress actions. Fixes #454

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-groups.php

    r1030 r1032  
    151151    if ( is_site_admin() ) {
    152152        /* Need to check db tables exist, activate hook no-worky in mu-plugins folder. */
    153         if ( false == ( $wpdb->get_var("SHOW TABLES LIKE '%" . $bp->groups->table_name . "%'") ) || ( get_site_option('bp-groups-db-version') < BP_GROUPS_DB_VERSION )  )
     153        if ( !$wpdb->get_var("SHOW TABLES LIKE '%" . $bp->groups->table_name . "%'") || ( get_site_option('bp-groups-db-version') < BP_GROUPS_DB_VERSION )  )
    154154            groups_install();
    155155           
    156         if ( ( function_exists('bp_wire_install') && false == $wpdb->get_var("SHOW TABLES LIKE '%" . $bp->groups->table_name_wire . "%'") ) || ( get_site_option('bp-groups-db-version') < BP_GROUPS_DB_VERSION ) )
     156        if ( ( function_exists('bp_wire_install') && !$wpdb->get_var("SHOW TABLES LIKE '%" . $bp->groups->table_name_wire . "%'") ) || ( get_site_option('bp-groups-db-version') < BP_GROUPS_DB_VERSION ) )
    157157            groups_wire_install();
    158158    }
     
    349349   
    350350    if ( !$create_group_step = $bp->action_variables[1] ) {
    351         $create_group_step = '1';
     351        $create_group_step = 1;
    352352        $completed_to_step = 0;
    353353       
     
    366366        $group_obj = new BP_Groups_Group( $_SESSION['group_obj_id'] );
    367367
    368         // If the user skipped the avatar step, move onto the next step and don't save anything.
    369         if ( isset( $_POST['skip'] ) && 3 == (int)$create_group_step ) {
     368        if ( !$group_id = groups_create_group( $create_group_step, $_SESSION['group_obj_id'] ) ) {
     369            bp_core_add_message( __('There was an error saving group details. Please try again.', 'buddypress'), 'error' );
     370            bp_core_redirect( $bp->loggedin_user->domain . $bp->groups->slug . '/create/step/' . $create_group_step );
     371        } else {
    370372            $create_group_step++;
    371373            $completed_to_step++;
    372374            $_SESSION['completed_to_step'] = $completed_to_step;
    373         } else {
    374            
    375             // We're done.
    376             if ( 4 == (int)$create_group_step )
    377                 bp_core_redirect( bp_group_permalink( $group_obj, false ) );
    378            
    379             if ( !$group_id = groups_create_group( $create_group_step, $_SESSION['group_obj_id'] ) ) {
    380                 bp_core_add_message( __('There was an error saving group details. Please try again.', 'buddypress'), 'error' );
    381                 bp_core_redirect( $bp->loggedin_user->domain . $bp->groups->slug . '/create/step/' . $create_group_step );
    382             } else {
    383                 $create_group_step++;
    384                 $completed_to_step++;
    385                 $_SESSION['completed_to_step'] = $completed_to_step;
    386                 $_SESSION['group_obj_id'] = $group_id;
    387             }
     375            $_SESSION['group_obj_id'] = $group_id;
    388376        }
     377       
     378        if ( $completed_to_step == 4 )
     379            bp_core_redirect( bp_group_permalink( $group_obj, false ) );
    389380    }
    390381
     
    852843            } else {
    853844                bp_core_add_message( __( 'The group was deleted successfully', 'buddypress' ) );
    854                 bp_core_redirect( site_url() . '/' . $bp->groups->slug . '/' );
     845                bp_core_redirect( $bp->loggedin_user->domain . $bp->groups->slug . '/' );
    855846            }
    856847
     
    13451336           
    13461337        switch ( $step ) {
    1347             case '1':
     1338            case '1':       
     1339                if ( !check_admin_referer( 'groups_step1_save' ) )
     1340                    return false;
     1341               
    13481342                if ( $_POST['group-name'] != '' && $_POST['group-desc'] != '' ) {
    13491343                    $group_obj->creator_id = $bp->loggedin_user->id;
     
    13951389           
    13961390            case '2':
     1391                if ( !check_admin_referer( 'groups_step2_save' ) )
     1392                    return false;
     1393
    13971394                $group_obj->status = 'public';
    13981395                $group_obj->is_invitation_only = 0;
     
    14351432           
    14361433            case '3':
    1437                                
     1434                if ( !check_admin_referer( 'groups_step3_save' ) )
     1435                    return false;
     1436               
     1437                if ( isset( $_POST['skip'] ) )
     1438                    return $group_obj->id;
     1439               
    14381440                // Image already cropped and uploaded, lets store a reference in the DB.
    14391441                if ( !wp_verify_nonce($_POST['nonce'], 'slick_avatars') || !$result = bp_core_avatar_cropstore( $_POST['orig'], $_POST['canvas'], $_POST['v1_x1'], $_POST['v1_y1'], $_POST['v1_w'], $_POST['v1_h'], $_POST['v2_x1'], $_POST['v2_y1'], $_POST['v2_w'], $_POST['v2_h'], false, 'groupavatar', $group_obj->id ) )
     
    14551457           
    14561458            case '4':
    1457                 $send_invites = groups_send_invites($group_obj);
     1459                if ( !check_admin_referer( 'groups_step4_save' ) )
     1460                    return false;
     1461                   
     1462                groups_send_invites( $group_obj, true );
    14581463               
    14591464                do_action( 'groups_created_group', $group_obj->id );
     
    15291534function groups_new_group_forum_post( $post_text, $topic_id ) {
    15301535    global $group_obj;
     1536
     1537    /* Check the nonce */
     1538    if ( !check_admin_referer( 'bp_forums_new_reply' ) )
     1539        return false;
    15311540   
    15321541    if ( $forum_post = bp_forums_new_post( $post_text, $topic_id ) ) {
     
    15471556function groups_new_group_forum_topic( $topic_title, $topic_text, $topic_tags, $forum_id ) {
    15481557    global $group_obj;
     1558
     1559    /* Check the nonce */   
     1560    if ( !check_admin_referer( 'bp_forums_new_topic' ) )
     1561        return false;
    15491562   
    15501563    if ( $topic = bp_forums_new_topic( $topic_title, $topic_text, $topic_tags, $forum_id ) ) {
     
    15651578function groups_invite_user( $user_id, $group_id ) {
    15661579    global $bp;
     1580
     1581    /* Check the nonce */
     1582    if ( !check_admin_referer( 'groups_invite_uninvite_user' ) )
     1583        return false;
    15671584   
    15681585    if ( groups_is_user_member( $user_id, $group_id ) )
     
    15841601}
    15851602
    1586 function groups_uninvite_user( $user_id, $group_id ) {
    1587     global $bp;
    1588 
     1603function groups_uninvite_user( $user_id, $group_id, $skip_check = false ) {
     1604    global $bp;
     1605
     1606    /* Because this is called on groups_leave_group() and a nonce has already been
     1607     * checked, we need a way of overriding a double check.
     1608     */
     1609    if ( !$skip_check ) {
     1610        if ( !check_admin_referer( 'groups_invite_uninvite_user' ) )
     1611            return false;
     1612    }
     1613   
    15891614    if ( !BP_Groups_Member::delete( $user_id, $group_id ) )
    15901615        return false;
     
    15971622function groups_accept_invite( $user_id, $group_id ) {
    15981623    global $group_obj;
     1624
     1625    /* Check the nonce */
     1626    if ( !check_admin_referer( 'groups_accept_invite' ) )
     1627        return false;
    15991628   
    16001629    if ( groups_is_user_member( $user_id, $group_id ) )
     
    16391668}
    16401669
    1641 function groups_send_invites( $group_obj ) {
    1642     global $bp;
    1643    
     1670function groups_send_invites( $group_obj, $skip_check = false ) {
     1671    global $bp;
     1672
     1673    if ( !$skip_check ) {
     1674        if ( !check_admin_referer( 'groups_send_invites' ) )
     1675            return false;
     1676    }
     1677
    16441678    // Send friend invites.
    16451679    $invited_users = groups_get_invites_for_group( $bp->loggedin_user->id, $group_obj->id );
    1646 
     1680   
    16471681    for ( $i = 0; $i < count( $invited_users ); $i++ ) {
    16481682        $member = new BP_Groups_Member( $invited_users[$i], $group_obj->id );
     
    16501684        $member->save();
    16511685    }
    1652    
     1686
    16531687    groups_notification_group_invites( $group_obj->id, $invited_users, $bp->loggedin_user->id );
    16541688   
     
    16631697    global $bp;
    16641698   
     1699    /* Check the nonce */   
     1700    if ( !check_admin_referer( 'groups_leave_group' ) )
     1701        return false;
     1702   
    16651703    if ( !$user_id )
    16661704        $user_id = $bp->loggedin_user->id;
     
    16711709       
    16721710    // This is exactly the same as deleting and invite, just is_confirmed = 1 NOT 0.
    1673     if ( !groups_uninvite_user( $user_id, $group_id ) )
     1711    if ( !groups_uninvite_user( $user_id, $group_id, true ) )
    16741712        return false;
    16751713
     
    16851723    global $bp;
    16861724   
     1725    /* Check the nonce */
     1726    if ( !check_admin_referer( 'groups_join_group' ) )
     1727        return false;
     1728       
    16871729    if ( !$user_id )
    16881730        $user_id = $bp->loggedin_user->id;
     
    17341776function groups_new_wire_post( $group_id, $content ) {
    17351777    global $group_obj;
    1736    
     1778
     1779    /* Check the nonce first. */
     1780    if ( !check_admin_referer( 'bp_wire_post' ) )
     1781        return false;
     1782
    17371783    $private = false;
    17381784    if ( $group_obj->status != 'public' )
     
    17511797    global $bp;
    17521798   
     1799    /* Check the nonce first. */
     1800    if ( !check_admin_referer( 'bp_wire_delete_link' ) )
     1801        return false;
     1802   
    17531803    if ( bp_wire_delete_post( $wire_post_id, 'groups', $table_name ) ) {       
    17541804        do_action( 'groups_deleted_wire_post', $wire_post_id );
     
    17621812    global $bp;
    17631813   
     1814    /* Check the nonce first. */
     1815    if ( !check_admin_referer( 'groups_edit_group_details' ) )
     1816        return false;
     1817   
    17641818    if ( empty( $group_name ) || empty( $group_desc ) )
    17651819        return false;
    1766        
     1820   
    17671821    $group = new BP_Groups_Group( $group_id, false, false );
    17681822    $group->name = $group_name;
     
    17831837function groups_edit_group_settings( $group_id, $enable_wire, $enable_forum, $enable_photos, $photos_admin_only, $status ) {
    17841838    global $bp;
     1839   
     1840    /* Check the nonce first. */
     1841    if ( !check_admin_referer( 'groups_edit_group_settings' ) )
     1842        return false;
    17851843   
    17861844    $group = new BP_Groups_Group( $group_id, false, false );
     
    18081866function groups_promote_member( $user_id, $group_id ) {
    18091867    global $bp;
     1868
     1869    /* Check the nonce first. */
     1870    if ( !check_admin_referer( 'groups_promote_member' ) )
     1871        return false;
    18101872   
    18111873    if ( !$bp->is_item_admin )
     
    18211883function groups_demote_member( $user_id, $group_id ) {
    18221884    global $bp;
     1885
     1886    /* Check the nonce first. */
     1887    if ( !check_admin_referer( 'groups_demote_member' ) )
     1888        return false;
    18231889   
    18241890    if ( !$bp->is_item_admin )
     
    18341900function groups_ban_member( $user_id, $group_id ) {
    18351901    global $bp;
     1902
     1903    /* Check the nonce first. */
     1904    if ( !check_admin_referer( 'groups_ban_member' ) )
     1905        return false;
    18361906   
    18371907    if ( !$bp->is_item_admin )
     
    18471917function groups_unban_member( $user_id, $group_id ) {
    18481918    global $bp;
     1919
     1920    /* Check the nonce first. */
     1921    if ( !check_admin_referer( 'groups_unban_member' ) )
     1922        return false;
    18491923   
    18501924    if ( !$bp->is_item_admin )
     
    18601934function groups_send_membership_request( $requesting_user_id, $group_id ) {
    18611935    global $bp;
     1936
     1937    /* Check the nonce first. */
     1938    if ( !check_admin_referer( 'groups_send_membership_request' ) )
     1939        return false;
    18621940
    18631941    $requesting_user = new BP_Groups_Member;
     
    18881966
    18891967function groups_accept_membership_request( $membership_id ) {
     1968   
     1969    /* Check the nonce first. */
     1970    if ( !check_admin_referer( 'groups_accept_membership_request' ) )
     1971        return false;
     1972
    18901973    $membership = new BP_Groups_Member( false, false, $membership_id );
    18911974    $membership->accept_request();
     
    19091992
    19101993function groups_reject_membership_request( $membership_id ) {
     1994
     1995    /* Check the nonce first. */
     1996    if ( !check_admin_referer( 'groups_reject_membership_request' ) )
     1997        return false;
     1998       
    19111999    $membership = new BP_Groups_Member( false, false, $membership_id );
    19122000   
     
    19352023function groups_delete_group( $group_id ) {
    19362024    global $bp;
     2025
     2026    /* Check the nonce first. */
     2027    if ( !check_admin_referer( 'groups_delete_group' ) )
     2028        return false;
    19372029   
    19382030    // Check the user is the group admin.
Note: See TracChangeset for help on using the changeset viewer.