Skip to content
Snippets Groups Projects
Commit 0d35b081 authored by Lin Jen-Shin (godfat)'s avatar Lin Jen-Shin (godfat) Committed by Rémy Coutable
Browse files

Allow logged in users to read user list under public restriction

parent cfa41e62
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -44,7 +44,7 @@ class GlobalPolicy < BasePolicy
prevent :log_in
end
 
rule { admin | ~restricted_public_level }.policy do
rule { ~(anonymous & restricted_public_level) }.policy do
enable :read_users_list
end
end
---
title: Allow any logged in users to read_users_list even if it's restricted
merge_request: 13201
author:
Loading
Loading
@@ -16,38 +16,44 @@ describe API::Users do
it "returns authorization error when the `username` parameter is not passed" do
get api("/users")
 
expect(response).to have_http_status(403)
expect(response).to have_gitlab_http_status(403)
end
 
it "returns the user when a valid `username` parameter is passed" do
user = create(:user)
get api("/users"), username: user.username
 
expect(response).to have_http_status(200)
expect(response).to have_gitlab_http_status(200)
expect(json_response).to be_an Array
expect(json_response.size).to eq(1)
expect(json_response[0]['id']).to eq(user.id)
expect(json_response[0]['username']).to eq(user.username)
end
 
it "returns authorization error when the `username` parameter refers to an inaccessible user" do
user = create(:user)
stub_application_setting(restricted_visibility_levels: [Gitlab::VisibilityLevel::PUBLIC])
get api("/users"), username: user.username
expect(response).to have_http_status(403)
end
it "returns an empty response when an invalid `username` parameter is passed" do
get api("/users"), username: 'invalid'
 
expect(response).to have_http_status(200)
expect(response).to have_gitlab_http_status(200)
expect(json_response).to be_an Array
expect(json_response.size).to eq(0)
end
context "when public level is restricted" do
before do
stub_application_setting(restricted_visibility_levels: [Gitlab::VisibilityLevel::PUBLIC])
end
it "returns authorization error when the `username` parameter refers to an inaccessible user" do
get api("/users"), username: user.username
expect(response).to have_gitlab_http_status(403)
end
it "returns authorization error when the `username` parameter is not passed" do
get api("/users")
expect(response).to have_gitlab_http_status(403)
end
end
end
 
context "when authenticated" do
Loading
Loading
@@ -58,10 +64,10 @@ describe API::Users do
end
 
context 'when authenticate as a regular user' do
it "renders 403" do
it "renders 200" do
get api("/users", user)
 
expect(response).to have_gitlab_http_status(403)
expect(response).to have_gitlab_http_status(200)
end
end
 
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment