You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
1.3 KiB
73 lines
1.3 KiB
class SchemePolicy |
|
attr_reader :user, :scheme |
|
|
|
def initialize(user, scheme) |
|
@user = user |
|
@scheme = scheme |
|
end |
|
|
|
def index? |
|
return true if user.support? |
|
|
|
if scheme == Scheme |
|
true |
|
else |
|
scheme_owned_by_user_org_or_stock_owner |
|
end |
|
end |
|
|
|
def new? |
|
user.data_coordinator? || user.support? |
|
end |
|
|
|
def create? |
|
user.data_coordinator? || user.support? |
|
end |
|
|
|
def update? |
|
return true if user.support? |
|
|
|
user.data_coordinator? && scheme_owned_by_user_org_or_stock_owner |
|
end |
|
|
|
def changes? |
|
true |
|
end |
|
|
|
%w[ |
|
show? |
|
check_answers? |
|
].each do |method_name| |
|
define_method method_name do |
|
return true if user.support? |
|
|
|
scheme_owned_by_user_org_or_stock_owner |
|
end |
|
end |
|
|
|
%w[ |
|
edit_name? |
|
primary_client_group? |
|
confirm_secondary_client_group? |
|
secondary_client_group? |
|
new_deactivation? |
|
new_reactivation? |
|
deactivate? |
|
reactivate? |
|
details? |
|
support? |
|
deactivate_confirm? |
|
].each do |method_name| |
|
define_method method_name do |
|
return true if user.support? |
|
|
|
user.data_coordinator? && scheme_owned_by_user_org_or_stock_owner |
|
end |
|
end |
|
|
|
private |
|
|
|
def scheme_owned_by_user_org_or_stock_owner |
|
scheme&.owning_organisation == user.organisation || user.organisation.stock_owners.exists?(scheme&.owning_organisation_id) |
|
end |
|
end
|
|
|