cleanup permissions related classes
This commit is contained in:
@ -18,7 +18,7 @@ textarea.parsley-error
|
|||||||
list-style-type none
|
list-style-type none
|
||||||
font-size 0.9em
|
font-size 0.9em
|
||||||
line-height 0.9em
|
line-height 0.9em
|
||||||
color: #B94A48
|
color #B94A48
|
||||||
opacity 0
|
opacity 0
|
||||||
transition all .3s ease-in
|
transition all .3s ease-in
|
||||||
-o-transition all .3s ease-in
|
-o-transition all .3s ease-in
|
||||||
|
@ -33,7 +33,6 @@ class Initializer {
|
|||||||
$this->setupRenderer();
|
$this->setupRenderer();
|
||||||
$this->setupLocalizer();
|
$this->setupLocalizer();
|
||||||
$this->setupMenu();
|
$this->setupMenu();
|
||||||
$this->setupPermissions();
|
|
||||||
$this->setupAnalytics();
|
$this->setupAnalytics();
|
||||||
$this->setupChangelog();
|
$this->setupChangelog();
|
||||||
$this->setupShortcodes();
|
$this->setupShortcodes();
|
||||||
@ -146,11 +145,6 @@ class Initializer {
|
|||||||
$widget->init();
|
$widget->init();
|
||||||
}
|
}
|
||||||
|
|
||||||
function setupPermissions() {
|
|
||||||
$permissions = new Permissions();
|
|
||||||
$permissions->init();
|
|
||||||
}
|
|
||||||
|
|
||||||
function setupChangelog() {
|
function setupChangelog() {
|
||||||
$changelog = new Changelog();
|
$changelog = new Changelog();
|
||||||
$changelog->init();
|
$changelog->init();
|
||||||
|
@ -11,7 +11,6 @@ use MailPoet\Newsletter\Shortcodes\ShortcodesHelper;
|
|||||||
use MailPoet\Settings\Hosts;
|
use MailPoet\Settings\Hosts;
|
||||||
use MailPoet\Settings\Pages;
|
use MailPoet\Settings\Pages;
|
||||||
use MailPoet\Subscribers\ImportExport\ImportExportFactory;
|
use MailPoet\Subscribers\ImportExport\ImportExportFactory;
|
||||||
use MailPoet\Util\Permissions;
|
|
||||||
use MailPoet\Listing;
|
use MailPoet\Listing;
|
||||||
use MailPoet\WP\DateTime;
|
use MailPoet\WP\DateTime;
|
||||||
|
|
||||||
@ -259,7 +258,6 @@ class Menu {
|
|||||||
'pages' => Pages::getAll(),
|
'pages' => Pages::getAll(),
|
||||||
'flags' => $flags,
|
'flags' => $flags,
|
||||||
'current_user' => wp_get_current_user(),
|
'current_user' => wp_get_current_user(),
|
||||||
'permissions' => Permissions::getAll(),
|
|
||||||
'hosts' => array(
|
'hosts' => array(
|
||||||
'web' => Hosts::getWebHosts(),
|
'web' => Hosts::getWebHosts(),
|
||||||
'smtp' => Hosts::getSMTPHosts()
|
'smtp' => Hosts::getSMTPHosts()
|
||||||
|
@ -1,43 +0,0 @@
|
|||||||
<?php
|
|
||||||
namespace MailPoet\Config;
|
|
||||||
|
|
||||||
class Permissions {
|
|
||||||
function __construct() {
|
|
||||||
}
|
|
||||||
|
|
||||||
function init() {
|
|
||||||
add_action(
|
|
||||||
'admin_init',
|
|
||||||
array($this, 'setup')
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function setup() {
|
|
||||||
// administrative roles
|
|
||||||
$roles = array('administrator', 'super_admin');
|
|
||||||
|
|
||||||
// mailpoet capabilities
|
|
||||||
$capabilities = array(
|
|
||||||
'mailpoet_newsletters',
|
|
||||||
'mailpoet_newsletter_styles',
|
|
||||||
'mailpoet_subscribers',
|
|
||||||
'mailpoet_settings',
|
|
||||||
'mailpoet_statistics'
|
|
||||||
);
|
|
||||||
|
|
||||||
foreach($roles as $role_key) {
|
|
||||||
// get role based on role key
|
|
||||||
$role = get_role($role_key);
|
|
||||||
|
|
||||||
// if the role doesn't exist, skip it
|
|
||||||
if($role !== null) {
|
|
||||||
// add capability
|
|
||||||
foreach($capabilities as $capability) {
|
|
||||||
if(!$role->has_cap($capability)) {
|
|
||||||
$role->add_cap($capability);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,13 +0,0 @@
|
|||||||
<?php
|
|
||||||
namespace MailPoet\Router;
|
|
||||||
|
|
||||||
if(!defined('ABSPATH')) exit;
|
|
||||||
|
|
||||||
class Permissions {
|
|
||||||
function __construct() {
|
|
||||||
}
|
|
||||||
|
|
||||||
function set($permissions = array()) {
|
|
||||||
return \MailPoet\Util\Permissions::set($permissions);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,97 +0,0 @@
|
|||||||
<?php
|
|
||||||
namespace MailPoet\Util;
|
|
||||||
|
|
||||||
class Permissions {
|
|
||||||
static function getCapabilities() {
|
|
||||||
$capabilities = array(
|
|
||||||
'mailpoet_newsletters' =>
|
|
||||||
__('Who can create newsletters?'),
|
|
||||||
'mailpoet_newsletter_styles' =>
|
|
||||||
__('Who can see the Styles tab in the visual editor?'),
|
|
||||||
'mailpoet_subscribers' =>
|
|
||||||
__('Who can manage subscribers?'),
|
|
||||||
'mailpoet_settings' =>
|
|
||||||
__("Who can change MailPoet's settings?")
|
|
||||||
);
|
|
||||||
$capabilities = apply_filters('mailpoet_capabilities', $capabilities);
|
|
||||||
|
|
||||||
return $capabilities;
|
|
||||||
}
|
|
||||||
|
|
||||||
static function getRoles() {
|
|
||||||
$roles = array();
|
|
||||||
|
|
||||||
global $wp_roles;
|
|
||||||
$editable_roles = apply_filters('editable_roles', $wp_roles->roles);
|
|
||||||
foreach($editable_roles as $role => $role_data) {
|
|
||||||
$roles[$role] = translate_user_role($role_data['name']);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $roles;
|
|
||||||
}
|
|
||||||
|
|
||||||
static function getAll() {
|
|
||||||
$roles = static::getRoles();
|
|
||||||
$capabilities = static::getCapabilities();
|
|
||||||
|
|
||||||
// go over each capability
|
|
||||||
foreach($capabilities as $capability => $label) {
|
|
||||||
$capability_roles = array();
|
|
||||||
// go over each role and check permission
|
|
||||||
foreach($roles as $role_key => $role_data) {
|
|
||||||
// get role object based on role key
|
|
||||||
$role = get_role($role_key);
|
|
||||||
|
|
||||||
// assign role capability
|
|
||||||
$capability_roles[$role_key] = array(
|
|
||||||
'capability' => $capability,
|
|
||||||
'is_capable' => (
|
|
||||||
in_array($role_key, array('administrator', 'super_admin'))
|
|
||||||
|| ($role->has_cap($capability))
|
|
||||||
),
|
|
||||||
'is_disabled' =>(
|
|
||||||
in_array($role_key, array('administrator', 'super_admin'))
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
$capabilities[$capability] = array(
|
|
||||||
'label' => $label,
|
|
||||||
'roles' => $capability_roles
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return array(
|
|
||||||
'roles' => $roles,
|
|
||||||
'capabilities' => $capabilities
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
static function set($permissions = array()) {
|
|
||||||
if(empty($permissions)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach($permissions as $permission) {
|
|
||||||
// ignore administrator & superadmin roles
|
|
||||||
if(in_array(
|
|
||||||
$permission['role'],
|
|
||||||
array('administrator', 'superadmin'))
|
|
||||||
) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// get role
|
|
||||||
$role = get_role($permission['role']);
|
|
||||||
if((bool)$permission['is_capable'] === true) {
|
|
||||||
// add capability to role
|
|
||||||
$role->add_cap($permission['capability']);
|
|
||||||
} else {
|
|
||||||
// remove capability to role
|
|
||||||
if($role->has_cap($permission['capability'])) {
|
|
||||||
$role->remove_cap($permission['capability']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
Reference in New Issue
Block a user