PluginProbe ʕ •ᴥ•ʔ
WP 2FA – Two-factor authentication for WordPress / 2.2.1
WP 2FA – Two-factor authentication for WordPress v2.2.1
4.1.0 4.0.0 1.7.1 2.0.0 2.0.1 2.1.0 2.2.0 2.2.1 2.3.0 2.4.0 2.4.1 2.4.2 2.5.0 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.8.0 2.9.0 2.9.1 2.9.2 2.9.3 3.0.0 3.0.1 3.1.0 3.1.1 3.1.1.2 trunk 1.2.0 1.3.0 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.6.0 1.6.1 1.6.2 1.7.0
wp-2fa / includes / classes / Admin / class-premium-features.php
wp-2fa / includes / classes / Admin Last commit date
Controllers 4 years ago Helpers 4 years ago SettingsPages 4 years ago Views 4 years ago class-help-contact-us.php 4 years ago class-premium-features.php 4 years ago class-settings-page.php 4 years ago class-settingspage.php 4 years ago class-setup-wizard.php 4 years ago class-user-listing.php 4 years ago class-user-notices.php 4 years ago class-user-profile.php 4 years ago class-user-registered.php 4 years ago class-user.php 4 years ago index.php 5 years ago
class-premium-features.php
444 lines
1 <?php
2 /**
3 * Premium features rendering class.
4 *
5 * @package wp2fa
6 * @subpackage admin
7 * @copyright 2021 WP White Security
8 * @license https://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
9 * @link https://wordpress.org/plugins/wp-2fa/
10 * @since 2.0.0
11 */
12
13 namespace WP2FA\Admin;
14
15 /**
16 * Handles contact the features page and content.
17 */
18 class Premium_Features {
19
20 const TOP_MENU_SLUG = 'wp-2fa-premium-features';
21
22 /**
23 * Create admin menu entry and settings page
24 */
25 public function add_extra_menu_item() {
26 add_submenu_page(
27 'wp-2fa-policies',
28 esc_html__( 'Premium Features', 'wp-2fa' ),
29 esc_html__( 'Premium Features ➤', 'wp-2fa' ),
30 'manage_options',
31 self::TOP_MENU_SLUG,
32 array( $this, 'render' ),
33 100
34 );
35 }
36
37 /**
38 * Adds an upgrade banner to settings pages.
39 *
40 * @return void
41 */
42 public function add_settings_banner() {
43 $banner = '<div id="wp-2fa-side-banner">';
44 $banner .= '<img src="' . esc_url( WP_2FA_URL . 'dist/images/wizard-logo.png' ) . '">';
45 $banner .= '<p>' . esc_html__( 'Upgrade to Premium to:', 'wp-2fa' ) . '</p>';
46 $banner .= '<ul><li><span class="dashicons dashicons-yes-alt"></span>' . esc_html__( 'Login with 2FA via push notification, SMS, WhatsApp or incoming call', 'wp-2fa' ) . '</li>';
47 $banner .= '<li><span class="dashicons dashicons-yes-alt"></span>' . esc_html__( 'Add trusted devices (\'Remember this device\' option)', 'wp-2fa' ) . '</li>';
48 $banner .= '<li><span class="dashicons dashicons-yes-alt"></span> ' . esc_html__( 'Configure different 2FA policies for different user roles', 'wp-2fa' ) . '</li>';
49 $banner .= '<li><span class="dashicons dashicons-yes-alt"></span> ' . esc_html__( 'White labeling of 2FA code page', 'wp-2fa' ) . '</li>';
50 $banner .= '<li><span class="dashicons dashicons-yes-alt"></span> ' . esc_html__( 'One-click 2FA login', 'wp-2fa' ) . '</li>';
51 $banner .= '<li><span class="dashicons dashicons-yes-alt"></span> ' . esc_html__( 'Many other features', 'wp-2fa' ) . '</li>';
52 $banner .= '<li><span class="dashicons dashicons-yes-alt"></span> ' . esc_html__( 'No Ads!', 'wp-2fa' ) . '</li></ul>';
53 $banner .= '<a href="https://wp2fa.io/pricing/?utm_source=plugin&utm_medium=sidebar+advert&utm_campaign=WP2FA&utm_content=upgrade+now" class="button button-primary" target="_blank">' . esc_html__( 'Upgrade now', 'wp-2fa' ) . '</a> <a href="https://wp2fa.io/get-wp-2fa-premium-trial/?utm_source=plugin&utm_medium=sidebar+advert&utm_campaign=WP2FA&utm_content=get+trial" class="link" target="_blank">' . esc_html__( 'Get a Free 14-day trial', 'wp-2fa' ) . '</a>';
54 $banner .= '</div>';
55
56 echo $banner; // phpcs:ignore
57 }
58
59 /**
60 * Handles rendering the content.
61 *
62 * @return void
63 */
64 public function render() {
65 ?>
66 <style>
67 .features-wrap {
68 background: #fff;
69 padding: 25px 30px;
70 margin-top: 25px;
71 }
72
73 .features-wrap h2 {
74 font-size: 28px;
75 margin-bottom: 30px;
76 }
77
78 .features-wrap p {
79 font-size: 16px;
80 line-height: 28px;
81 }
82
83 .feature-list {
84 margin-bottom: 20px;
85 }
86
87 .feature-list li {
88 margin-bottom: 10px;
89 font-size: 15px;
90 }
91
92 .feature-list li .dashicons {
93 color: #3E6BFF;
94 }
95
96 .premium-cta {
97 margin: 25px 0 15px;
98 text-align: center;
99 }
100
101 .premium-cta a:not(.inverse), .table-link {
102 background-color: #3E6BFF;
103 color: #fff;
104 padding: 15px 26px;
105 border-radius: 30px;
106 font-size: 16px;
107 white-space: nowrap;
108 text-decoration: none;
109 font-weight: 700;
110 display: inline-block;
111 margin-right: 15px;
112 border: 2px solid #3E6BFF;
113 }
114
115 .premium-cta a:hover, .table-link:hover, .premium-cta a.inverse, .table-link.inverse {
116 color: #3E6BFF;
117 background-color: #fff;
118 }
119
120 .premium-cta a.inverse {
121 font-weight: 700;
122 text-decoration: none;
123 font-size: 16px;
124 }
125
126 .content-block {
127 margin-bottom: 26px;
128 border-bottom: 1px solid #eee;
129 padding-bottom: 15px;
130 }
131
132 .feature-table tr td {
133 text-align: center;
134 min-width: 200px
135 }
136 .feature-table tr td:first-of-type {
137 text-align: left;
138 font-weight: 500;
139 }
140 .feature-table td p {
141 margin-top: 0;
142 }
143 .row-head span {
144 font-size: 17px;
145 font-weight: 700;
146 }
147 .feature-table .dashicons {
148 color: #3E6BFF;
149 }
150 .feature-table .dashicons-no {
151 color: red;
152 }
153 .table-link {
154 font-size: 14px;
155 padding: 9px;
156 width: 193px;
157 margin-top: 10px;
158 }
159 .pull-up {
160 position: relative;
161 top: -23px;
162 }
163
164 .wp2fa-logo {
165 max-width: 130px;
166 }
167
168 .logo-wrap {
169 float: left;
170 margin-right: 30px;
171 }
172 </style>
173
174 <div class="wrap help-wrap features-wrap wp-2fa-settings-wrapper">
175 <div class="page-head">
176 <h2><?php esc_html_e( 'Upgrade to Premium to benefit more!', 'wp-2fa' ); ?></h2>
177 </div>
178 <div class="content-block">
179 <div class="logo-wrap">
180 <img class="wp2fa-logo" src="<?php echo WP_2FA_URL; // phpcs:ignore ?>dist/images/wp-2fa-color_opt.png" alt="">
181 </div>
182 <div>
183 <p><?php esc_html_e( 'WP 2FA is your trusted gatekeeper, keeping your website, users, customers, team members, and you secure and better protected than ever before.', 'wp-2fa' ); ?></p>
184 <p><?php esc_html_e( 'Upgrade to WP 2FA Premium to add more secure authentication options and automate more, encouraging users to utilize 2FA to its fullest extent and give your users more flexibility by allowing them to work from anywhere without compromising on security.', 'wp-2fa' ); ?></p>
185 </div>
186 </div>
187 <div class="content-block">
188 <p><?php esc_html_e( 'Upgrade to Premium to start benefiting from value-added features such as:', 'wp-2fa' ); ?></p>
189 <ul class="feature-list">
190 <li><span class="dashicons dashicons-saved"></span> <?php esc_html_e( 'More 2FA methods, including push notification, SMS, WhatsApp, and incoming call', 'wp-2fa' ); ?></li>
191 <li><span class="dashicons dashicons-saved"></span> <?php esc_html_e( 'Trusted devices: Give users the option to add trusted devices so they do not have to enter the 2FA code each time they log in', 'wp-2fa' ); ?></li>
192 <li><span class="dashicons dashicons-saved"></span> <?php esc_html_e( 'White labelling features: Gain increased trust by extending your business\' branding and tone of voice to all 2FA pages', 'wp-2fa' ); ?></li>
193 <li><span class="dashicons dashicons-saved"></span> <?php esc_html_e( 'Configure different policies for different user roles: While requiring everyone to use 2FA is generally a good idea, stricter policies for more sensitive accounts can help you keep everyone happy', 'wp-2fa' ); ?></li>
194 </ul>
195 <div class="premium-cta">
196 <a href="<?php echo esc_url( 'https://wp2fa.io/pricing/?utm_source=plugin&utm_medium=referral&utm_campaign=WP2FA&utm_content=upgrade+page+upgrade' ); ?>" target="_blank" rel="noopener"><?php esc_html_e( 'UPGRADE NOW', 'wp-2fa' ); ?></a>
197 <a class="inverse" href="<?php echo esc_url( 'https://wp2fa.io/get-wp-2fa-premium-trial/?utm_source=plugin&utm_medium=referral&utm_campaign=WP2FA&utm_content=get+trial+upgrade+page' ); ?>" target="_blank" rel="noopener"><?php esc_html_e( 'Get the Free 14-day trial', 'wp-2fa' ); ?></a>
198 </div>
199 </div>
200 <div class="content-block">
201 <p><?php esc_html_e( 'Take advantage of these benefits and many others, with prices starting from as little as $59 for 5 users per year. Below is the complete list of Premium features:', 'wp-2fa' ); ?></p>
202 <table class="c21 feature-table">
203 <tbody>
204 <tr class="c2">
205 <td class="c6" colspan="1" rowspan="1">
206 <p class="c10 c4"><span class="c5"></span></p>
207 </td>
208 <td class="c8 row-head" colspan="1" rowspan="1">
209 <p class="c7"><span class="c5"><?php esc_html_e( 'Premium', 'wp-2fa' ); ?></span></p>
210 </td>
211 <td class="c12 row-head" colspan="1" rowspan="1">
212 <p class="c7"><span class="c5"><?php esc_html_e( 'Free', 'wp-2fa' ); ?></span></p>
213 </td>
214 </tr>
215 <tr class="c2">
216 <td class="c6" colspan="1" rowspan="1">
217 <p class="c10"><span class="c5"><?php esc_html_e( 'Support', 'wp-2fa' ); ?></span></p>
218 </td>
219 <td class="c8" colspan="1" rowspan="1">
220 <p class="c7"><span class="c5"><?php esc_html_e( 'Email & forums', 'wp-2fa' ); ?></span></p>
221 </td>
222 <td class="c12" colspan="1" rowspan="1">
223 <p class="c7"><span class="c5"><?php esc_html_e( 'Forums', 'wp-2fa' ); ?></span></p>
224 </td>
225 </tr>
226 <tr class="c2">
227 <td class="c6" colspan="1" rowspan="1">
228 <p class="c10"><span class="c5"><?php esc_html_e( 'Install on unlimited websites', 'wp-2fa' ); ?></span></p>
229 </td>
230 <td class="c8" colspan="1" rowspan="1">
231 <p class="c7"><span class="c5"><span class="dashicons dashicons-saved"></span></span></p>
232 </td>
233 <td class="c12" colspan="1" rowspan="1">
234 <p class="c7"><span class="c5"><span class="dashicons dashicons-saved"></span></span></p>
235 </td>
236 </tr>
237 <tr class="c2">
238 <td class="c6" colspan="1" rowspan="1">
239 <p class="c10"><span class="c5"><?php esc_html_e( 'E-commerce, membership & other third party plugins support', 'wp-2fa' ); ?></span></p>
240 </td>
241 <td class="c8" colspan="1" rowspan="1">
242 <p class="c7"><span class="c5"><span class="dashicons dashicons-saved"></span></span></p>
243 </td>
244 <td class="c12" colspan="1" rowspan="1">
245 <p class="c7"><span class="c5"><span class="dashicons dashicons-saved"></span></span></p>
246 </td>
247 </tr>
248 <tr class="c2">
249 <td class="c6" colspan="1" rowspan="1">
250 <p class="c10"><span class="c5"><?php esc_html_e( '2FA code via mobile app', 'wp-2fa' ); ?></span></p>
251 </td>
252 <td class="c8" colspan="1" rowspan="1">
253 <p class="c7"><span class="c5"><span class="dashicons dashicons-saved"></span></span></p>
254 </td>
255 <td class="c12" colspan="1" rowspan="1">
256 <p class="c7"><span class="c5"><span class="dashicons dashicons-saved"></span></span></p>
257 </td>
258 </tr>
259 <tr class="c2">
260 <td class="c6" colspan="1" rowspan="1">
261 <p class="c10"><span class="c5"><?php esc_html_e( '2FA code over email', 'wp-2fa' ); ?></span></p>
262 </td>
263 <td class="c8" colspan="1" rowspan="1">
264 <p class="c7"><span class="c5"><span class="dashicons dashicons-saved"></span></span></p>
265 </td>
266 <td class="c12" colspan="1" rowspan="1">
267 <p class="c7"><span class="c5"><span class="dashicons dashicons-saved"></span></span></p>
268 </td>
269 </tr>
270 <tr class="c2">
271 <td class="c6" colspan="1" rowspan="1">
272 <p class="c10"><span class="c5"><?php esc_html_e( 'Backup codes', 'wp-2fa' ); ?></span></p>
273 </td>
274 <td class="c8" colspan="1" rowspan="1">
275 <p class="c7"><span class="c5"><span class="dashicons dashicons-saved"></span></span></p>
276 </td>
277 <td class="c12" colspan="1" rowspan="1">
278 <p class="c7"><span class="c5"><span class="dashicons dashicons-saved"></span></span></p>
279 </td>
280 </tr>
281 <tr class="c2">
282 <td class="c6" colspan="1" rowspan="1">
283 <p class="c10"><span class="c5"><?php esc_html_e( '2FA login with push notification', 'wp-2fa' ); ?></span></p>
284 </td>
285 <td class="c8" colspan="1" rowspan="1">
286 <p class="c7"><span class="c5"><span class="dashicons dashicons-saved"></span></span></p>
287 </td>
288 <td class="c12" colspan="1" rowspan="1">
289 <p class="c7"><span class="c5"><span class="dashicons dashicons-no"></span></span></p>
290 </td>
291 </tr>
292 <tr class="c2">
293 <td class="c6" colspan="1" rowspan="1">
294 <p class="c10"><span class="c5"><?php esc_html_e( '2FA login with SMS, WhatsApp & incoming call', 'wp-2fa' ); ?></span></p>
295 </td>
296 <td class="c8" colspan="1" rowspan="1">
297 <p class="c7"><span class="c5"><span class="dashicons dashicons-saved"></span></span></p>
298 </td>
299 <td class="c12" colspan="1" rowspan="1">
300 <p class="c7"><span class="c5"><span class="dashicons dashicons-no"></span></span></p>
301 </td>
302 </tr>
303
304 <tr class="c2">
305 <td class="c6" colspan="1" rowspan="1">
306 <p class="c10"><span class="c5"><?php esc_html_e( 'One-click 2FA login', 'wp-2fa' ); ?></span></p>
307 </td>
308 <td class="c8" colspan="1" rowspan="1">
309 <p class="c7"><span class="c5"><span class="dashicons dashicons-saved"></span></span></p>
310 </td>
311 <td class="c12" colspan="1" rowspan="1">
312 <p class="c7"><span class="c5"><span class="dashicons dashicons-no"></span></span></p>
313 </td>
314 </tr>
315 <tr class="c2">
316 <td class="c6" colspan="1" rowspan="1">
317 <p class="c10"><span class="c5"><?php esc_html_e( 'Different 2FA policies per user role', 'wp-2fa' ); ?></span></p>
318 </td>
319 <td class="c8" colspan="1" rowspan="1">
320 <p class="c7"><span class="c5"><span class="dashicons dashicons-saved"></span></span></p>
321 </td>
322 <td class="c12" colspan="1" rowspan="1">
323 <p class="c7"><span class="c5"><span class="dashicons dashicons-no"></span></span></p>
324 </td>
325 </tr>
326 <tr class="c2">
327 <td class="c6" colspan="1" rowspan="1">
328 <p class="c10"><span class="c5"><?php esc_html_e( 'Trusted devices (don\'t ask for 2FA code)', 'wp-2fa' ); ?></span></p>
329 </td>
330 <td class="c8" colspan="1" rowspan="1">
331 <p class="c7"><span class="c5"><span class="dashicons dashicons-saved"></span></span></p>
332 </td>
333 <td class="c12" colspan="1" rowspan="1">
334 <p class="c7"><span class="c5"><span class="dashicons dashicons-no"></span></span></p>
335 </td>
336 </tr>
337 <tr class="c2">
338 <td class="c6" colspan="1" rowspan="1">
339 <p class="c10"><span class="c5"><?php esc_html_e( 'Secondary 2FA backup method', 'wp-2fa' ); ?></span></p>
340 </td>
341 <td class="c8" colspan="1" rowspan="1">
342 <p class="c7"><span class="c5"><span class="dashicons dashicons-saved"></span></span></p>
343 </td>
344 <td class="c12" colspan="1" rowspan="1">
345 <p class="c7"><span class="c5"><span class="dashicons dashicons-no"></span></span></p>
346 </td>
347 </tr>
348 <tr class="c2">
349 <td class="c6" colspan="1" rowspan="1">
350 <p class="c10"><span class="c5"><?php esc_html_e( 'White labeling (logo, text, colors & fonts)', 'wp-2fa' ); ?></span></p>
351 </td>
352 <td class="c8" colspan="1" rowspan="1">
353 <p class="c7"><span class="c5"><span class="dashicons dashicons-saved"></span></span></p>
354 </td>
355 <td class="c12" colspan="1" rowspan="1">
356 <p class="c7"><span class="c5"><span class="dashicons dashicons-no"></span></span></p>
357 </td>
358 </tr>
359 <tr class="c2">
360 <td class="c6" colspan="1" rowspan="1">
361 <p class="c10"><span class="c5"><?php esc_html_e( 'Reports & Statistics', 'wp-2fa' ); ?></span></p>
362 </td>
363 <td class="c8" colspan="1" rowspan="1">
364 <p class="c7"><span class="c5"><span class="dashicons dashicons-saved"></span></span></p>
365 </td>
366 <td class="c12" colspan="1" rowspan="1">
367 <p class="c7"><span class="c5"><span class="dashicons dashicons-no"></span></span></p>
368 </td>
369 </tr>
370 <tr class="c2">
371 <td class="c6" colspan="1" rowspan="1">
372 <p class="c10"><span class="c5"><?php esc_html_e( 'Configurable 2FA code expiration time', 'wp-2fa' ); ?></span></p>
373 </td>
374 <td class="c8" colspan="1" rowspan="1">
375 <p class="c7"><span class="c5"><span class="dashicons dashicons-saved"></span></span></p>
376 </td>
377 <td class="c12" colspan="1" rowspan="1">
378 <p class="c7"><span class="c5"><span class="dashicons dashicons-no"></span></span></p>
379 </td>
380 </tr>
381 <tr class="c2">
382 <td class="c6" colspan="1" rowspan="1">
383 <p class="c10"><span class="c5"><?php esc_html_e( 'Sortable users\' 2FA status', 'wp-2fa' ); ?></span></p>
384 </td>
385 <td class="c8" colspan="1" rowspan="1">
386 <p class="c7"><span class="c5"><span class="dashicons dashicons-saved"></span></span></p>
387 </td>
388 <td class="c12" colspan="1" rowspan="1">
389 <p class="c7"><span class="c5"><span class="dashicons dashicons-no"></span></span></p>
390 </td>
391 </tr>
392 <tr class="c2">
393 <td class="c6" colspan="1" rowspan="1">
394 <p class="c10"><span class="c5"><?php esc_html_e( 'No Ads!', 'wp-2fa' ); ?></span></p>
395 </td>
396 <td class="c8" colspan="1" rowspan="1">
397 <p class="c7"><span class="c5"><span class="dashicons dashicons-saved"></span></span></p>
398 </td>
399 <td class="c12" colspan="1" rowspan="1">
400 <p class="c7"><span class="c5"><span class="dashicons dashicons-no"></span></span></p>
401 </td>
402 </tr>
403 </tbody>
404 </table>
405
406 <div class="premium-cta">
407 <a href="<?php echo esc_url( 'https://wp2fa.io/pricing/?utm_source=plugin&utm_medium=referral&utm_campaign=WP2FA&utm_content=upgrade+page+upgrade' ); ?>" target="_blank" rel="noopener"><?php esc_html_e( 'UPGRADE NOW', 'wp-2fa' ); ?></a>
408 <a class="inverse" href="<?php echo esc_url( 'https://wp2fa.io/get-wp-2fa-premium-trial/?utm_source=plugin&utm_medium=referral&utm_campaign=WP2FA&utm_content=get+trial+upgrade+page' ); ?>" target="_blank" rel="noopener"><?php esc_html_e( 'Get the Free 14-day trial', 'wp-2fa' ); ?></a>
409 </div>
410 </div>
411
412 <div>
413 <p>
414 <?php
415 $text = sprintf(
416 /* translators: 1: Link to our site 2: Link to our contact page */
417 esc_html__( 'For more information about the WP 2FA plugin visit the %1$s. If you have any questions or would like to get in touch with us, please use %2$s. We look forward to hearing from you.', 'wp-2fa' ),
418 '<a target="_blank" href="' . esc_url( 'https://wp2fa.io' ) . '">' . esc_html__( 'plugin\'s website', 'wp-2fa' ) . '</a>',
419 '<a target="_blank" href="' . esc_url( 'https://wp2fa.io/contact/' ) . '">' . esc_html__( 'our contact form', 'wp-2fa' ) . '</a>.'
420 );
421
422 echo $text; // phpcs:ignore
423 ?>
424 </p>
425 </div>
426 </div>
427 <?php
428 }
429
430 /**
431 * Add "_blank" attr to pricing link to ensure it opens in new tab.
432 *
433 * @return void
434 */
435 public function pricing_new_tab_js() { ?>
436 <script type="text/javascript">
437 jQuery( document ).ready( function() {
438 jQuery( '.wp-2fa.pricing' ).parent().attr( 'target', '_blank' );
439 });
440 </script>
441 <?php
442 }
443 }
444