Skip to content

Commit d4983b0

Browse files
author
Ryan Bigg
committed
Section 8.6.2: Restrict ticket updating to only those who have write permission on the project
1 parent 9dd8744 commit d4983b0

File tree

3 files changed

+19
-0
lines changed

3 files changed

+19
-0
lines changed

ticketee/app/controllers/tickets_controller.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,12 @@ def create
2222
end
2323
end
2424

25+
def edit
26+
authorize @project, :write?
27+
end
28+
2529
def update
30+
authorize @project, :write?
2631
if @ticket.update(ticket_params)
2732
flash[:success] = "Ticket has been updated."
2833
redirect_to [@project, @ticket]

ticketee/spec/controllers/tickets_controller_spec.rb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,19 @@ def assert_no_permission!
4242
post :create, project_id: project.id
4343
assert_no_permission!
4444
end
45+
46+
it "cannot edit a ticket without permission" do
47+
get :edit, { project_id: project.id, id: ticket.id }
48+
assert_no_permission!
49+
end
50+
51+
it "cannot update a ticket without permission" do
52+
put :update, { project_id: project.id,
53+
id: ticket.id,
54+
ticket: {}
55+
}
56+
assert_no_permission!
57+
end
4558
end
4659
end
4760
end

ticketee/spec/features/editing_tickets_spec.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
before do
1111
define_permission!(user, "read", project)
12+
define_permission!(user, "write", project)
1213
login_as(user)
1314

1415
visit "/"

0 commit comments

Comments
 (0)