Sha256: 41b0955d3c6964e681d9ce2a3cce1d9633535395a1a8eeec1bc0a5439dcb3ed5

Contents?: true

Size: 723 Bytes

Versions: 3

Compression:

Stored size: 723 Bytes

Contents

require "clubhouse/concerns/policies/ownable"

module Clubhouse
  module Concerns
    module Policies
      module MembershipPolicy
        extend ActiveSupport::Concern

        include Ownable

        def index?
          member?
        end

        def create?
          true
        end

        def show?
          member?
        end

        def update?
          admin? && !self?
        end

        def destroy?
          admin? && !self?
        end

        def permitted_attributes
          if resource.new_record?
            [:token]
          else
            [:admin]
          end
        end

        private
        def self?
          resource.member == user
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
clubhouse-0.3.0 lib/clubhouse/concerns/policies/membership_policy.rb
clubhouse-0.2.0 lib/clubhouse/concerns/policies/membership_policy.rb
clubhouse-0.1.0 lib/clubhouse/concerns/policies/membership_policy.rb