Sha256: a8a2f4c7faa733d80dc2b570f11975f6fee511ae18560817b0b992a7cf103cd4

Contents?: true

Size: 726 Bytes

Versions: 16

Compression:

Stored size: 726 Bytes

Contents

class ProjectPolicy < ApplicationPolicy
  def index?
    @user
  end

  def project_user?
    project_manager? || record.users.include?(@user)
  end

  def project_manager?
    @user.superuser? || @user.all_admin_projects.include?(record)
  end

  def show?
    @user && project_user?
  end

  def update?
    @user && project_manager?
  end

  def create?
    @user && project_manager?
  end

  def destroy?
    @user && project_manager?
  end

  class Scope < ApplicationPolicy::Scope
    def resolve
      if user.superuser?
        scope.all
      elsif user.project_admin?
        scope.find( (user.all_admin_projects+user.projects).map(&:id) )
      else
        scope.find( user.projects )
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
introspective_grape-0.6.1 spec/dummy/app/policies/project_policy.rb
introspective_grape-0.5.7 spec/dummy/app/policies/project_policy.rb
introspective_grape-0.5.6 spec/dummy/app/policies/project_policy.rb
introspective_grape-0.5.5 spec/dummy/app/policies/project_policy.rb
introspective_grape-0.5.4 spec/dummy/app/policies/project_policy.rb
introspective_grape-0.5.2 spec/dummy/app/policies/project_policy.rb
introspective_grape-0.5.0 spec/dummy/app/policies/project_policy.rb
introspective_grape-0.4.3 spec/dummy/app/policies/project_policy.rb
introspective_grape-0.4.2 spec/dummy/app/policies/project_policy.rb
introspective_grape-0.4.1 spec/dummy/app/policies/project_policy.rb
introspective_grape-0.4.0 spec/dummy/app/policies/project_policy.rb
introspective_grape-0.3.9 spec/dummy/app/policies/project_policy.rb
introspective_grape-0.3.7 spec/dummy/app/policies/project_policy.rb
introspective_grape-0.3.6 spec/dummy/app/policies/project_policy.rb
introspective_grape-0.3.5 spec/dummy/app/policies/project_policy.rb
introspective_grape-0.3.3 spec/dummy/app/policies/project_policy.rb