Sha256: 17d0cd8bb19788ddc60ffe80ed853ff4d3d6e8e20c55ca826f44dadb3d1dbda6

Contents?: true

Size: 821 Bytes

Versions: 11

Compression:

Stored size: 821 Bytes

Contents

module Homeland::Press
  class Ability
    include CanCan::Ability

    attr_reader :user

    def initialize(u)
      @user = u
      if @user.blank?
        roles_for_anonymous
      elsif @user.roles?(:admin)
        can :manage, Post
      elsif @user.roles?(:member)
        roles_for_members
      else
        roles_for_anonymous
      end
    end

    protected

    # 普通会员权限
    def roles_for_members
      can :create, Post
      can :update, Post, user_id: user.id, status: Post.statuses[:upcoming]
      can :destroy, Post, user_id: user.id, status: Post.statuses[:upcoming]
      basic_read_only
    end

    # 未登录用户权限
    def roles_for_anonymous
      cannot :manage, Post
      basic_read_only
    end

    def basic_read_only
      can [:read, :upcoming], Post
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
homeland-press-0.4.2 app/models/homeland/press/ability.rb
homeland-press-0.4.1 app/models/homeland/press/ability.rb
homeland-press-0.4.0 app/models/homeland/press/ability.rb
homeland-press-0.3.4 app/models/homeland/press/ability.rb
homeland-press-0.3.3 app/models/homeland/press/ability.rb
homeland-press-0.3.2 app/models/homeland/press/ability.rb
homeland-press-0.3.1 app/models/homeland/press/ability.rb
homeland-press-0.2.1 app/models/homeland/press/ability.rb
homeland-press-0.2.0 app/models/homeland/press/ability.rb
homeland-press-0.1.1 app/models/homeland/press/ability.rb
homeland-press-0.1.0 app/models/homeland/press/ability.rb