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:
parent
dfbea4c0bd
commit
36a21cd0f2
4 changed files with 25 additions and 1 deletions
|
|
@ -13,6 +13,7 @@ class Role < ApplicationRecord
|
|||
in: %w[
|
||||
super_admin
|
||||
admin
|
||||
tech_admin
|
||||
tag_moderator
|
||||
trusted
|
||||
banned
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue