. */ declare(strict_types=1); namespace FireflyIII\Http\Middleware; use FireflyIII\Repositories\User\UserRepositoryInterface; use FireflyIII\User; use Illuminate\Http\Request; /** * Class IsDemoUser. */ class IsDemoUser { /** * Handle an incoming request. * * @return mixed */ public function handle(Request $request, \Closure $next) { /** @var null|User $user */ $user = $request->user(); if (null === $user) { return $next($request); } /** @var UserRepositoryInterface $repository */ $repository = app(UserRepositoryInterface::class); if ($repository->hasRole($user, 'demo')) { app('log')->info('User is a demo user.'); $request->session()->flash('info', (string)trans('firefly.not_available_demo_user')); $current = $request->url(); $previous = $request->session()->previousUrl(); if ($current !== $previous) { return response()->redirectTo($previous); } return response()->redirectTo(route('index')); } return $next($request); } }