Fix #2851: Account deletion should remove name change requests.
Hides name change requests for deleted users (username matches /user_[0-9]+~*/).
This commit is contained in:
@@ -8,18 +8,18 @@ class UserFeedbacksController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def edit
|
def edit
|
||||||
@user_feedback = UserFeedback.find(params[:id])
|
@user_feedback = UserFeedback.visible.find(params[:id])
|
||||||
check_privilege(@user_feedback)
|
check_privilege(@user_feedback)
|
||||||
respond_with(@user_feedback)
|
respond_with(@user_feedback)
|
||||||
end
|
end
|
||||||
|
|
||||||
def show
|
def show
|
||||||
@user_feedback = UserFeedback.find(params[:id])
|
@user_feedback = UserFeedback.visible.find(params[:id])
|
||||||
respond_with(@user_feedback)
|
respond_with(@user_feedback)
|
||||||
end
|
end
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@search = UserFeedback.search(params[:search])
|
@search = UserFeedback.visible.search(params[:search])
|
||||||
@user_feedbacks = @search.paginate(params[:page], :limit => params[:limit]).order("created_at desc")
|
@user_feedbacks = @search.paginate(params[:page], :limit => params[:limit]).order("created_at desc")
|
||||||
respond_with(@user_feedbacks) do |format|
|
respond_with(@user_feedbacks) do |format|
|
||||||
format.xml do
|
format.xml do
|
||||||
@@ -34,14 +34,14 @@ class UserFeedbacksController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
@user_feedback = UserFeedback.find(params[:id])
|
@user_feedback = UserFeedback.visible.find(params[:id])
|
||||||
check_privilege(@user_feedback)
|
check_privilege(@user_feedback)
|
||||||
@user_feedback.update_attributes(params[:user_feedback])
|
@user_feedback.update_attributes(params[:user_feedback])
|
||||||
respond_with(@user_feedback)
|
respond_with(@user_feedback)
|
||||||
end
|
end
|
||||||
|
|
||||||
def destroy
|
def destroy
|
||||||
@user_feedback = UserFeedback.find(params[:id])
|
@user_feedback = UserFeedback.visible.find(params[:id])
|
||||||
check_privilege(@user_feedback)
|
check_privilege(@user_feedback)
|
||||||
@user_feedback.destroy
|
@user_feedback.destroy
|
||||||
respond_with(@user_feedback)
|
respond_with(@user_feedback)
|
||||||
|
|||||||
@@ -729,6 +729,16 @@ class User < ActiveRecord::Base
|
|||||||
where("level = ?", Levels::ADMIN)
|
where("level = ?", Levels::ADMIN)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# UserDeletion#rename renames deleted users to `user_<1234>~`. Tildes
|
||||||
|
# are appended if the username is taken.
|
||||||
|
def deleted
|
||||||
|
where("name ~ 'user_[0-9]+~*'")
|
||||||
|
end
|
||||||
|
|
||||||
|
def undeleted
|
||||||
|
where("name !~ 'user_[0-9]+~*'")
|
||||||
|
end
|
||||||
|
|
||||||
def with_email(email)
|
def with_email(email)
|
||||||
if email.blank?
|
if email.blank?
|
||||||
where("FALSE")
|
where("FALSE")
|
||||||
|
|||||||
@@ -34,6 +34,15 @@ class UserFeedback < ActiveRecord::Base
|
|||||||
where("user_id = ?", user_id)
|
where("user_id = ?", user_id)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def visible(viewer = CurrentUser.user)
|
||||||
|
if viewer.is_admin?
|
||||||
|
all
|
||||||
|
else
|
||||||
|
# joins(:user).merge(User.undeleted).or(where("body !~ 'Name changed from [^\s:]+ to [^\s:]+'"))
|
||||||
|
joins(:user).where.not("users.name ~ 'user_[0-9]+~*' AND user_feedback.body ~ 'Name changed from [^\s:]+ to [^\s:]+'")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def search(params)
|
def search(params)
|
||||||
q = where("true")
|
q = where("true")
|
||||||
return q if params.blank?
|
return q if params.blank?
|
||||||
|
|||||||
@@ -19,11 +19,11 @@ class UserNameChangeRequest < ActiveRecord::Base
|
|||||||
where(:status => "approved")
|
where(:status => "approved")
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.visible
|
def self.visible(viewer = CurrentUser.user)
|
||||||
if CurrentUser.is_admin?
|
if viewer.is_admin?
|
||||||
all
|
all
|
||||||
elsif CurrentUser.is_member?
|
elsif viewer.is_member?
|
||||||
where("user_name_change_requests.status = 'approved' OR user_name_change_requests.user_id = ?", CurrentUser.id)
|
joins(:user).merge(User.undeleted).where("user_name_change_requests.status = 'approved' OR user_name_change_requests.user_id = ?", viewer.id)
|
||||||
else
|
else
|
||||||
none
|
none
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user