Add tech admin role and allow tech admins to view /delayed_job (#2343)

* Add tech support role

* Add tech support permission method

* Enabled /delayed_job for tech support users

* Fix typo oops

* Add tests for tech support viewing /delayed_job

* Fix typo again...

* Rename tech role to tech admin
This commit is contained in:
Andy Zhao 2019-04-08 18:00:59 -04:00 committed by Ben Halpern
parent dfbea4c0bd
commit 36a21cd0f2
4 changed files with 25 additions and 1 deletions

View file

@ -13,6 +13,7 @@ class Role < ApplicationRecord
in: %w[
super_admin
admin
tech_admin
tag_moderator
trusted
banned

View file

@ -317,6 +317,10 @@ class User < ApplicationRecord
has_role?(:super_admin) || has_role?(:admin)
end
def tech_admin?
has_role?(:tech_admin) || has_role?(:super_admin)
end
def trusted
Rails.cache.fetch("user-#{id}/has_trusted_role", expires_in: 200.hours) do
has_role? :trusted

View file

@ -7,7 +7,7 @@ Rails.application.routes.draw do
registrations: "registrations"
}
authenticated :user, ->(user) { user.admin? } do
authenticated :user, ->(user) { user.tech_admin? } do
mount DelayedJobWeb, at: "/delayed_job"
end

View file

@ -4,6 +4,11 @@ RSpec.describe "Delayed Job web interface", type: :request do
let(:user) { create(:user) }
let(:super_admin) { create(:user, :super_admin) }
let(:article) { create(:article, user_id: user.id) }
let(:tech_admin) do
user = create(:user)
user.add_role :tech_admin
user
end
describe "GET /delayed_job" do
context "when not logged in" do
@ -36,5 +41,19 @@ RSpec.describe "Delayed Job web interface", type: :request do
expect(response.body).to include "Overview"
end
end
context "when logged in as a tech support member" do
before { login_as tech_admin }
it "redirects to overview" do
get "/delayed_job"
expect(response).to redirect_to("/delayed_job/overview")
end
it "renders overview" do
get "/delayed_job/overview"
expect(response.body).to include "Overview"
end
end
end
end