diff --git a/lib/travis/api/v3/access_control/generic.rb b/lib/travis/api/v3/access_control/generic.rb index 30be8902..48b4958f 100644 --- a/lib/travis/api/v3/access_control/generic.rb +++ b/lib/travis/api/v3/access_control/generic.rb @@ -30,6 +30,10 @@ module Travis::API::V3 false end + def full_access_or_logged_in? + full_access? || logged_in? + end + def visible_repositories(list) # naïve implementation, replaced with smart implementation in specific subclasses return list if full_access? diff --git a/lib/travis/api/v3/service.rb b/lib/travis/api/v3/service.rb index fa63ecf1..13b8f2aa 100644 --- a/lib/travis/api/v3/service.rb +++ b/lib/travis/api/v3/service.rb @@ -66,6 +66,11 @@ module Travis::API::V3 object end + def check_login_and_find(*args) + raise LoginRequired unless access_control.full_access_or_logged_in? + find(*args) + end + def not_found(actually_not_found = false, type = nil) type, actually_not_found = actually_not_found, false if actually_not_found.is_a? Symbol error = actually_not_found ? EntityMissing : NotFound diff --git a/lib/travis/api/v3/services/env_var/delete.rb b/lib/travis/api/v3/services/env_var/delete.rb index d11f20f0..3ea473ab 100644 --- a/lib/travis/api/v3/services/env_var/delete.rb +++ b/lib/travis/api/v3/services/env_var/delete.rb @@ -4,8 +4,7 @@ module Travis::API::V3 params :id, prefix: :env_var def run! - raise LoginRequired unless access_control.logged_in? or access_control.full_access? - raise NotFound unless repository = find(:repository) + repository = check_login_and_find(:repository) query.delete(repository) end end diff --git a/lib/travis/api/v3/services/env_var/find.rb b/lib/travis/api/v3/services/env_var/find.rb index 476c1b3a..17258043 100644 --- a/lib/travis/api/v3/services/env_var/find.rb +++ b/lib/travis/api/v3/services/env_var/find.rb @@ -4,8 +4,7 @@ module Travis::API::V3 params :id, prefix: :env_var def run! - raise LoginRequired unless access_control.logged_in? or access_control.full_access? - raise NotFound unless repository = find(:repository) + repository = check_login_and_find(:repository) query.find(repository) end end diff --git a/lib/travis/api/v3/services/env_var/update.rb b/lib/travis/api/v3/services/env_var/update.rb index 6caa751a..e83e9256 100644 --- a/lib/travis/api/v3/services/env_var/update.rb +++ b/lib/travis/api/v3/services/env_var/update.rb @@ -4,8 +4,7 @@ module Travis::API::V3 params :id, :name, :value, :public, prefix: :env_var def run! - raise LoginRequired unless access_control.logged_in? or access_control.full_access? - raise NotFound unless repository = find(:repository) + repository = check_login_and_find(:repository) query.update(repository) end end diff --git a/lib/travis/api/v3/services/env_vars/create.rb b/lib/travis/api/v3/services/env_vars/create.rb index 02839fc2..a2fd3ed1 100644 --- a/lib/travis/api/v3/services/env_vars/create.rb +++ b/lib/travis/api/v3/services/env_vars/create.rb @@ -4,8 +4,7 @@ module Travis::API::V3 params :id, :name, :value, :public, prefix: :env_var def run! - raise LoginRequired unless access_control.logged_in? or access_control.full_access? - raise NotFound unless repository = find(:repository) + repository = check_login_and_find(:repository) env_var = query(:env_vars).create(repository) result(:env_var, env_var, status: 201) end diff --git a/lib/travis/api/v3/services/env_vars/for_repository.rb b/lib/travis/api/v3/services/env_vars/for_repository.rb index 1cb1b4cf..60a88577 100644 --- a/lib/travis/api/v3/services/env_vars/for_repository.rb +++ b/lib/travis/api/v3/services/env_vars/for_repository.rb @@ -1,8 +1,7 @@ module Travis::API::V3 class Services::EnvVars::ForRepository < Service def run! - raise LoginRequired unless access_control.logged_in? or access_control.full_access? - raise NotFound unless repository = find(:repository) + repository = check_login_and_find(:repository) find(:env_vars, repository) end end