Defect #11870 » fix-11870-v3.patch
| app/controllers/users_controller.rb | ||
|---|---|---|
| 184 | 184 |
end |
| 185 | 185 | |
| 186 | 186 |
def destroy |
| 187 |
if @user == User.current && !@user.own_account_deletable? |
|
| 188 |
error_messages = @user.own_account_deletion_errors.full_messsages |
|
| 189 |
respond_to do |format| |
|
| 190 |
format.html { return render_error message: error_messages.join(', '), status: 422 }
|
|
| 191 |
format.api { return render_api_errors(error_messages) }
|
|
| 192 |
end |
|
| 193 |
end |
|
| 194 | ||
| 187 | 195 |
@user.destroy |
| 188 | 196 |
respond_to do |format| |
| 189 | 197 |
format.html { redirect_back_or_default(users_path) }
|
| app/models/user.rb | ||
|---|---|---|
| 754 | 754 | |
| 755 | 755 |
# Returns true if the user is allowed to delete the user's own account |
| 756 | 756 |
def own_account_deletable? |
| 757 |
Setting.unsubscribe? && |
|
| 758 |
(!admin? || User.active.admin.where("id <> ?", id).exists?)
|
|
| 757 |
own_account_deletion_errors.present? |
|
| 758 |
end |
|
| 759 | ||
| 760 |
def own_account_deletion_errors |
|
| 761 |
errors = ActiveModel::Errors.new(self) |
|
| 762 | ||
| 763 |
unless Setting.unsubscribe? |
|
| 764 |
errors.add(:base, :error_unable_delete_own_account) |
|
| 765 |
return errors |
|
| 766 |
end |
|
| 767 | ||
| 768 |
if admin? && !User.active.admin.where("id <> ?", id).exists?
|
|
| 769 |
errors.add(:base, :error_unable_delete_last_active_admin) |
|
| 770 |
end |
|
| 771 | ||
| 772 |
errors |
|
| 759 | 773 |
end |
| 760 | 774 | |
| 761 | 775 |
safe_attributes( |
- « Previous
- 1
- 2
- 3
- Next »