PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.16.3
GiveWP – Donation Plugin and Fundraising Platform v4.16.3
4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / API / REST / V3 / Routes / Campaigns / Permissions / CampaignPermissions.php
give / src / API / REST / V3 / Routes / Campaigns / Permissions Last commit date
CampaignPermissions.php 5 months ago
CampaignPermissions.php
99 lines
1 <?php
2
3 namespace Give\API\REST\V3\Routes\Campaigns\Permissions;
4
5 use Give\Campaigns\ValueObjects\CampaignStatus;
6 use WP_Error;
7 use WP_REST_Request;
8 use Give\Framework\Permissions\Facades\UserPermissions;
9 /**
10 * @since 4.10.1
11 */
12 class CampaignPermissions
13 {
14 /**
15 * Check if current user can edit campaigns.
16 *
17 * @since 4.14.0 replace logic with UserPermissions facade
18 * @since 4.10.1
19 */
20 public static function canEdit(): bool
21 {
22 return UserPermissions::campaigns()->canEdit();
23 }
24
25 /**
26 * Check if current user can view private/draft/archived campaigns.
27 *
28 * @since 4.14.0 replace logic with UserPermissions facade
29 * @since 4.10.1
30 */
31 public static function canViewPrivate(): bool
32 {
33 return UserPermissions::campaigns()->canViewPrivate();
34 }
35
36 /**
37 * @since 4.10.1
38 */
39 public static function authorizationStatusCode(): int
40 {
41 return is_user_logged_in() ? 403 : 401;
42 }
43
44 /**
45 * Validate campaign access permissions for GET items (collections).
46 *
47 * @since 4.10.1
48 *
49 * @param WP_REST_Request $request
50 *
51 * @return true|WP_Error
52 */
53 public static function validationForGetItems(WP_REST_Request $request)
54 {
55 $status = $request->get_param('status');
56
57 // If no status is specified, allow access (defaults to active campaigns)
58 if (empty($status)) {
59 return true;
60 }
61
62 // Convert single status to array for consistent handling
63 if (!is_array($status)) {
64 $status = [$status];
65 }
66
67 // Check if user is trying to access any non-active campaigns
68 $hasNonActiveStatus = !empty(array_filter($status, function($campaignStatus) {
69 return $campaignStatus !== CampaignStatus::ACTIVE;
70 }));
71
72 if ($hasNonActiveStatus && !self::canViewPrivate()) {
73 return new WP_Error(
74 'rest_forbidden',
75 __('You do not have permission to view private, draft, or archived campaigns.', 'give'),
76 ['status' => self::authorizationStatusCode()]
77 );
78 }
79
80 return true;
81 }
82
83 /**
84 * Validate campaign access permissions for individual campaign GET method.
85 *
86 * @since 4.10.1
87 *
88 * @param WP_REST_Request $request
89 *
90 * @return true|WP_Error
91 */
92 public static function validationForGetItem(WP_REST_Request $request)
93 {
94 // Individual campaign access validation is handled in the controller
95 // where we can access the actual campaign data and its status
96 return true;
97 }
98 }
99