Files
old-holivud2/app/policies/contract_template_policy.rb
2020-07-16 17:27:57 +02:00

54 lines
1.0 KiB
Ruby

class ContractTemplatePolicy < ApplicationPolicy
class Scope < Scope
def resolve
if user.account_manager?
scope.left_outer_joins(:project).where(projects: {account: user.account})
elsif user.manager?
scope.left_outer_joins(project: :project_memberships).where(project_memberships: { user_id: user.id })
else
scope.public_template.left_outer_joins(project: :project_memberships).where(project_memberships: { user_id: user.id })
end
end
end
def create?
user.manager? || user.account_manager?
end
def show?
true
end
def destroy?
create?
end
def edit?
record.editable? && create?
end
def update?
edit?
end
def duplicate?
create?
end
def import?
if user.account_manager?
record.project.account = user.account
elsif user.manager?
user.project_memberships.exists?(project: record.project)
else
false
end
end
private
def has_signed_releases?
record.present? && !record.releases.size.zero?
end
end