PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 3.0.3
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v3.0.3
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 1 year ago WPConfig 3 years ago AdminAccessService.php 3 years ago PermissionsService.php 3 years ago RolesService.php 2 years ago RolesServiceProvider.php 3 years ago
RolesService.php
242 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 'sc_affiliate',
175 ];
176
177 foreach ( $capability_types as $capability_type ) {
178 $capabilities[ $capability_type ] = array(
179 // Models.
180 "read_{$capability_type}", // read.
181 "read_{$capability_type}s", // read.
182 "delete_{$capability_type}", // delete.
183 "edit_{$capability_type}", // edit.
184 "edit_{$capability_type}s", // edit all.
185 "edit_others_{$capability_type}s", // edit others.
186 "publish_{$capability_type}s", // publish.
187 "delete_{$capability_type}s", // delete.
188 "delete_others_{$capability_type}s", // delete others.
189
190 // Stats.
191 "view_{$capability_type}_stats",
192 );
193 }
194
195 return $capabilities;
196 }
197
198 /**
199 * Remove Roles.
200 *
201 * @return void
202 */
203 public function removeRoles() {
204 remove_role( 'sc_shop_manager' );
205 remove_role( 'sc_shop_accountant' );
206 remove_role( 'sc_shop_worker' );
207 }
208
209 /**
210 * Remove Caps.
211 *
212 * @return void
213 */
214 public function removeCaps() {
215 global $wp_roles;
216
217 if ( class_exists( 'WP_Roles' ) ) {
218 if ( ! isset( $wp_roles ) ) {
219 // phpcs:ignore
220 $wp_roles = new \WP_Roles();
221 }
222 }
223
224 $delete_caps = array_merge(
225 [
226 'view_sc_shop_reports',
227 'view_sc_shop_sensitive_data',
228 'export_sc_shop_reports',
229 'manage_sc_shop_settings',
230 'manage_sc_account_settings',
231 ],
232 $this->getModelCaps()
233 );
234
235 foreach ( $delete_caps as $cap ) {
236 foreach ( array_keys( $wp_roles->roles ) as $role ) {
237 $wp_roles->remove_cap( $role, $cap );
238 }
239 }
240 }
241 }
242