Sha256: 7ebc66defa4a264df3a7b16341aeeb10d676c978005ede96803e50a0d2fbfcd9

Contents?: true

Size: 731 Bytes

Versions: 15

Compression:

Stored size: 731 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

15 entries across 15 versions & 1 rubygems

Version Path
introspective_grape-0.3.2 spec/dummy/app/policies/project_policy.rb
introspective_grape-0.3.1 spec/dummy/app/policies/project_policy.rb
introspective_grape-0.3.0 spec/dummy/app/policies/project_policy.rb
introspective_grape-0.2.9 spec/dummy/app/policies/project_policy.rb
introspective_grape-0.2.8 spec/dummy/app/policies/project_policy.rb
introspective_grape-0.2.7 spec/dummy/app/policies/project_policy.rb
introspective_grape-0.2.6 spec/dummy/app/policies/project_policy.rb
introspective_grape-0.2.5 spec/dummy/app/policies/project_policy.rb
introspective_grape-0.2.4 spec/dummy/app/policies/project_policy.rb
introspective_grape-0.2.3 spec/dummy/app/policies/project_policy.rb
introspective_grape-0.2.2 spec/dummy/app/policies/project_policy.rb
introspective_grape-0.2.0 spec/dummy/app/policies/project_policy.rb
introspective_grape-0.1.9 spec/dummy/app/policies/project_policy.rb
introspective_grape-0.0.4 spec/dummy/app/policies/project_policy.rb
introspective_grape-0.0.3 spec/dummy/app/policies/project_policy.rb