Skip to content
Snippets Groups Projects
Commit 37a90d5f authored by babatakao's avatar babatakao Committed by baba
Browse files

Selectable deploy keys contain master projects

parent b9d989dc
No related branches found
No related tags found
1 merge request!4155Selectable deploy keys contain master projects
Loading
@@ -54,6 +54,6 @@ class DeployKeysController < ProjectResourceController
Loading
@@ -54,6 +54,6 @@ class DeployKeysController < ProjectResourceController
protected protected
   
def available_keys def available_keys
@available_keys ||= current_user.owned_deploy_keys @available_keys ||= current_user.accessible_deploy_keys
end end
end end
Loading
@@ -90,6 +90,8 @@ class User < ActiveRecord::Base
Loading
@@ -90,6 +90,8 @@ class User < ActiveRecord::Base
   
has_many :personal_projects, through: :namespace, source: :projects has_many :personal_projects, through: :namespace, source: :projects
has_many :projects, through: :users_projects has_many :projects, through: :users_projects
has_many :master_projects, through: :users_projects, source: :project,
conditions: { users_projects: { project_access: UsersProject::MASTER } }
has_many :own_projects, foreign_key: :creator_id, class_name: 'Project' has_many :own_projects, foreign_key: :creator_id, class_name: 'Project'
has_many :owned_projects, through: :namespaces, source: :projects has_many :owned_projects, through: :namespaces, source: :projects
   
Loading
@@ -354,7 +356,7 @@ class User < ActiveRecord::Base
Loading
@@ -354,7 +356,7 @@ class User < ActiveRecord::Base
extern_uid && provider == 'ldap' extern_uid && provider == 'ldap'
end end
   
def owned_deploy_keys def accessible_deploy_keys
DeployKey.in_projects(self.owned_projects).uniq DeployKey.in_projects(self.master_projects).uniq
end end
end end
Loading
@@ -35,6 +35,7 @@ class Spinach::Features::ProjectDeployKeys < Spinach::FeatureSteps
Loading
@@ -35,6 +35,7 @@ class Spinach::Features::ProjectDeployKeys < Spinach::FeatureSteps
   
step 'other project has deploy key' do step 'other project has deploy key' do
@second_project = create :project, namespace: current_user.namespace @second_project = create :project, namespace: current_user.namespace
@second_project.team << [current_user, :master]
create(:deploy_keys_project, project: @second_project) create(:deploy_keys_project, project: @second_project)
end end
   
Loading
Loading
Loading
@@ -439,7 +439,7 @@ module API
Loading
@@ -439,7 +439,7 @@ module API
end end
   
# Check for available deploy keys in other projects # Check for available deploy keys in other projects
key = current_user.owned_deploy_keys.find_by_key(attrs[:key]) key = current_user.accessible_deploy_keys.find_by_key(attrs[:key])
if key if key
user_project.deploy_keys << key user_project.deploy_keys << key
present key, with: Entities::SSHKey present key, with: Entities::SSHKey
Loading
Loading
Loading
@@ -106,11 +106,33 @@ describe User do
Loading
@@ -106,11 +106,33 @@ describe User do
ActiveRecord::Base.observers.enable(:user_observer) ActiveRecord::Base.observers.enable(:user_observer)
@user = create :user @user = create :user
@project = create :project, namespace: @user.namespace @project = create :project, namespace: @user.namespace
@project_2 = create :project # Grant MASTER access to the user
@project_3 = create :project # Grant DEVELOPER access to the user
UsersProject.add_users_into_projects(
[@project_2.id], [@user.id], UsersProject::MASTER
)
UsersProject.add_users_into_projects(
[@project_3.id], [@user.id], UsersProject::DEVELOPER
)
end end
   
it { @user.authorized_projects.should include(@project) } it { @user.authorized_projects.should include(@project) }
it { @user.authorized_projects.should include(@project_2) }
it { @user.authorized_projects.should include(@project_3) }
it { @user.owned_projects.should include(@project) } it { @user.owned_projects.should include(@project) }
it { @user.owned_projects.should_not include(@project_2) }
it { @user.owned_projects.should_not include(@project_3) }
it { @user.personal_projects.should include(@project) } it { @user.personal_projects.should include(@project) }
it { @user.personal_projects.should_not include(@project_2) }
it { @user.personal_projects.should_not include(@project_3) }
# master_projects doesn't check creator/namespace.
# In real case the users_projects relation will certainly be assigned
# when the project is created.
it { @user.master_projects.should_not include(@project) }
it { @user.master_projects.should include(@project_2) }
it { @user.master_projects.should_not include(@project_3) }
end end
   
describe 'groups' do describe 'groups' do
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