. */ namespace Poniverse\Ponyfm\Http\Middleware; use Closure; use Illuminate\Contracts\Auth\Guard; use Log; class DisabledAccountCheck { /** * The Guard implementation. * * @var Guard */ protected $auth; /** * Create a new filter instance. * * @param Guard $auth */ public function __construct(Guard $auth) { $this->auth = $auth; } /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { // TODO: don't automatically log the user out some time after // issue #29 is fixed or when disabled_at starts being used for // something other than merged accounts. if ($this->auth->check() && $this->auth->user()->disabled_at !== null && !($request->getMethod() === 'POST' && $request->getRequestUri() == '/auth/logout') ) { Log::info("A login was attempted to a disabled account, user ID #{$this->auth->user()->id}."); $this->auth->logout(); } return $next($request); } }