. */ 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 { 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->singleAuthorise(); return view('dashboard.administration.devtools') ->with('applications', Application::where('applicationStatus', 'STAGE_PEERAPPROVAL')->get()); } public function forceApprovalEvent(Request $request) { $this->singleAuthorise(); $application = Application::find($request->application); if (! is_null($application)) { event(new ApplicationApprovedEvent($application)); $request->session()->flash('success', __('Event dispatched! Please check the debug logs for more info')); } else { $request->session()->flash('error', __('Application doesn\'t exist!')); } 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.'); } }