X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/a274406038e13cf678e14d65dfa70d04ead67206..refs/pull/3693/head:/app/Http/Middleware/ApiAuthenticate.php diff --git a/app/Http/Middleware/ApiAuthenticate.php b/app/Http/Middleware/ApiAuthenticate.php index bc584d3c5..5d621ac11 100644 --- a/app/Http/Middleware/ApiAuthenticate.php +++ b/app/Http/Middleware/ApiAuthenticate.php @@ -35,7 +35,7 @@ class ApiAuthenticate // Return if the user is already found to be signed in via session-based auth. // This is to make it easy to browser the API via browser after just logging into the system. if (signedInUser() || session()->isStarted()) { - if (!user()->can('access-api')) { + if (!$this->sessionUserHasApiAccess()) { throw new ApiAuthException(trans('errors.api_user_no_api_permission'), 403); } @@ -49,6 +49,16 @@ class ApiAuthenticate auth()->authenticate(); } + /** + * Check if the active session user has API access. + */ + protected function sessionUserHasApiAccess(): bool + { + $hasApiPermission = user()->can('access-api'); + + return $hasApiPermission && hasAppAccess(); + } + /** * Provide a standard API unauthorised response. */