metamaps--metamaps/app/policies/map_policy.rb
2016-09-24 12:27:34 +08:00

84 lines
1.3 KiB
Ruby

# frozen_string_literal: true
class MapPolicy < ApplicationPolicy
class Scope < Scope
def resolve
visible = %w(public commons)
return scope.where(permission: visible) unless user
scope.where(permission: visible)
.or(scope.where(id: user.shared_maps.map(&:id)))
.or(scope.where(user_id: user.id))
end
end
def index?
true
end
def show?
record.permission.in?('commons', 'public') ||
record.collaborators.include?(user) ||
record.user == user
end
def create?
user.present?
end
def update?
return false unless user.present?
record.permission == 'commons' ||
record.collaborators.include?(user) ||
record.user == user
end
def destroy?
record.user == user || admin_override
end
def access?
# note that this is to edit who can access the map
user.present? && record.user == user
end
def activemaps?
user.blank? # redirect to root url if authenticated for some reason
end
def contains?
show?
end
def events?
show?
end
def export?
show?
end
def featuredmaps?
true
end
def mymaps?
user.present?
end
def star?
unstar?
end
def unstar?
user.present?
end
def screenshot?
update?
end
def usermaps?
true
end
end