mirror of
https://github.com/BookStackApp/BookStack.git
synced 2025-07-28 17:02:04 +03:00
Worked on MFA setup required flow
- Restructured some of the route naming to be a little more consistent. - Moved the routes about to be more logically in one place. - Created a new middleware to handle the auth of people that should be allowed access to mfa setup routes, since these could be used by existing logged in users or by people needing to setup MFA on access. - Added testing to cover MFA setup required flow. - Added TTL and method tracking to session last-login tracking system.
This commit is contained in:
@ -15,9 +15,8 @@ class Authenticate
|
||||
if (!hasAppAccess()) {
|
||||
if ($request->ajax()) {
|
||||
return response('Unauthorized.', 401);
|
||||
} else {
|
||||
return redirect()->guest(url('/login'));
|
||||
}
|
||||
return redirect()->guest(url('/login'));
|
||||
}
|
||||
|
||||
return $next($request);
|
||||
|
41
app/Http/Middleware/AuthenticatedOrPendingMfa.php
Normal file
41
app/Http/Middleware/AuthenticatedOrPendingMfa.php
Normal file
@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
namespace BookStack\Http\Middleware;
|
||||
|
||||
use BookStack\Auth\Access\LoginService;
|
||||
use BookStack\Auth\Access\Mfa\MfaSession;
|
||||
use Closure;
|
||||
|
||||
class AuthenticatedOrPendingMfa
|
||||
{
|
||||
|
||||
protected $loginService;
|
||||
protected $mfaSession;
|
||||
|
||||
public function __construct(LoginService $loginService, MfaSession $mfaSession)
|
||||
{
|
||||
$this->loginService = $loginService;
|
||||
$this->mfaSession = $mfaSession;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
$user = auth()->user();
|
||||
$loggedIn = $user !== null;
|
||||
$lastAttemptUser = $this->loginService->getLastLoginAttemptUser();
|
||||
|
||||
if ($loggedIn || ($lastAttemptUser && $this->mfaSession->isPendingMfaSetup($lastAttemptUser))) {
|
||||
return $next($request);
|
||||
}
|
||||
|
||||
return redirect()->guest(url('/login'));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user