diff options
author | Valery Sizov <vsv2711@gmail.com> | 2015-09-09 17:36:01 +0300 |
---|---|---|
committer | Valery Sizov <vsv2711@gmail.com> | 2015-09-09 17:36:01 +0300 |
commit | 44261a5d9fd5b78f8a44fe330e2386525f4c3437 (patch) | |
tree | 95679471c902db7430bee6d74a7ae61cf6999b4f /app/models | |
parent | 81f9ee48b161496cfd7c033e10dcecc52c9b50be (diff) |
integration with gitlab auth
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/ability.rb | 1 | ||||
-rw-r--r-- | app/models/ci/user.rb | 32 |
2 files changed, 2 insertions, 31 deletions
diff --git a/app/models/ability.rb b/app/models/ability.rb index f8e5afa9b01..a020b24a550 100644 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -149,6 +149,7 @@ class Ability :admin_merge_request, :create_merge_request, :create_wiki, + :manage_builds, :push_code ] end diff --git a/app/models/ci/user.rb b/app/models/ci/user.rb index 49ec7126fc1..f7e2eaae1f1 100644 --- a/app/models/ci/user.rb +++ b/app/models/ci/user.rb @@ -39,43 +39,13 @@ module Ci @sync_at = Time.now end - def can_access_project?(project_gitlab_id) - !!project_info(project_gitlab_id) - end - - # Indicate if user has developer access or higher - def has_developer_access?(project_gitlab_id) - data = project_info(project_gitlab_id) - - return false unless data && data["permissions"] - - permissions = data["permissions"] - - if permissions["project_access"] && permissions["project_access"]["access_level"] >= DEVELOPER_ACCESS - return true - end - - if permissions["group_access"] && permissions["group_access"]["access_level"] >= DEVELOPER_ACCESS - return true - end - end - - def can_manage_project?(project_gitlab_id) - Rails.cache.fetch(cache_key('manage', project_gitlab_id, sync_at)) do - !!Ci::Network.new.project_hooks(authenticate_options, project_gitlab_id) - end - end - def authorized_runners Ci::Runner.specific.includes(:runner_projects). where(Ci::RunnerProject.table_name => { project_id: authorized_projects } ) end def authorized_projects - Ci::Project.where(gitlab_id: gitlab_projects.map(&:id)).select do |project| - # This is slow: it makes request to GitLab for each project to verify manage permission - can_manage_project?(project.gitlab_id) - end + Ci::Project.where(gitlab_id: current_user.authorized_projects.map(&:id)) end def authenticate_options |