report controller renders index for the moderator

(#5324)
This commit is contained in:
realtin 2015-08-20 17:14:59 +02:00 committed by Jonne Haß
parent 3a3c881735
commit bc75371b7a
5 changed files with 27 additions and 2 deletions

View file

@ -92,6 +92,13 @@ class ApplicationController < ActionController::Base
end end
end end
def redirect_unless_moderator
unless current_user.moderator? || current_user.admin?
redirect_to stream_url, :notice => 'you need to be an admin or moderator to do that'
return
end
end
def set_grammatical_gender def set_grammatical_gender
if (user_signed_in? && I18n.inflector.inflected_locale?) if (user_signed_in? && I18n.inflector.inflected_locale?)
gender = current_user.gender.to_s.tr('!()[]"\'`*=|/\#.,-:', '').downcase gender = current_user.gender.to_s.tr('!()[]"\'`*=|/\#.,-:', '').downcase

View file

@ -4,7 +4,7 @@
class ReportController < ApplicationController class ReportController < ApplicationController
before_filter :authenticate_user! before_filter :authenticate_user!
before_filter :redirect_unless_admin, :except => [:create] before_filter :redirect_unless_moderator, :except => [:create]
def index def index
@reports = Report.where(reviewed: false) @reports = Report.where(reviewed: false)

View file

@ -17,6 +17,10 @@ class Role < ActiveRecord::Base
find_or_create_by(person_id: person.id, name: "admin") find_or_create_by(person_id: person.id, name: "admin")
end end
def self.moderator?(person)
exists?(person_id: person.id, name: "moderator")
end
def self.add_moderator(person) def self.add_moderator(person)
find_or_create_by(person_id: person.id, name: "moderator") find_or_create_by(person_id: person.id, name: "moderator")
end end

View file

@ -481,6 +481,10 @@ class User < ActiveRecord::Base
Role.is_admin?(self.person) Role.is_admin?(self.person)
end end
def moderator?
Role.moderator?(self.person)
end
def podmin_account? def podmin_account?
username == AppConfig.admins.account username == AppConfig.admins.account
end end

View file

@ -18,7 +18,7 @@ describe ReportController, :type => :controller do
expect(response).to redirect_to stream_path expect(response).to redirect_to stream_path
end end
end end
context 'admin signed in' do context 'admin signed in' do
before do before do
Role.add_admin(alice.person) Role.add_admin(alice.person)
@ -28,6 +28,16 @@ describe ReportController, :type => :controller do
expect(response).to render_template('index') expect(response).to render_template('index')
end end
end end
context 'moderator signed in' do
before do
Role.add_moderator(alice.person)
end
it 'succeeds and renders index' do
get :index
expect(response).to render_template('index')
end
end
end end
describe '#create' do describe '#create' do