implemented user destroy action in users controller that will deactivate user account [12091751]
Esse commit está contido em:
@@ -4,9 +4,17 @@ class UsersController < ApplicationController
|
||||
skip_before_filter :force_http, only: [:update_password]
|
||||
inherit_resources
|
||||
defaults finder: :find_active!
|
||||
actions :show, :update, :update_password, :unsubscribe_notifications, :uservoice_gadget, :credits
|
||||
actions :show, :update, :update_password, :unsubscribe_notifications, :uservoice_gadget, :credits, :destroy
|
||||
respond_to :json, only: [:contributions, :projects]
|
||||
|
||||
def destroy
|
||||
authorize resource
|
||||
resource.deactivate
|
||||
sign_out(current_user) if current_user == resource
|
||||
flash[:notice] = t('users.deactivated', name: resource.name)
|
||||
redirect_to root_path
|
||||
end
|
||||
|
||||
def unsubscribe_notifications
|
||||
authorize resource
|
||||
redirect_to user_path(current_user, anchor: 'unsubscribes')
|
||||
|
||||
@@ -54,6 +54,7 @@ pt:
|
||||
my_data: "Meus dados"
|
||||
newsletter: "Quero receber novidades do Catarse por email"
|
||||
password_hint: "<i>Deixe em branco caso você não queira trocar sua senha.</i>"
|
||||
deactivate: "A conta de %{name} foi desativada."
|
||||
unsubscribes:
|
||||
title: "Escolha de quais projetos você deseja receber notificações:"
|
||||
updates: "Eu quero receber atualizações dos projetos"
|
||||
|
||||
@@ -14,6 +14,57 @@ describe UsersController do
|
||||
let(:user){ create(:user, password: 'current_password', password_confirmation: 'current_password', authorizations: [create(:authorization, uid: 666, oauth_provider: create(:oauth_provider, name: 'facebook'))]) }
|
||||
let(:current_user){ user }
|
||||
|
||||
describe "DELETE destroy" do
|
||||
context "when user is beign deactivated by admin" do
|
||||
before do
|
||||
controller.unstub(:current_user)
|
||||
sign_in(create(:user, admin: true))
|
||||
delete :destroy, id: user.id, locale: :pt
|
||||
end
|
||||
|
||||
it "should set deactivated_at" do
|
||||
expect(user.reload.deactivated_at).to_not be_nil
|
||||
end
|
||||
|
||||
it "should not sign user out" do
|
||||
expect(controller.current_user).to_not be_nil
|
||||
end
|
||||
|
||||
it { should redirect_to root_path }
|
||||
end
|
||||
|
||||
context "when user is loged" do
|
||||
before do
|
||||
controller.unstub(:current_user)
|
||||
sign_in(current_user)
|
||||
delete :destroy, id: user.id, locale: :pt
|
||||
end
|
||||
|
||||
it "should set deactivated_at" do
|
||||
expect(user.reload.deactivated_at).to_not be_nil
|
||||
end
|
||||
|
||||
it "should sign user out" do
|
||||
expect(controller.current_user).to be_nil
|
||||
end
|
||||
|
||||
it { should redirect_to root_path }
|
||||
end
|
||||
|
||||
context "when user is not loged" do
|
||||
let(:current_user) { nil }
|
||||
before do
|
||||
delete :destroy, id: user.id, locale: :pt
|
||||
end
|
||||
|
||||
it "should not set deactivated_at" do
|
||||
expect(user.reload.deactivated_at).to be_nil
|
||||
end
|
||||
|
||||
it { should_not redirect_to user_path(user, anchor: 'settings') }
|
||||
end
|
||||
end
|
||||
|
||||
describe "GET unsubscribe_notifications" do
|
||||
context "when user is loged" do
|
||||
before do
|
||||
|
||||
Referência em uma Nova Issue
Bloquear um usuário