Add user flags API endpoint [MAILPOET-1677]
This commit is contained in:
committed by
M. Shull
parent
33847397f3
commit
6218166ca1
41
lib/API/JSON/v1/UserFlags.php
Normal file
41
lib/API/JSON/v1/UserFlags.php
Normal file
@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
namespace MailPoet\API\JSON\v1;
|
||||
|
||||
use MailPoet\API\JSON\Endpoint as APIEndpoint;
|
||||
use MailPoet\API\JSON\Error as APIError;
|
||||
use MailPoet\Config\AccessControl;
|
||||
use MailPoet\Services\Bridge;
|
||||
use MailPoet\Settings\UserFlags as UserFlagsController;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
|
||||
if (!defined('ABSPATH')) exit;
|
||||
|
||||
class UserFlags extends APIEndpoint {
|
||||
|
||||
/** @var UserFlagsController */
|
||||
private $user_flags;
|
||||
|
||||
public $permissions = array(
|
||||
'global' => AccessControl::PERMISSION_MANAGE_SETTINGS
|
||||
);
|
||||
|
||||
function __construct(UserFlagsController $user_flags) {
|
||||
$this->user_flags = $user_flags;
|
||||
}
|
||||
|
||||
function set(array $flags = []) {
|
||||
if (empty($flags)) {
|
||||
return $this->badRequest(
|
||||
array(
|
||||
APIError::BAD_REQUEST =>
|
||||
WPFunctions::get()->__('You have not specified any user flags to be saved.', 'mailpoet')
|
||||
));
|
||||
} else {
|
||||
foreach ($flags as $name => $value) {
|
||||
$this->user_flags->set($name, $value);
|
||||
}
|
||||
return $this->successResponse([]);
|
||||
}
|
||||
}
|
||||
}
|
@ -8,6 +8,7 @@ if (!defined('ABSPATH')) exit;
|
||||
class AccessControl {
|
||||
const PERMISSION_ACCESS_PLUGIN_ADMIN = 'mailpoet_access_plugin_admin';
|
||||
const PERMISSION_MANAGE_SETTINGS = 'mailpoet_manage_settings';
|
||||
const PERMISSION_MANAGE_USER_FLAGS = 'mailpoet_manage_user_flags';
|
||||
const PERMISSION_MANAGE_EMAILS = 'mailpoet_manage_emails';
|
||||
const PERMISSION_MANAGE_SUBSCRIBERS = 'mailpoet_manage_subscribers';
|
||||
const PERMISSION_MANAGE_FORMS = 'mailpoet_manage_forms';
|
||||
@ -29,6 +30,13 @@ class AccessControl {
|
||||
'administrator'
|
||||
)
|
||||
),
|
||||
self::PERMISSION_MANAGE_USER_FLAGS => WPFunctions::get()->applyFilters(
|
||||
'mailpoet_permission_manage_user_flags',
|
||||
array(
|
||||
'administrator',
|
||||
'editor'
|
||||
)
|
||||
),
|
||||
self::PERMISSION_MANAGE_EMAILS => WPFunctions::get()->applyFilters(
|
||||
'mailpoet_permission_manage_emails',
|
||||
array(
|
||||
|
@ -49,6 +49,7 @@ class ContainerConfigurator implements IContainerConfigurator {
|
||||
$container->autowire(\MailPoet\API\JSON\v1\SendingQueue::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\API\JSON\v1\Services::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\API\JSON\v1\Settings::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\API\JSON\v1\UserFlags::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\API\JSON\v1\Setup::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\API\JSON\v1\Subscribers::class)->setPublic(true);
|
||||
// Config
|
||||
@ -92,6 +93,8 @@ class ContainerConfigurator implements IContainerConfigurator {
|
||||
$container->autowire(\MailPoet\Segments\WooCommerce::class)->setPublic(true);
|
||||
// Settings
|
||||
$container->autowire(\MailPoet\Settings\SettingsController::class)->setPublic(true);
|
||||
// User Flags
|
||||
$container->autowire(\MailPoet\Settings\UserFlags::class)->setPublic(true);
|
||||
// Subscription
|
||||
$container->autowire(\MailPoet\Subscription\Comment::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\Subscription\Form::class)->setPublic(true);
|
||||
|
62
tests/integration/API/JSON/v1/UserFlagsTest.php
Normal file
62
tests/integration/API/JSON/v1/UserFlagsTest.php
Normal file
@ -0,0 +1,62 @@
|
||||
<?php
|
||||
namespace MailPoet\Test\API\JSON\v1;
|
||||
|
||||
use Codeception\Stub;
|
||||
use MailPoet\API\JSON\Response as APIResponse;
|
||||
use MailPoet\API\JSON\Error as APIError;
|
||||
use MailPoet\API\JSON\v1\UserFlags;
|
||||
use MailPoet\Models\UserFlag;
|
||||
use MailPoet\Settings\UserFlags as UserFlagsController;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
|
||||
class UserFlagsTest extends \MailPoetTest {
|
||||
|
||||
/** @var Settings */
|
||||
private $endpoint;
|
||||
|
||||
/** @var UserFlagsController */
|
||||
private $user_flags;
|
||||
|
||||
function _before() {
|
||||
parent::_before();
|
||||
$this->user_flags = Stub::make(new UserFlagsController, [
|
||||
'getDefaults' => function() {
|
||||
return [
|
||||
'flag_1' => 'default_value_1',
|
||||
'flag_2' => 'default_value_2',
|
||||
];
|
||||
},
|
||||
]);
|
||||
$this->user_flags->set('flag_1', 'value_1');
|
||||
$this->endpoint = new UserFlags($this->user_flags);
|
||||
}
|
||||
|
||||
function testItCanSetUserFlags() {
|
||||
$new_flags = [
|
||||
'flag_1' => 'new_value_1',
|
||||
'flag_3' => 'new_value_3',
|
||||
];
|
||||
|
||||
$response = $this->endpoint->set(/* missing data */);
|
||||
expect($response->errors[0]['error'])->equals(APIError::BAD_REQUEST);
|
||||
expect($response->status)->equals(APIResponse::STATUS_BAD_REQUEST);
|
||||
|
||||
expect($this->user_flags->getAll())->equals([
|
||||
'flag_1' => 'value_1',
|
||||
'flag_2' => 'default_value_2',
|
||||
]);
|
||||
|
||||
$response = $this->endpoint->set($new_flags);
|
||||
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||
|
||||
expect($this->user_flags->getAll())->equals([
|
||||
'flag_1' => 'new_value_1',
|
||||
'flag_2' => 'default_value_2',
|
||||
'flag_3' => 'new_value_3',
|
||||
]);
|
||||
}
|
||||
|
||||
function _after() {
|
||||
\ORM::forTable(UserFlag::$_table)->deleteMany();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user