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