Commit 02b85fd2366bc6c0d3194ab68e13eb6291733c26
1 parent
34fd5570
Exists in
spb-stable
and in
2 other branches
Check user access status in API for current_user
Showing
2 changed files
with
10 additions
and
0 deletions
Show diff stats
lib/api/helpers.rb
... | ... | @@ -8,6 +8,11 @@ module API |
8 | 8 | def current_user |
9 | 9 | private_token = (params[PRIVATE_TOKEN_PARAM] || env[PRIVATE_TOKEN_HEADER]).to_s |
10 | 10 | @current_user ||= User.find_by(authentication_token: private_token) |
11 | + | |
12 | + unless @current_user && Gitlab::UserAccess.allowed?(@current_user) | |
13 | + return nil | |
14 | + end | |
15 | + | |
11 | 16 | identifier = sudo_identifier() |
12 | 17 | |
13 | 18 | # If the sudo is the current user do nothing | ... | ... |
spec/requests/api/api_helpers_spec.rb
... | ... | @@ -44,6 +44,11 @@ describe API, api: true do |
44 | 44 | current_user.should be_nil |
45 | 45 | end |
46 | 46 | |
47 | + it "should return nil for a user without access" do | |
48 | + Gitlab::UserAccess.stub(allowed?: false) | |
49 | + current_user.should be_nil | |
50 | + end | |
51 | + | |
47 | 52 | it "should leave user as is when sudo not specified" do |
48 | 53 | env[API::APIHelpers::PRIVATE_TOKEN_HEADER] = user.private_token |
49 | 54 | current_user.should == user | ... | ... |