Improve devtools interface

This commit revamps the interface and adds more commands.
This commit is contained in:
2021-10-30 04:37:10 +01:00
parent 59cfbd7ed1
commit 93172d1e81
3 changed files with 72 additions and 19 deletions

View File

@@ -23,30 +23,33 @@ namespace App\Http\Controllers;
use App\Application;
use App\Events\ApplicationApprovedEvent;
use App\Services\AccountSuspensionService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Auth;
class DevToolsController extends Controller
{
// The use case for Laravel's gate and/or validation Requests is so tiny here that a full-blown policy would be overkill.
protected function isolatedAuthorise()
{
public function __construct() {
//
}
private function singleAuthorise() {
if (! Auth::user()->can('admin.developertools.use')) {
abort(403, __('You\'re not authorized to access this page.'));
}
}
public function index()
{
$this->isolatedAuthorise();
public function index() {
$this->singleAuthorise();
return view('dashboard.administration.devtools')
->with('applications', Application::where('applicationStatus', 'STAGE_PEERAPPROVAL')->get());
}
public function forceVoteCount(Request $request)
{
$this->isolatedAuthorise();
public function forceApprovalEvent(Request $request) {
$this->singleAuthorise();
$application = Application::find($request->application);
if (! is_null($application)) {
@@ -59,4 +62,32 @@ class DevToolsController extends Controller
return redirect()->back();
}
public function evaluateVotes() {
$this->singleAuthorise();
$code = Artisan::call("votes:evaluate");
return redirect()
->back()
->with('success', 'Ran vote evaluation logic, with exit code ' . $code);
}
public function purgeSuspensions(AccountSuspensionService $service) {
$this->singleAuthorise();
if ($service->purgeExpired()) {
return redirect()
->back()
->with('success', 'Force purged all expired suspensions.');
}
return redirect()
->back()
->with('error', 'There were no expired suspensions (or no suspensions at all) to purge.');
}
}