PluginProbe
MailPoet – Newsletters, Email Marketing, and Automation / 5.38.0
MailPoet – Newsletters, Email Marketing, and Automation v5.38.0
5.38.0 5.37.0 5.36.1 5.36.0 5.35.1 5.35.0 5.34.3 5.34.2 5.34.1 5.34.0 5.33.1 5.33.0 5.32.0 5.31.0 5.30.0 5.29.0 5.28.1 5.28.0 5.27.0 5.26.0 5.26.1 5.25.0 5.24.0 4.43.0 4.43.1 All 542 releases
mailpoet / lib / Config / AccessControl.php
AccessControl.php
115 lines 3.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php // phpcs:ignore SlevomatCodingStandard.TypeHints.DeclareStrictTypes.DeclareStrictTypesMissing
2
3 namespace MailPoet\Config;
4
5 if (!defined('ABSPATH')) exit;
6
7
8 use MailPoet\Automation\Engine\Engine;
9 use MailPoet\WP\Functions as WPFunctions;
10
11 class AccessControl {
12 const PERMISSION_ACCESS_PLUGIN_ADMIN = 'mailpoet_access_plugin_admin';
13 const PERMISSION_MANAGE_SETTINGS = 'mailpoet_manage_settings';
14 const PERMISSION_MANAGE_FEATURES = 'mailpoet_manage_features';
15 const PERMISSION_MANAGE_EMAILS = 'mailpoet_manage_emails';
16 const PERMISSION_MANAGE_SUBSCRIBERS = 'mailpoet_manage_subscribers';
17 const PERMISSION_MANAGE_FORMS = 'mailpoet_manage_forms';
18 const PERMISSION_MANAGE_SEGMENTS = 'mailpoet_manage_segments';
19 const PERMISSION_MANAGE_AUTOMATIONS = Engine::CAPABILITY_MANAGE_AUTOMATIONS;
20 const PERMISSION_MANAGE_HELP = 'mailpoet_manage_help';
21 const NO_ACCESS_RESTRICTION = 'mailpoet_no_access_restriction';
22 const ALL_ROLES_ACCESS = 'mailpoet_all_roles_access';
23
24 public function getDefaultPermissions() {
25 return [
26 self::PERMISSION_ACCESS_PLUGIN_ADMIN => WPFunctions::get()->applyFilters(
27 'mailpoet_permission_access_plugin_admin',
28 [
29 'administrator',
30 'editor',
31 ]
32 ),
33 self::PERMISSION_MANAGE_SETTINGS => WPFunctions::get()->applyFilters(
34 'mailpoet_permission_manage_settings',
35 [
36 'administrator',
37 ]
38 ),
39 self::PERMISSION_MANAGE_FEATURES => WPFunctions::get()->applyFilters(
40 'mailpoet_permission_manage_features',
41 [
42 'administrator',
43 ]
44 ),
45 self::PERMISSION_MANAGE_EMAILS => WPFunctions::get()->applyFilters(
46 'mailpoet_permission_manage_emails',
47 [
48 'administrator',
49 'editor',
50 ]
51 ),
52 self::PERMISSION_MANAGE_SUBSCRIBERS => WPFunctions::get()->applyFilters(
53 'mailpoet_permission_manage_subscribers',
54 [
55 'administrator',
56 ]
57 ),
58 self::PERMISSION_MANAGE_FORMS => WPFunctions::get()->applyFilters(
59 'mailpoet_permission_manage_forms',
60 [
61 'administrator',
62 ]
63 ),
64 self::PERMISSION_MANAGE_SEGMENTS => WPFunctions::get()->applyFilters(
65 'mailpoet_permission_manage_segments',
66 [
67 'administrator',
68 ]
69 ),
70 self::PERMISSION_MANAGE_AUTOMATIONS => WPFunctions::get()->applyFilters(
71 'mailpoet_permission_manage_automations',
72 [
73 'administrator',
74 'editor',
75 ]
76 ),
77 self::PERMISSION_MANAGE_HELP => WPFunctions::get()->applyFilters(
78 'mailpoet_permission_manage_help',
79 [
80 'administrator',
81 'editor',
82 ]
83 ),
84 ];
85 }
86
87 public function getPermissionLabels() {
88 return [
89 self::PERMISSION_ACCESS_PLUGIN_ADMIN => __('Admin menu item', 'mailpoet'),
90 self::PERMISSION_MANAGE_SETTINGS => __('Manage settings', 'mailpoet'),
91 self::PERMISSION_MANAGE_FEATURES => __('Manage features', 'mailpoet'),
92 self::PERMISSION_MANAGE_EMAILS => __('Manage emails', 'mailpoet'),
93 self::PERMISSION_MANAGE_SUBSCRIBERS => __('Manage subscribers', 'mailpoet'),
94 self::PERMISSION_MANAGE_FORMS => __('Manage forms', 'mailpoet'),
95 self::PERMISSION_MANAGE_SEGMENTS => __('Manage segments', 'mailpoet'),
96 self::PERMISSION_MANAGE_AUTOMATIONS => __('Manage automations', 'mailpoet'),
97 self::PERMISSION_MANAGE_HELP => __('Manage help', 'mailpoet'),
98 ];
99 }
100
101 public function validatePermission($permission) {
102 if ($permission === self::NO_ACCESS_RESTRICTION) return true;
103 if ($permission === self::ALL_ROLES_ACCESS) {
104 $capabilities = array_keys($this->getDefaultPermissions());
105 foreach ($capabilities as $capability) {
106 if (WPFunctions::get()->currentUserCan($capability)) {
107 return true;
108 }
109 }
110 return false;
111 }
112 return WPFunctions::get()->currentUserCan($permission);
113 }
114 }
115