PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.5.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.5.0
4.5.1 4.5.0 4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 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.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / app / src / Permissions / RolesService.php
surecart / app / src / Permissions Last commit date
Models 2 months ago WPConfig 1 year ago AdminAccessService.php 3 years ago PermissionsService.php 3 years ago PermissionsServiceProvider.php 1 year ago RolesService.php 4 months ago SureCartSaltService.php 1 year ago
RolesService.php
248 lines
1 <?php
2 namespace SureCart\Permissions;
3
4 /**
5 * Adds roles and capabilities.
6 */
7 class RolesService {
8 /**
9 * Create roles and caps.
10 *
11 * @return void
12 */
13 public function create() {
14 $this->addRoles();
15 $this->addCaps();
16 }
17
18 /**
19 * Create roles and caps.
20 *
21 * @return void
22 */
23 public function delete() {
24 $this->removeRoles();
25 // $this->removeCaps();
26 }
27
28 /**
29 * Add Roles.
30 *
31 * @return void
32 */
33 public function addRoles() {
34 add_role(
35 'sc_shop_manager',
36 __( 'SureCart Shop Manager', 'surecart' ),
37 [
38 'read' => true,
39 'edit_posts' => true,
40 'delete_posts' => true,
41 'unfiltered_html' => true,
42 'upload_files' => true,
43 'export' => true,
44 'import' => true,
45 'delete_others_pages' => true,
46 'delete_others_posts' => true,
47 'delete_pages' => true,
48 'delete_private_pages' => true,
49 'delete_private_posts' => true,
50 'delete_published_pages' => true,
51 'delete_published_posts' => true,
52 'edit_others_pages' => true,
53 'edit_others_posts' => true,
54 'edit_pages' => true,
55 'edit_private_pages' => true,
56 'edit_private_posts' => true,
57 'edit_published_pages' => true,
58 'edit_published_posts' => true,
59 'manage_categories' => true,
60 'manage_links' => true,
61 'moderate_comments' => true,
62 'publish_pages' => true,
63 'publish_posts' => true,
64 'read_private_pages' => true,
65 'read_private_posts' => true,
66 ]
67 );
68
69 add_role(
70 'sc_shop_accountant',
71 __( 'SureCart Accountant', 'surecart' ),
72 [
73 'read' => true,
74 'upload_files' => true,
75 'edit_posts' => true,
76 'delete_posts' => false,
77 ]
78 );
79
80 add_role(
81 'sc_shop_worker',
82 __( 'SureCart Shop Worker', 'surecart' ),
83 [
84 'read' => true,
85 'upload_files' => true,
86 'delete_posts' => false,
87 ]
88 );
89
90 add_role(
91 'sc_customer',
92 __( 'SureCart Customer', 'surecart' ),
93 [
94 'read' => true,
95 ]
96 );
97 }
98
99 /**
100 * Add new shop-specific capabilities
101 *
102 * @since 1.4.4
103 * @global \WP_Roles $wp_roles
104 * @return void
105 */
106 public function addCaps() {
107 global $wp_roles;
108
109 if ( class_exists( 'WP_Roles' ) ) {
110 if ( ! isset( $wp_roles ) ) {
111 // phpcs:ignore
112 $wp_roles = new \WP_Roles();
113 }
114 }
115
116 if ( is_object( $wp_roles ) ) {
117 $wp_roles->add_cap( 'sc_shop_manager', 'view_sc_shop_reports' );
118 $wp_roles->add_cap( 'sc_shop_manager', 'view_sc_shop_sensitive_data' );
119 $wp_roles->add_cap( 'sc_shop_manager', 'export_sc_shop_reports' );
120 $wp_roles->add_cap( 'sc_shop_manager', 'manage_sc_shop_settings' );
121 $wp_roles->add_cap( 'sc_shop_manager', 'list_users' );
122 $wp_roles->add_cap( 'sc_shop_manager', 'edit_user' );
123
124 $wp_roles->add_cap( 'sc_shop_worker', 'edit_posts' );
125 $wp_roles->add_cap( 'sc_shop_worker', 'edit_published_posts' );
126 $wp_roles->add_cap( 'sc_shop_worker', 'edit_others_posts' );
127
128 $wp_roles->add_cap( 'administrator', 'view_sc_shop_reports' );
129 $wp_roles->add_cap( 'administrator', 'view_sc_shop_sensitive_data' );
130 $wp_roles->add_cap( 'administrator', 'export_sc_shop_reports' );
131 $wp_roles->add_cap( 'administrator', 'manage_sc_shop_settings' );
132 $wp_roles->add_cap( 'administrator', 'manage_sc_account_settings' );
133
134 // Add the main model capabilities.
135 $capabilities = $this->getModelCaps();
136 foreach ( $capabilities as $cap_group ) {
137 foreach ( $cap_group as $cap ) {
138 $wp_roles->add_cap( 'administrator', $cap );
139 $wp_roles->add_cap( 'sc_shop_manager', $cap );
140 $wp_roles->add_cap( 'sc_shop_worker', $cap );
141 $wp_roles->add_cap( 'sc_shop_accountant', $cap );
142 }
143 }
144
145 $wp_roles->add_cap( 'sc_shop_accountant', 'view_sc_shop_reports' );
146 $wp_roles->add_cap( 'sc_shop_accountant', 'export_sc_shop_reports' );
147 $wp_roles->add_cap( 'sc_shop_accountant', 'edit_sc_shop_charges' );
148 }
149 }
150
151 /**
152 * Gets the core post type capabilities
153 *
154 * @since 1.4.4
155 * @return array $capabilities Core post type capabilities
156 */
157 public function getModelCaps() {
158 $capabilities = [];
159
160 $capability_types = [
161 'sc_coupon',
162 'sc_promotion',
163 'sc_balance_transaction',
164 'sc_checkout',
165 'sc_purchase',
166 'sc_webhook',
167 'sc_product',
168 'sc_license',
169 'sc_customer',
170 'sc_order',
171 'sc_invoice',
172 'sc_price',
173 'sc_refund',
174 'sc_dispute',
175 'sc_charge',
176 'sc_media',
177 'sc_payment_method',
178 'sc_subscription',
179 'sc_affiliate',
180 'sc_review',
181 ];
182
183 foreach ( $capability_types as $capability_type ) {
184 $capabilities[ $capability_type ] = array(
185 // Models.
186 "read_{$capability_type}", // read.
187 "read_{$capability_type}s", // read.
188 "delete_{$capability_type}", // delete.
189 "edit_{$capability_type}", // edit.
190 "edit_{$capability_type}s", // edit all.
191 "edit_others_{$capability_type}s", // edit others.
192 "publish_{$capability_type}s", // publish.
193 "delete_{$capability_type}s", // delete.
194 "delete_others_{$capability_type}s", // delete others.
195
196 // Stats.
197 "view_{$capability_type}_stats",
198 );
199 }
200
201 return $capabilities;
202 }
203
204 /**
205 * Remove Roles.
206 *
207 * @return void
208 */
209 public function removeRoles() {
210 remove_role( 'sc_shop_manager' );
211 remove_role( 'sc_shop_accountant' );
212 remove_role( 'sc_shop_worker' );
213 }
214
215 /**
216 * Remove Caps.
217 *
218 * @return void
219 */
220 public function removeCaps() {
221 global $wp_roles;
222
223 if ( class_exists( 'WP_Roles' ) ) {
224 if ( ! isset( $wp_roles ) ) {
225 // phpcs:ignore
226 $wp_roles = new \WP_Roles();
227 }
228 }
229
230 $delete_caps = array_merge(
231 [
232 'view_sc_shop_reports',
233 'view_sc_shop_sensitive_data',
234 'export_sc_shop_reports',
235 'manage_sc_shop_settings',
236 'manage_sc_account_settings',
237 ],
238 $this->getModelCaps()
239 );
240
241 foreach ( $delete_caps as $cap ) {
242 foreach ( array_keys( $wp_roles->roles ) as $role ) {
243 $wp_roles->remove_cap( $role, $cap );
244 }
245 }
246 }
247 }
248