Sha256: a705d0eef812190c65eadec2ebf751dfe9c2fc5f11c4b7fb54d6fd8346bbdd2a
Contents?: true
Size: 1.77 KB
Versions: 1
Compression:
Stored size: 1.77 KB
Contents
# frozen_string_literal: true module Decidim module Lausanne module Budgets class Permissions < Decidim::DefaultPermissions def permissions # Delegate the admin permission checks to the admin permissions class return Decidim::Lausanne::Budgets::Admin::Permissions.new(user, permission_action, context).permissions if permission_action.scope == :admin return permission_action if permission_action.scope != :public return permission_action unless [:project, :order].include? permission_action.subject if permission_action.subject == :project case permission_action.action when :vote can_vote?(false) if can_vote_project?(project || order&.projects&.first) when :report permission_action.allow! end end can_vote?(true) if permission_action.action == :create && permission_action.subject == :order permission_action end private def project @project ||= context.fetch(:project, nil) end def order @order ||= context.fetch(:order, nil) end def budget @budget ||= context.fetch(:budget, nil) end def workflow @workflow ||= context.fetch(:workflow, nil) end def can_vote?(active_allow) is_allowed = workflow.vote_allowed?(budget) if !is_allowed disallow! elsif active_allow allow! end end def can_vote_project?(a_project) is_allowed = a_project && authorized?(:vote, resource: project) toggle_allow(is_allowed) end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
decidim-lausanne-budgets-0.1.0 | app/permissions/decidim/lausanne/budgets/permissions.rb |