Sha256: b072fbfbc0111717104ee31ca5ec142e3ee8df2dffaf36aa662d677c65082edd

Contents?: true

Size: 870 Bytes

Versions: 9

Compression:

Stored size: 870 Bytes

Contents

require 'cancan_namespace'

module Sunrise
  module Models
    class Ability
      include CanCanNamespace::Ability
    
      attr_accessor :context, :user

      def initialize(user, context = nil)
        alias_action :delete, :to => :destroy

        @user = (user || ::User.new) # guest user (not logged in)
        @context = context
        
        if @user.persisted? && @user.role_type
          send @user.role_type.code
        else
          guest
        end
      end
      
      def admin
        can :manage, :all
        can :manage, :all, :context => :sunrise
        
        # User cannot destroy self account
        cannot :destroy, ::User, :id => @user.id, :context => :sunrise

        # User cannot destroy root structure
        cannot :destroy, ::Structure, :kind => ::StructureType.main.id, :context => :sunrise
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
sunrise-cms-0.5.3 lib/sunrise/models/ability.rb
sunrise-cms-0.5.2 lib/sunrise/models/ability.rb
sunrise-cms-0.5.1 lib/sunrise/models/ability.rb
sunrise-cms-0.5.0 lib/sunrise/models/ability.rb
sunrise-cms-0.5.0.rc5 lib/sunrise/models/ability.rb
sunrise-cms-0.5.0.rc4 lib/sunrise/models/ability.rb
sunrise-cms-0.5.0.rc3 lib/sunrise/models/ability.rb
sunrise-cms-0.5.0.rc2 lib/sunrise/models/ability.rb
sunrise-cms-0.5.0.rc1 lib/sunrise/models/ability.rb