15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
# File 'app/models/dm_cms/concerns/ability.rb', line 15
def dm_cms_abilities(user)
if user
if user.has_role?(:content_manager)
can :access_content_section, :all
can :manage_content, :all
can :access_media_library, :all
can :access_admin, :all
elsif user.has_role?(:content_manager_alacarte)
can :access_content_section, :all
can :access_admin, :all
manage_page_ids = @user_roles.select {|r| r.name == 'manage_content' && r.resource_type == 'CmsPage'}.map(&:resource_id)
can :manage_content, CmsPage, id: manage_page_ids
can(:access_media_library, :all) unless manage_page_ids.empty?
manage_blog_ids = @user_roles.select {|r| r.name == 'manage_content' && r.resource_type == 'CmsBlog'}.map(&:resource_id)
can :manage_content, CmsBlog, id: manage_blog_ids
can :read, CmsBlog, id: manage_blog_ids
can(:access_media_library, :all) unless manage_blog_ids.empty?
end
can(:read, CmsBlog) { |blog| blog.can_be_read_by?(user) }
can(:reply, CmsBlog) { |blog| blog.can_be_replied_by?(user) }
can(:read, CmsPost) { |post| post.is_published? || user.has_role?(:reviewer) || user.has_role?(:content_manager)}
can(:read, CmsPage) { |page| page.is_published? || user.has_role?(:reviewer) || user.has_role?(:content_manager)}
else
can(:read, CmsBlog) { |blog| blog.can_be_read_by?(user) }
can(:read, CmsPost) { |post| post.is_published? }
can(:read, CmsPage) { |page| page.is_published? }
end
end
|