# 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 contains? show? end def events? show? end def export? show? end def star? unstar? end def unstar? user.present? end def screenshot? update? end end