namespace App\Http;
use App\Http\Middleware\EarlyAccessMiddleware;
+use App\Http\Middleware\EnsureEmailIsVerifiedIfLoggedIn;
use App\Http\Middleware\LoginWithToken;
use App\LoginToken;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
- 'early' => EarlyAccessMiddleware::class
+ 'early' => EarlyAccessMiddleware::class,
+ 'authed.verified' => EnsureEmailIsVerifiedIfLoggedIn::class,
];
protected $middlewarePriority = [
--- /dev/null
+<?php
+
+namespace App\Http\Middleware;
+
+use Closure;
+use Illuminate\Contracts\Auth\MustVerifyEmail;
+use Illuminate\Support\Facades\Redirect;
+
+class EnsureEmailIsVerifiedIfLoggedIn
+{
+ /**
+ * Handle an incoming request.
+ *
+ * @param \Illuminate\Http\Request $request
+ * @param \Closure $next
+ * @param string|null $redirectToRoute
+ * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
+ */
+ public function handle($request, Closure $next, $redirectToRoute = null)
+ {
+ if ($request->user() !== null &&
+ ($request->user() instanceof MustVerifyEmail &&
+ ! $request->user()->hasVerifiedEmail())) {
+ return $request->expectsJson()
+ ? abort(403, 'Your email address is not verified.')
+ : Redirect::route($redirectToRoute ?: 'verification.notice');
+ }
+
+ return $next($request);
+ }
+}
* @param \App\PdfFile $pdfFile
* @return mixed
* @throws AuthenticationException
- * @todo Redirect with proper error message
*/
public function view($user = null, PdfFile $pdfFile)
{
return false;
-// throw new AuthenticationException(
-// 'Unauthenticated.',
-// ['web'],
-// route('login', ['redirect_to' => request()->getUri()])
-// );
}
/** Flowpaper viewer */
- Route::middleware('login.token')
+ Route::middleware(['login.token', 'authed.verified'])
->get('/view/{file:slug}', 'FlowpaperController@view')
->name('flowpaper.view');
-// ->middleware('verified');
Route::get('edition/{file:slug}', 'FileController@show');