Prevent mods from editing/deleting feedbacks given to themselves.

This commit is contained in:
evazion
2016-11-28 03:48:24 -06:00
parent bba080a4c5
commit fa74c71b6d
4 changed files with 7 additions and 3 deletions

View File

@@ -49,6 +49,6 @@ class UserFeedbacksController < ApplicationController
private private
def check_privilege(user_feedback) def check_privilege(user_feedback)
raise User::PrivilegeError unless (user_feedback.creator_id == CurrentUser.id || CurrentUser.is_moderator?) raise User::PrivilegeError unless user_feedback.editable_by?(CurrentUser.user)
end end
end end

View File

@@ -98,4 +98,8 @@ class UserFeedback < ActiveRecord::Base
return true return true
end end
end end
def editable_by?(editor)
(editor.is_moderator? && editor != user) || creator == editor
end
end end

View File

@@ -20,7 +20,7 @@
<td><%= compact_time(feedback.created_at) %></td> <td><%= compact_time(feedback.created_at) %></td>
<td><%= format_text(feedback.body) %></td> <td><%= format_text(feedback.body) %></td>
<td> <td>
<% if feedback.creator_id == CurrentUser.id || CurrentUser.is_moderator? %> <% if feedback.editable_by?(CurrentUser.user) %>
<%= link_to "edit", edit_user_feedback_path(feedback) %> <%= link_to "edit", edit_user_feedback_path(feedback) %>
| <%= link_to "delete", user_feedback_path(feedback), :method => :delete, :data => {:confirm => "Are you sure you want to delete this user feedback?"} %> | <%= link_to "delete", user_feedback_path(feedback), :method => :delete, :data => {:confirm => "Are you sure you want to delete this user feedback?"} %>
<% end %> <% end %>

View File

@@ -9,7 +9,7 @@
<li><strong>Message</strong> <%= format_text @user_feedback.body %></li> <li><strong>Message</strong> <%= format_text @user_feedback.body %></li>
</ul> </ul>
<% if @user_feedback.creator_id == CurrentUser.id || CurrentUser.is_moderator? %> <% if @user_feedback.editable_by?(CurrentUser.user) %>
<p><%= link_to "Edit", edit_user_feedback_path(@user_feedback) %></p> <p><%= link_to "Edit", edit_user_feedback_path(@user_feedback) %></p>
<% end %> <% end %>
</div> </div>