diff --git a/app/models/role.rb b/app/models/role.rb index 9a9797ceaa545174bf97ded84a843df1854a9f80..cfca39dabe6eeebef6f979abc706df1a85db1220 100644 --- a/app/models/role.rb +++ b/app/models/role.rb @@ -29,4 +29,8 @@ class Role < ApplicationRecord def self.curator find_by(name: 'curator') || create!(name: 'curator') end + + def self.moderator + find_by(name: 'moderator') || create!(name: 'moderator') + end end diff --git a/app/models/user.rb b/app/models/user.rb index a68598c89afae37d02363749e9d3cf099514464c..31bf89b26dd91c2b2f1d841e8e0233f0bdf94a03 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -100,6 +100,17 @@ class User < ApplicationRecord false end + def is_moderator? + roles.each do |role| + return true if role.name == 'moderator' + end + false + end + + def can_moderate? + self.is_admin? || self.is_moderator? + end + def associated_collections c = collections.blank? ? [] : collections.to_a institutions.each { |i| c.push(*i.collections.to_a) } diff --git a/db/seeds.rb b/db/seeds.rb index 785a3bb76dff904dad91bd36d3402903fc6dc368..0a4ba3ef41205d37cb528b959212f029f5151c89 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -9,6 +9,7 @@ Role.create(name: 'teacher', description: 'This role represents a Teacher in Por Role.create(name: 'student', description: 'This role represents a Student in Portal MEC.') Role.create(name: 'admin', description: 'This role represents an MEC Admin, that can perform any action.') Role.create(name: 'curator', description: 'This role represents a content Curator in Portal MEC.') +Role.create(name: 'moderator', description: 'This role represents a content Moderator in Portal MEC, with less privileges than admin.') # create the default admin User.create( diff --git a/lib/portalmec/sociable_tests.rb b/lib/portalmec/sociable_tests.rb index b7dbc33010ee5f050b29f0f485512594efc0c913..822eff0d8b9c7a83d9ecb43f5e579b2f01cbd1e2 100644 --- a/lib/portalmec/sociable_tests.rb +++ b/lib/portalmec/sociable_tests.rb @@ -1,3 +1,5 @@ +require 'active_support' + module Portalmec::SociableTests extend ActiveSupport::Testing::Declarative