Nenhuma Descrição

AccessControl.php 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?php
  2. namespace MailPoet\Config;
  3. if (!defined('ABSPATH')) exit;
  4. use MailPoet\WP\Functions as WPFunctions;
  5. class AccessControl {
  6. const PERMISSION_ACCESS_PLUGIN_ADMIN = 'mailpoet_access_plugin_admin';
  7. const PERMISSION_MANAGE_SETTINGS = 'mailpoet_manage_settings';
  8. const PERMISSION_MANAGE_FEATURES = 'mailpoet_manage_features';
  9. const PERMISSION_MANAGE_EMAILS = 'mailpoet_manage_emails';
  10. const PERMISSION_MANAGE_SUBSCRIBERS = 'mailpoet_manage_subscribers';
  11. const PERMISSION_MANAGE_FORMS = 'mailpoet_manage_forms';
  12. const PERMISSION_MANAGE_SEGMENTS = 'mailpoet_manage_segments';
  13. const NO_ACCESS_RESTRICTION = 'mailpoet_no_access_restriction';
  14. const ALL_ROLES_ACCESS = 'mailpoet_all_roles_access';
  15. public function getDefaultPermissions() {
  16. return [
  17. self::PERMISSION_ACCESS_PLUGIN_ADMIN => WPFunctions::get()->applyFilters(
  18. 'mailpoet_permission_access_plugin_admin',
  19. [
  20. 'administrator',
  21. 'editor',
  22. ]
  23. ),
  24. self::PERMISSION_MANAGE_SETTINGS => WPFunctions::get()->applyFilters(
  25. 'mailpoet_permission_manage_settings',
  26. [
  27. 'administrator',
  28. ]
  29. ),
  30. self::PERMISSION_MANAGE_FEATURES => WPFunctions::get()->applyFilters(
  31. 'mailpoet_permission_manage_features',
  32. [
  33. 'administrator',
  34. ]
  35. ),
  36. self::PERMISSION_MANAGE_EMAILS => WPFunctions::get()->applyFilters(
  37. 'mailpoet_permission_manage_emails',
  38. [
  39. 'administrator',
  40. 'editor',
  41. ]
  42. ),
  43. self::PERMISSION_MANAGE_SUBSCRIBERS => WPFunctions::get()->applyFilters(
  44. 'mailpoet_permission_manage_subscribers',
  45. [
  46. 'administrator',
  47. ]
  48. ),
  49. self::PERMISSION_MANAGE_FORMS => WPFunctions::get()->applyFilters(
  50. 'mailpoet_permission_manage_forms',
  51. [
  52. 'administrator',
  53. ]
  54. ),
  55. self::PERMISSION_MANAGE_SEGMENTS => WPFunctions::get()->applyFilters(
  56. 'mailpoet_permission_manage_segments',
  57. [
  58. 'administrator',
  59. ]
  60. ),
  61. ];
  62. }
  63. public function getPermissionLabels() {
  64. return [
  65. self::PERMISSION_ACCESS_PLUGIN_ADMIN => WPFunctions::get()->__('Admin menu item', 'mailpoet'),
  66. self::PERMISSION_MANAGE_SETTINGS => WPFunctions::get()->__('Manage settings', 'mailpoet'),
  67. self::PERMISSION_MANAGE_FEATURES => WPFunctions::get()->__('Manage features', 'mailpoet'),
  68. self::PERMISSION_MANAGE_EMAILS => WPFunctions::get()->__('Manage emails', 'mailpoet'),
  69. self::PERMISSION_MANAGE_SUBSCRIBERS => WPFunctions::get()->__('Manage subscribers', 'mailpoet'),
  70. self::PERMISSION_MANAGE_FORMS => WPFunctions::get()->__('Manage forms', 'mailpoet'),
  71. self::PERMISSION_MANAGE_SEGMENTS => WPFunctions::get()->__('Manage segments', 'mailpoet'),
  72. ];
  73. }
  74. public function validatePermission($permission) {
  75. if ($permission === self::NO_ACCESS_RESTRICTION) return true;
  76. if ($permission === self::ALL_ROLES_ACCESS) {
  77. $capabilities = array_keys($this->getDefaultPermissions());
  78. foreach ($capabilities as $capability) {
  79. if (WPFunctions::get()->currentUserCan($capability)) {
  80. return true;
  81. }
  82. }
  83. return false;
  84. }
  85. return WPFunctions::get()->currentUserCan($permission);
  86. }
  87. }