Moved user (un)banning to API
This commit is contained in:
parent
c86854dcb1
commit
588efcb908
3 changed files with 46 additions and 26 deletions
|
@ -141,6 +141,8 @@ $userValidations =
|
|||
];
|
||||
|
||||
\Chibi\Router::register(['UserController', 'flagAction'], 'POST', '/user/{name}/flag', $userValidations);
|
||||
\Chibi\Router::register(['UserController', 'banAction'], 'POST', '/user/{name}/ban', $userValidations);
|
||||
\Chibi\Router::register(['UserController', 'unbanAction'], 'POST', '/user/{name}/unban', $userValidations);
|
||||
|
||||
foreach (['GET', 'POST'] as $method)
|
||||
{
|
||||
|
@ -153,8 +155,6 @@ foreach (['GET', 'POST'] as $method)
|
|||
\Chibi\Router::register(['UserController', 'listAction'], $method, '/users/{page}', $userValidations);
|
||||
\Chibi\Router::register(['UserController', 'listAction'], $method, '/users/{filter}', $userValidations);
|
||||
\Chibi\Router::register(['UserController', 'listAction'], $method, '/users/{filter}/{page}', $userValidations);
|
||||
\Chibi\Router::register(['UserController', 'banAction'], $method, '/user/{name}/ban', $userValidations);
|
||||
\Chibi\Router::register(['UserController', 'unbanAction'], $method, '/user/{name}/unban', $userValidations);
|
||||
\Chibi\Router::register(['UserController', 'acceptRegistrationAction'], $method, '/user/{name}/accept-registration', $userValidations);
|
||||
\Chibi\Router::register(['UserController', 'deleteAction'], $method, '/user/{name}/delete', $userValidations);
|
||||
\Chibi\Router::register(['UserController', 'settingsAction'], $method, '/user/{name}/settings', $userValidations);
|
||||
|
|
38
src/Api/Jobs/ToggleUserBanJob.php
Normal file
38
src/Api/Jobs/ToggleUserBanJob.php
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
class ToggleUserBanJob extends AbstractUserJob
|
||||
{
|
||||
public function execute()
|
||||
{
|
||||
$user = $this->user;
|
||||
$banned = boolval($this->getArgument(self::STATE));
|
||||
|
||||
$user->banned = $banned;
|
||||
UserModel::save($user);
|
||||
|
||||
LogHelper::log(
|
||||
$banned
|
||||
? '{user} banned {subject}'
|
||||
: '{user} unbanned {subject}', [
|
||||
'user' => TextHelper::reprUser(Auth::getCurrentUser()),
|
||||
'subject' => TextHelper::reprUser($user)]);
|
||||
}
|
||||
|
||||
public function requiresPrivilege()
|
||||
{
|
||||
return
|
||||
[
|
||||
Privilege::BanUser,
|
||||
Access::getIdentity($this->user)
|
||||
];
|
||||
}
|
||||
|
||||
public function requiresAuthentication()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public function requiresConfirmedEmail()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -33,34 +33,16 @@ class UserController
|
|||
|
||||
public function banAction($name)
|
||||
{
|
||||
$user = UserModel::findByNameOrEmail($name);
|
||||
Access::assert(
|
||||
Privilege::BanUser,
|
||||
Access::getIdentity($user));
|
||||
|
||||
if (!InputHelper::get('submit'))
|
||||
return;
|
||||
|
||||
$user->banned = true;
|
||||
UserModel::save($user);
|
||||
|
||||
LogHelper::log('{user} banned {subject}', ['subject' => TextHelper::reprUser($user)]);
|
||||
Api::run(new ToggleUserBanJob(), [
|
||||
ToggleUserBanJob::USER_NAME => $name,
|
||||
ToggleUserBanJob::STATE => true]);
|
||||
}
|
||||
|
||||
public function unbanAction($name)
|
||||
{
|
||||
$user = UserModel::findByNameOrEmail($name);
|
||||
Access::assert(
|
||||
Privilege::BanUser,
|
||||
Access::getIdentity($user));
|
||||
|
||||
if (!InputHelper::get('submit'))
|
||||
return;
|
||||
|
||||
$user->banned = false;
|
||||
UserModel::save($user);
|
||||
|
||||
LogHelper::log('{user} unbanned {subject}', ['subject' => TextHelper::reprUser($user)]);
|
||||
Api::run(new ToggleUserBanJob(), [
|
||||
ToggleUserBanJob::USER_NAME => $name,
|
||||
ToggleUserBanJob::STATE => false]);
|
||||
}
|
||||
|
||||
public function acceptRegistrationAction($name)
|
||||
|
|
Loading…
Reference in a new issue