Sha256: a5e98817a20b81a11aa3763ecdde8ed8502fde6e513e4338ef0a8f96a7cf8502
Contents?: true
Size: 1.43 KB
Versions: 5
Compression:
Stored size: 1.43 KB
Contents
# frozen_string_literal: true module Decidim module Consultations class Permissions < Decidim::DefaultPermissions def permissions allowed_public_anonymous_action? return permission_action unless user allowed_public_action? return Decidim::Consultations::Admin::Permissions.new(user, permission_action, context).permissions if permission_action.scope == :admin permission_action end private def question @question ||= context.fetch(:question, nil) end def consultation @consultation ||= context.fetch(:consultation, nil) end def allowed_public_anonymous_action? return unless permission_action.action == :read return unless permission_action.scope == :public case permission_action.subject when :consultation_list allow! when :consultation toggle_allow(consultation.published? || user&.admin?) when :question toggle_allow(question.published? || user&.admin?) end end def allowed_public_action? return unless permission_action.scope == :public return unless permission_action.subject == :question case permission_action.action when :vote toggle_allow(question.can_be_voted_by?(user)) when :unvote toggle_allow(question.can_be_unvoted_by?(user)) end end end end end
Version data entries
5 entries across 5 versions & 1 rubygems