mirror of
https://github.com/pixelfed/pixelfed.git
synced 2024-11-25 15:55:22 +00:00
Update admin api
This commit is contained in:
parent
0420368477
commit
d5dc928224
2 changed files with 98 additions and 0 deletions
|
@ -9,6 +9,7 @@ use Auth, Cache, DB;
|
|||
use Carbon\Carbon;
|
||||
use App\{
|
||||
AccountInterstitial,
|
||||
Instance,
|
||||
Like,
|
||||
Media,
|
||||
Profile,
|
||||
|
@ -19,9 +20,12 @@ use App\{
|
|||
use App\Services\AccountService;
|
||||
use App\Services\AdminStatsService;
|
||||
use App\Services\ConfigCacheService;
|
||||
use App\Services\InstanceService;
|
||||
use App\Services\ModLogService;
|
||||
use App\Services\StatusService;
|
||||
use App\Services\NetworkTimelineService;
|
||||
use App\Services\NotificationService;
|
||||
use App\Http\Resources\AdminInstance;
|
||||
use App\Http\Resources\AdminUser;
|
||||
|
||||
class AdminApiController extends Controller
|
||||
|
@ -486,4 +490,94 @@ class AdminApiController extends Controller
|
|||
]
|
||||
]]);
|
||||
}
|
||||
|
||||
public function instances(Request $request)
|
||||
{
|
||||
abort_if(!$request->user(), 404);
|
||||
abort_unless($request->user()->is_admin === 1, 404);
|
||||
$this->validate($request, [
|
||||
'q' => 'sometimes',
|
||||
'sort' => 'sometimes|in:asc,desc',
|
||||
'sort_by' => 'sometimes|in:id,status_count,user_count,domain',
|
||||
'filter' => 'sometimes|in:all,unlisted,auto_cw,banned',
|
||||
]);
|
||||
|
||||
$q = $request->input('q');
|
||||
$sort = $request->input('sort', 'desc') === 'asc' ? 'asc' : 'desc';
|
||||
$sortBy = $request->input('sort_by', 'id');
|
||||
$filter = $request->input('filter');
|
||||
|
||||
$res = Instance::when($q, function($query, $q) {
|
||||
return $query->where('domain', 'like', '%' . $q . '%');
|
||||
})
|
||||
->when($filter, function($query, $filter) {
|
||||
if($filter === 'all') {
|
||||
return $query;
|
||||
} else {
|
||||
return $query->where($filter, true);
|
||||
}
|
||||
})
|
||||
->when($sortBy, function($query, $sortBy) use($sort) {
|
||||
return $query->orderBy($sortBy, $sort);
|
||||
}, function($query) {
|
||||
return $query->orderBy('id', 'desc');
|
||||
})
|
||||
->cursorPaginate(10)
|
||||
->withQueryString();
|
||||
|
||||
return AdminInstance::collection($res);
|
||||
}
|
||||
|
||||
public function getInstance(Request $request)
|
||||
{
|
||||
abort_if(!$request->user(), 404);
|
||||
abort_unless($request->user()->is_admin === 1, 404);
|
||||
|
||||
$id = $request->input('id');
|
||||
$res = Instance::findOrFail($id);
|
||||
|
||||
return new AdminInstance($res);
|
||||
}
|
||||
|
||||
public function moderateInstance(Request $request)
|
||||
{
|
||||
abort_if(!$request->user(), 404);
|
||||
abort_unless($request->user()->is_admin === 1, 404);
|
||||
|
||||
$this->validate($request, [
|
||||
'id' => 'required',
|
||||
'key' => 'required|in:unlisted,auto_cw,banned',
|
||||
'value' => 'required'
|
||||
]);
|
||||
|
||||
$id = $request->input('id');
|
||||
$key = $request->input('key');
|
||||
$value = (bool) filter_var($request->input('value'), FILTER_VALIDATE_BOOLEAN);
|
||||
$res = Instance::findOrFail($id);
|
||||
$res->{$key} = $value;
|
||||
$res->save();
|
||||
|
||||
InstanceService::refresh();
|
||||
NetworkTimelineService::warmCache(true);
|
||||
|
||||
return new AdminInstance($res);
|
||||
}
|
||||
|
||||
public function refreshInstanceStats(Request $request)
|
||||
{
|
||||
abort_if(!$request->user(), 404);
|
||||
abort_unless($request->user()->is_admin === 1, 404);
|
||||
|
||||
$this->validate($request, [
|
||||
'id' => 'required',
|
||||
]);
|
||||
|
||||
$id = $request->input('id');
|
||||
$instance = Instance::findOrFail($id);
|
||||
$instance->user_count = Profile::whereDomain($instance->domain)->count();
|
||||
$instance->status_count = Profile::whereDomain($instance->domain)->leftJoin('statuses', 'profiles.id', '=', 'statuses.profile_id')->count();
|
||||
$instance->save();
|
||||
|
||||
return new AdminInstance($instance);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -193,5 +193,9 @@ Route::group(['prefix' => 'api'], function() use($middleware) {
|
|||
Route::get('users/list', 'Api\AdminApiController@getUsers')->middleware($middleware);
|
||||
Route::get('users/get', 'Api\AdminApiController@getUser')->middleware($middleware);
|
||||
Route::post('users/action', 'Api\AdminApiController@userAdminAction')->middleware($middleware);
|
||||
Route::get('instances/list', 'Api\AdminApiController@instances')->middleware($middleware);
|
||||
Route::get('instances/get', 'Api\AdminApiController@getInstance')->middleware($middleware);
|
||||
Route::post('instances/moderate', 'Api\AdminApiController@moderateInstance')->middleware($middleware);
|
||||
Route::post('instances/refresh-stats', 'Api\AdminApiController@refreshInstanceStats')->middleware($middleware);
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue