diff --git a/app/policies/project_policy.rb b/app/policies/project_policy.rb index 4380b00d96236ba33204e8d01fe09c8c45244145..8a1148dece4e76f2b858f36812ff6c77fd3a2a15 100644 --- a/app/policies/project_policy.rb +++ b/app/policies/project_policy.rb @@ -1,4 +1,31 @@ class ProjectPolicy < BasePolicy + def rules + team_access!(user) + + owner = user.admin? || + project.owner == user || + (project.group && project.group.has_owner?(user)) + + owner_access! if owner + + if project.public? || (project.internal? && !user.external?) + guest_access! + public_access! + + # Allow to read builds for internal projects + can! :read_build if project.public_builds? + + if project.request_access_enabled && + !(owner || project.team.member?(user) || project_group_member?(user)) + can! :request_access + end + end + + archived_access! if project.archived? + + disabled_features! + end + def project @subject end @@ -158,33 +185,6 @@ class ProjectPolicy < BasePolicy end end - def rules - team_access!(user) - - owner = user.admin? || - project.owner == user || - (project.group && project.group.has_owner?(user)) - - owner_access! if owner - - if project.public? || (project.internal? && !user.external?) - guest_access! - public_access! - - # Allow to read builds for internal projects - can! :read_build if project.public_builds? - - if project.request_access_enabled && - !(owner || project.team.member?(user) || project_group_member?(user)) - can! :request_access - end - end - - archived_access! if project.archived? - - disabled_features! - end - def anonymous_rules return unless project.public?