File: /var/www/ipsremont-demo/app/Http/Controllers/Controller.php
<?php
namespace App\Http\Controllers;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Support\Facades\Auth;
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
/** @var string */
protected string $permission = '';
protected string $protectedRedirect = 'dashboard';
/**
* Controller constructor.
*/
public function __construct()
{
$this->middleware('auth');
if ($this->permission) {
$this->middleware(function (Request $request, $next) {
if (!can($this->permission)) {
abort('404');
}
return $next($request);
});
}
}
/**
* Для действий, которые возможно только над активными сервисами.
* Проверяет, активен ли данный сервис. Если нет - редирект на $routeBack
*
* @param $serviceId
* @param $routeBack
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
*/
protected function checkActions($serviceId) {
if (!canServiceActions($serviceId)) {
return redirect(route($this->protectedRedirect))
->with(["messageSuccess" => __('services.messageServiceNotActive')]);
}
return null;
}
protected function isRedirected($serviceId = null) {
$redirect = null;
if (Auth::user()->isService()) {
$redirect = $this->checkActions(Auth::user()->getCurrentServiceId());
}
else if ($serviceId) {
$redirect = $this->checkActions($serviceId);
}
return $redirect;
}
}