mirror of
https://github.com/we-promise/sure.git
synced 2026-05-09 13:45:01 +00:00
Reject revoked OAuth tokens in API auth (#1711)
This commit is contained in:
@@ -62,7 +62,7 @@ class Api::V1::BaseController < ApplicationController
|
||||
# Check token validity and scope (read_write includes read access)
|
||||
has_sufficient_scope = access_token&.scopes&.include?("read") || access_token&.scopes&.include?("read_write")
|
||||
|
||||
unless access_token && !access_token.expired? && has_sufficient_scope
|
||||
unless access_token&.accessible? && has_sufficient_scope
|
||||
render_json({ error: "unauthorized", message: "Access token is invalid, expired, or missing required scope" }, status: :unauthorized)
|
||||
return false
|
||||
end
|
||||
|
||||
@@ -60,6 +60,23 @@ class Api::V1::BaseControllerTest < ActionDispatch::IntegrationTest
|
||||
assert_equal @user.email, response_body["user"]
|
||||
end
|
||||
|
||||
test "should reject revoked access token" do
|
||||
access_token = Doorkeeper::AccessToken.create!(
|
||||
application: @oauth_app,
|
||||
resource_owner_id: @user.id,
|
||||
scopes: "read"
|
||||
)
|
||||
access_token.revoke
|
||||
|
||||
get "/api/v1/test", params: {}, headers: {
|
||||
"Authorization" => "Bearer #{access_token.token}"
|
||||
}
|
||||
|
||||
assert_response :unauthorized
|
||||
response_body = JSON.parse(response.body)
|
||||
assert_equal "unauthorized", response_body["error"]
|
||||
end
|
||||
|
||||
test "should reject invalid access token" do
|
||||
get "/api/v1/test", params: {}, headers: {
|
||||
"Authorization" => "Bearer invalid_token"
|
||||
|
||||
Reference in New Issue
Block a user