Skip to content

Commit 125e9bd

Browse files
authored
Redirect contributors from all admin actions (#321)
2 parents 5e6cfd9 + 2ab4ead commit 125e9bd

File tree

8 files changed

+168
-41
lines changed

8 files changed

+168
-41
lines changed

app/controllers/import_reports_controller.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
class ImportReportsController < ApplicationController
22
include Pagy::Backend
33

4+
before_action :redirect_contributors
45
before_action :set_import_report, only: [ :show ]
56

67
def index

app/controllers/tags_controller.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
class TagsController < ApplicationController
33
include Pagy::Backend
44

5+
before_action :redirect_contributors
56
before_action :set_tag, only: [ :show, :edit, :update, :destroy ]
67

78
def index
@@ -24,8 +25,6 @@ def update
2425
end
2526

2627
def destroy
27-
redirect_to tags_path and return unless Current.user.is_admin?
28-
2928
if params[:confirmed]
3029
@tag.destroy
3130
redirect_to tags_path, notice: "Tag was successfully destroyed."

app/views/tags/show.html.erb

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@
99
<%= link_to "Edit this tag", edit_tag_path(@tag), class: "btn btn-primary mt-4" %>
1010
</div>
1111

12-
<% if Current.user.is_admin? %>
13-
<div>
14-
<%= button_to "Delete this tag", @tag, method: :delete, class: "btn btn-danger mt-4" %>
15-
</div>
16-
<% end %>
12+
<div>
13+
<%= button_to "Delete this tag", @tag, method: :delete, class: "btn btn-danger mt-4" %>
1714
</div>

config/routes.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@
33
Rails.application.routes.draw do
44
mount SolidQueueMonitor::Engine => "/solid_queue"
55
mount MissionControl::Jobs::Engine, at: "/jobs"
6-
resources :languages, only: %i[index show new create edit update]
6+
resources :languages, only: %i[index new create edit update]
77
resources :passwords, param: :token
88
resources :providers
99
resources :regions
1010
resource :registration, only: %i[new create]
1111
resource :session
1212
resources :uploads, only: %i[create destroy]
13-
resources :users
13+
resources :users, except: :show
1414
resources :tags, only: %i[index show edit update destroy]
1515
resources :topics do
1616
member do

spec/requests/authorizations_spec.rb

Lines changed: 160 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,29 +6,170 @@
66
before { sign_in(user) }
77

88
context "contributor" do
9-
it "can access the Topics tab" do
10-
get "/topics"
11-
expect(response).to be_successful
9+
context "Region-related actions" do
10+
let!(:region) { create(:region) }
11+
12+
it "cannot access the Regions index" do
13+
expect(get "/regions").to redirect_to(topics_path)
14+
end
15+
16+
it "cannot access Region show page" do
17+
expect(get "/regions/#{region.id}").to redirect_to(topics_path)
18+
end
19+
20+
it "cannot access Region new page" do
21+
expect(get "/regions/new").to redirect_to(topics_path)
22+
end
23+
24+
it "cannot make a Region create request" do
25+
expect { post "/regions", params: { region: { name: "A new Region" } } }.not_to change { Region.count }
26+
expect(response).to redirect_to(topics_path)
27+
end
28+
29+
it "cannot access Region edit page" do
30+
expect(get "/regions/#{region.id}/edit").to redirect_to(topics_path)
31+
end
32+
33+
it "cannot make a Region update request" do
34+
expect { put "/regions/#{region.id}", params: { region: { name: "Updated Region" } } }.not_to change { region.reload.updated_at }
35+
expect(response).to redirect_to(topics_path)
36+
end
37+
38+
it "cannot make a Region delete request" do
39+
expect { delete "/regions/#{region.id}" }.not_to change { Region.count }
40+
expect(response).to redirect_to(topics_path)
41+
end
1242
end
1343

14-
it "cannot access the Regions tab" do
15-
get "/regions"
16-
expect(response).to redirect_to(topics_path)
44+
context "Provider-related actions" do
45+
let!(:provider) { create(:provider) }
46+
47+
it "cannot access the Providers index" do
48+
expect(get "/providers").to redirect_to(topics_path)
49+
end
50+
51+
it "cannot access Provider show page" do
52+
expect(get "/providers/#{provider.id}").to redirect_to(topics_path)
53+
end
54+
55+
it "cannot access Provider new page" do
56+
expect(get "/providers/new").to redirect_to(topics_path)
57+
end
58+
59+
it "cannot make a Provider create request" do
60+
expect { post "/providers", params: { provider: { name: "A new Provider", provider_type: "provider" } } }.not_to change { Provider.count }
61+
expect(response).to redirect_to(topics_path)
62+
end
63+
64+
it "cannot access Provider edit page" do
65+
expect(get "/providers/#{provider.id}/edit").to redirect_to(topics_path)
66+
end
67+
68+
it "cannot make a Provider update request" do
69+
expect { put "/providers/#{provider.id}", params: { provider: { name: "Updated Provider" } } }.not_to change { provider.reload.updated_at }
70+
expect(response).to redirect_to(topics_path)
71+
end
72+
73+
it "cannot make a Provider delete request" do
74+
expect { delete "/providers/#{provider.id}" }.not_to change { Provider.count }
75+
expect(response).to redirect_to(topics_path)
76+
end
1777
end
1878

19-
it "cannot access the Providers tab" do
20-
get "/providers"
21-
expect(response).to redirect_to(topics_path)
79+
context "Language-related actions" do
80+
let!(:language) { create(:language) }
81+
82+
it "cannot access the Languages index" do
83+
expect(get "/languages").to redirect_to(topics_path)
84+
end
85+
86+
it "cannot access Language new page" do
87+
expect(get "/languages/new").to redirect_to(topics_path)
88+
end
89+
90+
it "cannot make a Language create request" do
91+
expect { post "/languages", params: { language: { name: "A new Language", language_type: "language" } } }.not_to change { Language.count }
92+
expect(response).to redirect_to(topics_path)
93+
end
94+
95+
it "cannot access Language edit page" do
96+
expect(get "/languages/#{language.id}/edit").to redirect_to(topics_path)
97+
end
98+
99+
it "cannot make a Language update request" do
100+
expect { put "/languages/#{language.id}", params: { language: { name: "Updated Language" } } }.not_to change { language.reload.updated_at }
101+
expect(response).to redirect_to(topics_path)
102+
end
22103
end
23104

24-
it "cannot access the Languages tab" do
25-
get "/languages"
26-
expect(response).to redirect_to(topics_path)
105+
context "Tag-related actions" do
106+
let!(:tag) { create(:tag) }
107+
108+
it "cannot access the Tags index" do
109+
expect(get "/tags").to redirect_to(topics_path)
110+
end
111+
112+
it "cannot access Tag show page" do
113+
expect(get "/tags/#{tag.id}").to redirect_to(topics_path)
114+
end
115+
116+
it "cannot access Tag edit page" do
117+
expect(get "/tags/#{tag.id}/edit").to redirect_to(topics_path)
118+
end
119+
120+
it "cannot make a Tag update request" do
121+
expect { put "/tags/#{tag.id}", params: { tag: { name: "Updated Tag" } } }.not_to change { tag.reload.updated_at }
122+
expect(response).to redirect_to(topics_path)
123+
end
124+
125+
it "cannot make a Tag delete request" do
126+
expect(delete "/tags/#{tag.id}").to redirect_to(topics_path)
127+
end
27128
end
28129

29-
it "cannot access the Users tab" do
30-
get "/users"
31-
expect(response).to redirect_to(topics_path)
130+
context "User-related actions" do
131+
let!(:user) { create(:user) }
132+
133+
it "cannot access the Users index" do
134+
expect(get "/users").to redirect_to(topics_path)
135+
end
136+
137+
it "cannot access User new page" do
138+
expect(get "/users/new").to redirect_to(topics_path)
139+
end
140+
141+
it "cannot make a User create request" do
142+
provider = create(:provider)
143+
expect { post "/users", params: { user: { email: Faker::Internet.email, password: "password123", provider_ids: [ provider.id ] } } }
144+
.not_to change { User.count }
145+
expect(response).to redirect_to(topics_path)
146+
end
147+
148+
it "cannot access User edit page" do
149+
expect(get "/users/#{user.id}/edit").to redirect_to(topics_path)
150+
end
151+
152+
it "cannot make a User update request" do
153+
expect { put "/users/#{user.id}", params: { user: { is_admin: "true" } } }.not_to change { user.reload.updated_at }
154+
expect(response).to redirect_to(topics_path)
155+
end
156+
157+
it "cannot make a User delete request" do
158+
expect { delete "/users/#{user.id}" }.not_to change { User.count }
159+
expect(response).to redirect_to(topics_path)
160+
end
161+
end
162+
163+
context "Import Reports-related actions" do
164+
let!(:import_report) { ImportReport.create }
165+
166+
it "cannot access the ImportReport index" do
167+
expect(get "/import_reports").to redirect_to(topics_path)
168+
end
169+
170+
it "cannot access ImportReport show page" do
171+
expect(get "/import_reports/#{import_report.id}").to redirect_to(topics_path)
172+
end
32173
end
33174
end
34175

@@ -40,22 +181,22 @@
40181
expect(response).to be_successful
41182
end
42183

43-
it "cannot access the Regions tab" do
184+
it "can access the Regions tab" do
44185
get "/regions"
45186
expect(response).to be_successful
46187
end
47188

48-
it "cannot access the Providers tab" do
189+
it "can access the Providers tab" do
49190
get "/providers"
50191
expect(response).to be_successful
51192
end
52193

53-
it "cannot access the Languages tab" do
194+
it "can access the Languages tab" do
54195
get "/languages"
55196
expect(response).to be_successful
56197
end
57198

58-
it "cannot access the Users tab" do
199+
it "can access the Users tab" do
59200
get "/users"
60201
expect(response).to be_successful
61202
end

spec/requests/tags/destroy_spec.rb

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,16 +42,5 @@
4242
end
4343
end
4444
end
45-
46-
context "when user is not an admin" do
47-
let(:user) { create(:user) }
48-
49-
it "preserves the tag and redirects" do
50-
delete tag_url(tag)
51-
52-
expect(response).to redirect_to(tags_url)
53-
expect(Tag.count).to eq(1)
54-
end
55-
end
5645
end
5746
end

spec/requests/tags/index_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
describe "Tags", type: :request do
44
describe "GET /tags" do
5-
let(:user) { create(:user) }
5+
let(:user) { create(:user, :admin) }
66

77
before do
88
sign_in(user)

spec/requests/tags/update_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
describe "Tag", type: :request do
44
describe "PUT /tags/:id" do
5-
let(:user) { create(:user) }
5+
let(:user) { create(:user, :admin) }
66
let!(:tag) { create(:tag, name: "Hart") }
77
let(:tag_params) { attributes_for(:tag, name: "Heart", cognates_list: [ "", "Cardiovascular", "Cardio" ]) }
88

0 commit comments

Comments
 (0)