PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 2.19.4
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v2.19.4
4.7.0 4.6.6 4.6.5 4.6.4 4.6.3 4.6.2 4.6.1 4.6.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 years ago WPConfig 4 years ago AdminAccessService.php 3 years ago PermissionsService.php 4 years ago RolesService.php 2 years ago RolesServiceProvider.php 3 years ago
RolesService.php
241 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 'edit_posts' => false,
75 'delete_posts' => false,
76 ]
77 );
78
79 add_role(
80 'sc_shop_worker',
81 __( 'SureCart Shop Worker', 'surecart' ),
82 [
83 'read' => true,
84 'edit_posts' => false,
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( 'administrator', 'view_sc_shop_reports' );
125 $wp_roles->add_cap( 'administrator', 'view_sc_shop_sensitive_data' );
126 $wp_roles->add_cap( 'administrator', 'export_sc_shop_reports' );
127 $wp_roles->add_cap( 'administrator', 'manage_sc_shop_settings' );
128 $wp_roles->add_cap( 'administrator', 'manage_sc_account_settings' );
129
130 // Add the main model capabilities.
131 $capabilities = $this->getModelCaps();
132 foreach ( $capabilities as $cap_group ) {
133 foreach ( $cap_group as $cap ) {
134 $wp_roles->add_cap( 'administrator', $cap );
135 $wp_roles->add_cap( 'sc_shop_manager', $cap );
136 $wp_roles->add_cap( 'sc_shop_worker', $cap );
137 }
138 }
139
140 $wp_roles->add_cap( 'sc_shop_accountant', 'edit_sc_products' );
141 $wp_roles->add_cap( 'sc_shop_accountant', 'view_sc_shop_reports' );
142 $wp_roles->add_cap( 'sc_shop_accountant', 'export_sc_shop_reports' );
143 $wp_roles->add_cap( 'sc_shop_accountant', 'edit_sc_shop_charges' );
144 }
145 }
146
147 /**
148 * Gets the core post type capabilities
149 *
150 * @since 1.4.4
151 * @return array $capabilities Core post type capabilities
152 */
153 public function getModelCaps() {
154 $capabilities = [];
155
156 $capability_types = [
157 'sc_coupon',
158 'sc_promotion',
159 'sc_balance_transaction',
160 'sc_checkout',
161 'sc_purchase',
162 'sc_webhook',
163 'sc_product',
164 'sc_license',
165 'sc_customer',
166 'sc_order',
167 'sc_invoice',
168 'sc_price',
169 'sc_refund',
170 'sc_charge',
171 'sc_media',
172 'sc_payment_method',
173 'sc_subscription',
174 ];
175
176 foreach ( $capability_types as $capability_type ) {
177 $capabilities[ $capability_type ] = array(
178 // Models.
179 "read_{$capability_type}", // read.
180 "read_{$capability_type}s", // read.
181 "delete_{$capability_type}", // delete.
182 "edit_{$capability_type}", // edit.
183 "edit_{$capability_type}s", // edit all.
184 "edit_others_{$capability_type}s", // edit others.
185 "publish_{$capability_type}s", // publish.
186 "delete_{$capability_type}s", // delete.
187 "delete_others_{$capability_type}s", // delete others.
188
189 // Stats.
190 "view_{$capability_type}_stats",
191 );
192 }
193
194 return $capabilities;
195 }
196
197 /**
198 * Remove Roles.
199 *
200 * @return void
201 */
202 public function removeRoles() {
203 remove_role( 'sc_shop_manager' );
204 remove_role( 'sc_shop_accountant' );
205 remove_role( 'sc_shop_worker' );
206 }
207
208 /**
209 * Remove Caps.
210 *
211 * @return void
212 */
213 public function removeCaps() {
214 global $wp_roles;
215
216 if ( class_exists( 'WP_Roles' ) ) {
217 if ( ! isset( $wp_roles ) ) {
218 // phpcs:ignore
219 $wp_roles = new \WP_Roles();
220 }
221 }
222
223 $delete_caps = array_merge(
224 [
225 'view_sc_shop_reports',
226 'view_sc_shop_sensitive_data',
227 'export_sc_shop_reports',
228 'manage_sc_shop_settings',
229 'manage_sc_account_settings',
230 ],
231 $this->getModelCaps()
232 );
233
234 foreach ( $delete_caps as $cap ) {
235 foreach ( array_keys( $wp_roles->roles ) as $role ) {
236 $wp_roles->remove_cap( $role, $cap );
237 }
238 }
239 }
240 }
241