Skip to content

Commit b1fc1ca

Browse files
committed
#1560 Fix - Address Copilot review: defer_role by plan type, sanitize transaction_id, respect meta auth chain
1 parent 3534126 commit b1fc1ca

4 files changed

Lines changed: 7 additions & 5 deletions

File tree

modules/membership/includes/Admin.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1010,8 +1010,8 @@ public function protect_membership_post_meta() {
10101010
* @return bool True when the evaluated user can manage the site's options.
10111011
*/
10121012
public function can_manage_membership_meta( $allowed = false, $meta_key = '', $object_id = 0, $user_id = 0, $cap = '', $caps = array() ) {
1013-
// Check the user WordPress is evaluating, not the current request user, so the callback is correct when caps are tested for another user.
1014-
return user_can( $user_id, 'manage_options' );
1013+
// Further restrict, never override: an earlier deny in the auth chain must stand.
1014+
return $allowed && user_can( $user_id, 'manage_options' );
10151015
}
10161016

10171017
/**

modules/membership/includes/Admin/Services/MembersService.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ public function prepare_members_data( $data, $context = 'admin' ) {
163163
'membership' => absint( $data['membership'] ),
164164
'start_date' => date( 'Y-m-d', strtotime( $data['start_date'] ) ),
165165
'payment_method' => sanitize_text_field( $data['payment_method'] ?? '' ),
166+
'type' => isset( $membership_meta['type'] ) ? sanitize_text_field( $membership_meta['type'] ) : 'unknown',
166167
);
167168

168169
if ( isset( $data['is_purchasing_multiple'] ) ) {

modules/membership/includes/Admin/Services/MembershipService.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -233,8 +233,9 @@ public function create_membership_order_and_subscription( $data ) {
233233
$members_data = $this->members_service->prepare_members_data( $data, 'frontend' );
234234
$member = get_user_by( 'login', $data['username'] );
235235

236-
// Update user source and add membership_role.
237-
$members_data['defer_role'] = 'free' !== ( $members_data['membership_data']['payment_method'] ?? '' );
236+
// Update user source and add membership_role; a free plan always grants immediately.
237+
$members_data['defer_role'] = 'free' !== ( $members_data['membership_data']['type'] ?? 'unknown' )
238+
&& 'free' !== ( $members_data['membership_data']['payment_method'] ?? '' );
238239
$this->members_service->update_user_meta( $members_data, $member->ID );
239240

240241
$subscription_service = new SubscriptionService();

modules/membership/includes/Templates/thank-you-page.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
$bank_data = ( isset( $_GET['info'] ) && ! empty( $_GET['info'] ) ) ? wp_kses_post( $_GET['info'] ) : '';
44
$show_bank_data = ( 'Free' === $bank_data || empty( $bank_data ) ) ? false : true;
5-
$transaction_id = ( isset( $_GET['transaction_id'] ) && ! empty( $_GET['transaction_id'] ) ) ? wp_kses_post( $_GET['transaction_id'] ) : '';
5+
$transaction_id = ( isset( $_GET['transaction_id'] ) && ! empty( $_GET['transaction_id'] ) ) ? sanitize_text_field( wp_unslash( $_GET['transaction_id'] ) ) : '';
66
$username = ( isset( $_GET['username'] ) && ! empty( $_GET['username'] ) ) ? wp_kses_post( $_GET['username'] ) : '';
77
$main_content = ! empty( $attributes['header'] ) ? wp_kses_post( $attributes['header'] ) : sprintf(
88
__( 'Thank You! Your registration was completed successfully.', 'user-registration' ),

0 commit comments

Comments
 (0)