guillermo- banning architecture [skip ci]

This commit is contained in:
ivan 2016-11-30 19:16:18 -03:00
parent f3c1882a13
commit f6ae50ef87
6 changed files with 111 additions and 0 deletions

View File

@ -11,6 +11,9 @@ include 'user/get.php';
include 'user/get-users.php';
include 'user/get-user.php';
include 'user/delete.php';
include 'user/ban.php';
include 'user/un-ban.php';
include 'user/list-ban.php';
$userControllers = new ControllerGroup();
$userControllers->setGroupPath('/user');
@ -27,4 +30,7 @@ $userControllers->addController(new GetUserController);
$userControllers->addController(new GetUsersController);
$userControllers->addController(new GetUserByIdController);
$userControllers->addController(new DeleteUserController);
$userControllers->addController(new BanUserController);
$userControllers->addController(new UnBanUserController);
$userControllers->addController(new ListBanUserController);
$userControllers->finalize();

View File

@ -0,0 +1,37 @@
<?php
use Respect\Validation\Validator as DataValidator;
class BanUserController extends Controller {
const PATH = '/ban';
public function validations() {
return [
'permission' => 'staff_1',
'requestData' => [
'email' => [
'validation' => DataValidator::email(),
'error' => ERRORS::INVALID_EMAIL
]
]
];
}
public function handler() {
$email = Controller::request('email');
$banRow = Ban::getDataStore($email,'email');
if($banRow->isNull()) {
$ban = new Ban();
$ban->setProperties(array(
'email' => $email
));
$ban->store();
Response::respondSuccess();
} else {
Response::respondError(ERRORS::ALREADY_BANNED);
}
}
}

View File

@ -0,0 +1,18 @@
<?php
use Respect\Validation\Validator as DataValidator;
class ListBanUserController extends Controller {
const PATH = '/list-ban';
public function validations() {
return [
'permission' => 'staff_1',
'requestData' => []
];
}
public function handler() {
$banList = Ban::getAll()->toArray();
Response::respondSuccess($banList);
}
}

View File

@ -0,0 +1,32 @@
<?php
use Respect\Validation\Validator as DataValidator;
class UnBanUserController extends Controller {
const PATH = '/un-ban';
public function validations() {
return [
'permission' => 'staff_1',
'requestData' => [
'email' => [
'validation' => DataValidator::email(),
'error' => ERRORS::INVALID_EMAIL
]
]
];
}
public function handler() {
$email = Controller::request('email');
$banRow = Ban::getDataStore($email,'email');
if($banRow->isNull()) {
Response::respondError(ERRORS::INVALID_EMAIL);
} else {
$banRow->delete();
Response::respondSuccess();
}
}
}

View File

@ -25,4 +25,5 @@ class ERRORS {
const INVALID_SEARCH = 'INVALID_SEARCH';
const INVALID_ORDER = 'INVALID_ORDER';
const INVALID_USER = 'INVALID_USER';
const ALREADY_BANNED = 'ALREADY_BANNED';
}

17
server/models/Ban.php Normal file
View File

@ -0,0 +1,17 @@
<?php
class Ban extends DataStore {
const TABLE = 'ban';
public static function getProps() {
return array (
'email'
);
}
public function getDefaultProps() {
return array();
}
public function toArray() {
return $this->email;
}
}