From 21aa667b9c97ae79d4ca48423437129eb574c873 Mon Sep 17 00:00:00 2001 From: Konstantin Haase Date: Wed, 29 Apr 2015 14:14:21 +0200 Subject: [PATCH] v3: add account permissions --- lib/travis/api/v3/access_control/generic.rb | 4 ++++ lib/travis/api/v3/models/account.rb | 14 ++++++++++++++ lib/travis/api/v3/models/organization.rb | 2 ++ lib/travis/api/v3/permissions/account.rb | 6 ++++++ lib/travis/api/v3/permissions/repository.rb | 2 ++ spec/v3/services/accounts/for_current_user_spec.rb | 2 ++ 6 files changed, 30 insertions(+) create mode 100644 lib/travis/api/v3/permissions/account.rb diff --git a/lib/travis/api/v3/access_control/generic.rb b/lib/travis/api/v3/access_control/generic.rb index 4e5755cd..0e09e409 100644 --- a/lib/travis/api/v3/access_control/generic.rb +++ b/lib/travis/api/v3/access_control/generic.rb @@ -43,6 +43,10 @@ module Travis::API::V3 protected + def account_visible?(account) + user and account.members.include?(user) + end + def build_visible?(build) visible? build.repository end diff --git a/lib/travis/api/v3/models/account.rb b/lib/travis/api/v3/models/account.rb index a78a4b13..53f45fd0 100644 --- a/lib/travis/api/v3/models/account.rb +++ b/lib/travis/api/v3/models/account.rb @@ -23,6 +23,20 @@ module Travis::API::V3 subscription.present? and subscription.active? end + def members + @members ||= if owner.respond_to? :members + owner.members + else + [owner] + end + end + + def reload + @members = nil + owner.reload + self + end + alias_method :educational, :educational? alias_method :subscribed, :subscribed? end diff --git a/lib/travis/api/v3/models/organization.rb b/lib/travis/api/v3/models/organization.rb index 973487ed..224f0b8e 100644 --- a/lib/travis/api/v3/models/organization.rb +++ b/lib/travis/api/v3/models/organization.rb @@ -8,5 +8,7 @@ module Travis::API::V3 def subscription super if Features.use_subscriptions? end + + alias members users end end diff --git a/lib/travis/api/v3/permissions/account.rb b/lib/travis/api/v3/permissions/account.rb new file mode 100644 index 00000000..a161b62d --- /dev/null +++ b/lib/travis/api/v3/permissions/account.rb @@ -0,0 +1,6 @@ +require 'travis/api/v3/permissions/generic' + +module Travis::API::V3 + class Permissions::Account < Permissions::Generic + end +end diff --git a/lib/travis/api/v3/permissions/repository.rb b/lib/travis/api/v3/permissions/repository.rb index b89d6ae4..75f47597 100644 --- a/lib/travis/api/v3/permissions/repository.rb +++ b/lib/travis/api/v3/permissions/repository.rb @@ -1,3 +1,5 @@ +require 'travis/api/v3/permissions/generic' + module Travis::API::V3 class Permissions::Repository < Permissions::Generic def enable? diff --git a/spec/v3/services/accounts/for_current_user_spec.rb b/spec/v3/services/accounts/for_current_user_spec.rb index 01d45c9a..e50b36e6 100644 --- a/spec/v3/services/accounts/for_current_user_spec.rb +++ b/spec/v3/services/accounts/for_current_user_spec.rb @@ -22,6 +22,7 @@ describe Travis::API::V3::Services::Accounts::ForCurrentUser do "@href" => "/v3/accounts", "accounts" => [{ "@type" => "account", + "@permissions" => { "read"=>true }, "id" => repo.owner.github_id, "subscribed" => false, "educational" => false, @@ -31,6 +32,7 @@ describe Travis::API::V3::Services::Accounts::ForCurrentUser do "id" => repo.owner_id, "login" => "svenfuchs" }}, {"@type" => "account", + "@permissions" => { "read"=>true }, "id" => 42, "subscribed" => false, "educational" => false,