1
0
Fork 1
mirror of https://github.com/pixelfed/pixelfed.git synced 2025-03-17 09:16:17 +00:00

Update InternalApiController, update modAction method

This commit is contained in:
Daniel Supernault 2020-04-24 13:10:48 -06:00
parent 30284f5ff0
commit 9b37c439f7
No known key found for this signature in database
GPG key ID: 0DEF1C662C9033F7

View file

@ -30,6 +30,7 @@ use League\Fractal\Serializer\ArraySerializer;
use League\Fractal\Pagination\IlluminatePaginatorAdapter; use League\Fractal\Pagination\IlluminatePaginatorAdapter;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use App\Services\ModLogService;
class InternalApiController extends Controller class InternalApiController extends Controller
{ {
@ -161,24 +162,23 @@ class InternalApiController extends Controller
public function modAction(Request $request) public function modAction(Request $request)
{ {
abort_unless(Auth::user()->is_admin, 403); abort_unless(Auth::user()->is_admin, 400);
$this->validate($request, [ $this->validate($request, [
'action' => [ 'action' => [
'required', 'required',
'string', 'string',
Rule::in([ Rule::in([
'autocw', 'addcw',
'noautolink', 'remcw',
'unlisted', 'unlist'
'disable',
'suspend'
]) ])
], ],
'item_id' => 'required|integer|min:1', 'item_id' => 'required|integer|min:1',
'item_type' => [ 'item_type' => [
'required', 'required',
'string', 'string',
Rule::in(['status']) Rule::in(['profile', 'status'])
] ]
]); ]);
@ -187,48 +187,61 @@ class InternalApiController extends Controller
$item_type = $request->input('item_type'); $item_type = $request->input('item_type');
switch($action) { switch($action) {
case 'autocw': case 'addcw':
$profile = $item_type == 'status' ? Status::findOrFail($item_id)->profile : null; $status = Status::findOrFail($item_id);
$profile->cw = true; $status->is_nsfw = true;
$profile->save(); $status->save();
ModLogService::boot()
->user(Auth::user())
->objectUid($status->profile->user_id)
->objectId($status->id)
->objectType('App\Status::class')
->action('admin.status.moderate')
->metadata([
'action' => 'cw',
'message' => 'Success!'
])
->accessLevel('admin')
->save();
break; break;
case 'noautolink': case 'remcw':
$profile = $item_type == 'status' ? Status::findOrFail($item_id)->profile : null; $status = Status::findOrFail($item_id);
$profile->no_autolink = true; $status->is_nsfw = false;
$profile->save(); $status->save();
ModLogService::boot()
->user(Auth::user())
->objectUid($status->profile->user_id)
->objectId($status->id)
->objectType('App\Status::class')
->action('admin.status.moderate')
->metadata([
'action' => 'remove_cw',
'message' => 'Success!'
])
->accessLevel('admin')
->save();
break; break;
case 'unlisted': case 'unlist':
$profile = $item_type == 'status' ? Status::findOrFail($item_id)->profile : null; $status = Status::whereScope('public')->findOrFail($item_id);
$profile->unlisted = true; $status->scope = $status->visibility = 'unlisted';
$profile->save(); $status->save();
App\Services\PublicTimelineService::del($status->id);
ModLogService::boot()
->user(Auth::user())
->objectUid($status->profile->user_id)
->objectId($status->id)
->objectType('App\Status::class')
->action('admin.status.moderate')
->metadata([
'action' => 'unlist',
'message' => 'Success!'
])
->accessLevel('admin')
->save();
break; break;
case 'disable':
$profile = $item_type == 'status' ? Status::findOrFail($item_id)->profile : null;
$user = $profile->user;
$profile->status = 'disabled';
$user->status = 'disabled';
$profile->save();
$user->save();
break;
case 'suspend':
$profile = $item_type == 'status' ? Status::findOrFail($item_id)->profile : null;
$user = $profile->user;
$profile->status = 'suspended';
$user->status = 'suspended';
$profile->save();
$user->save();
break;
default:
# code...
break;
} }
Cache::forget('profiles:private');
return ['msg' => 200]; return ['msg' => 200];
} }