PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.16.1
GiveWP – Donation Plugin and Fundraising Platform v4.16.1
4.17.0 4.16.9 4.16.8.1 4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 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 All 256 releases
give / src / DonorDashboards / Routes / VerifyEmailRoute.php

VerifyEmailRoute.php in GiveWP – Donation Plugin and Fundraising Platform 4.16.1, at src/DonorDashboards/Routes/VerifyEmailRoute.php

139 lines 3.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Give\DonorDashboards\Routes;
4
5 use Give\API\RestRoute;
6 use WP_REST_Request;
7 use WP_REST_Response;
8
9 /**
10 * @since 2.10.0
11 */
12 class VerifyEmailRoute implements RestRoute
13 {
14
15 use Captcha\ProtectedRoute;
16
17 /** @var string */
18 protected $endpoint = 'donor-dashboard/verify-email';
19
20 /**
21 * @inheritDoc
22 */
23 public function registerRoute()
24 {
25 register_rest_route(
26 'give-api/v2',
27 $this->endpoint,
28 [
29 [
30 'methods' => 'POST',
31 'callback' => [$this, 'handleRequest'],
32 'permission_callback' => '__return_true',
33 ],
34 'args' => [
35 'email' => [
36 'type' => 'string',
37 'required' => true,
38 ],
39 'g-recaptcha-response' => [
40 'type' => 'string',
41 'required' => false,
42 ],
43 ],
44 ]
45 );
46 }
47
48 /**
49 * Handles login request
50 *
51 * @since 2.10.0
52 *
53 * @return WP_REST_Response
54 *
55 */
56 public function handleRequest(WP_REST_Request $request)
57 {
58 if (!$this->validateRecaptcha(
59 $request->get_param('g-recaptcha-response'),
60 $request,
61 'g-recaptcha-response'
62 )) {
63 return new WP_REST_Response(
64 [
65 'status' => 400,
66 'response' => 'error',
67 'body_response' => [
68 'error' => 'email_failed',
69 'message' => esc_html__('Unable to send email. Please try again.', 'give'),
70 ],
71 ]
72 );
73 }
74
75 Give()->email_access->init();
76
77 $email = $request->get_param('email');
78
79 $donor = Give()->donors->get_donor_by('email', give_clean($email));
80
81 if ($donor && Give()->email_access->can_send_email($donor->id)) {
82 $sent = Give()->email_access->send_email($donor->id, $donor->email);
83
84 if ($sent === true) {
85 $sentMessage = (string)apply_filters(
86 'give_email_access_mail_send_notice',
87 esc_html__(
88 'Email sent. If not received, make sure it is a valid donor email.',
89 'give'
90 )
91 );
92
93 return new WP_REST_Response(
94 [
95 'status' => 200,
96 'response' => 'success',
97 'body_response' => [
98 'message' => $sentMessage,
99 ],
100 ]
101 );
102 }
103
104 $failedMessage = esc_html__('Unable to send email. Please try again.', 'give');
105
106 return new WP_REST_Response(
107 [
108 'status' => 400,
109 'response' => 'error',
110 'body_response' => [
111 'error' => 'email_failed',
112 'message' => $failedMessage,
113 ],
114 ]
115 );
116 }
117
118 $value = Give()->email_access->verify_throttle / 60;
119 $spamMessage = (string)apply_filters(
120 'give_email_access_requests_exceed_notice',
121 sprintf(
122 esc_html__('Email sent. If not received, make sure it is a valid donor email.', 'give'),
123 sprintf(_n('%s minute', '%s minutes', $value, 'give'), $value)
124 ),
125 $value
126 );
127
128 return new WP_REST_Response(
129 [
130 'status' => 400,
131 'response' => 'error',
132 'body_response' => [
133 'message' => $spamMessage,
134 ],
135 ]
136 );
137 }
138 }
139