Merge branch 'user_delete_account' of /home/git/repositories/gitlab/gitlabhq
This commit is contained in:
commit
06dd530ede
3 changed files with 66 additions and 1 deletions
|
@ -1,6 +1,17 @@
|
|||
class RegistrationsController < Devise::RegistrationsController
|
||||
before_filter :signup_enabled?
|
||||
|
||||
def destroy
|
||||
if current_user.owned_projects.count > 0
|
||||
redirect_to account_profile_path, alert: "Remove projects and groups before removing account." and return
|
||||
end
|
||||
current_user.destroy
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to new_user_session_path, notice: "Account successfully removed." }
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def signup_enabled?
|
||||
|
|
|
@ -77,4 +77,10 @@
|
|||
.input
|
||||
= f.submit 'Save username', class: "btn btn-save"
|
||||
|
||||
|
||||
- if Gitlab.config.gitlab.signup_enabled
|
||||
%fieldset.remove-account
|
||||
%legend
|
||||
Remove account
|
||||
%small.cred.pull-right
|
||||
Before removing the account you must remove all projects!
|
||||
= link_to 'Delete account', user_registration_path, confirm: "REMOVE #{current_user.name}? Are you sure?", method: :delete, class: "btn btn-remove delete-key btn-small pull-right"
|
48
spec/requests/profile_spec.rb
Normal file
48
spec/requests/profile_spec.rb
Normal file
|
@ -0,0 +1,48 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe "Profile account page" do
|
||||
let(:user) { create(:user) }
|
||||
|
||||
before do
|
||||
login_as :user
|
||||
end
|
||||
|
||||
describe "when signup is enabled" do
|
||||
before do
|
||||
Gitlab.config.gitlab.stub(:signup_enabled).and_return(true)
|
||||
visit account_profile_path
|
||||
end
|
||||
it { page.should have_content("Remove account") }
|
||||
|
||||
it "should delete the account", js: true do
|
||||
expect { click_link "Delete account" }.to change {User.count}.by(-1)
|
||||
current_path.should == new_user_session_path
|
||||
end
|
||||
end
|
||||
|
||||
describe "when signup is enabled and user has a project" do
|
||||
before do
|
||||
Gitlab.config.gitlab.stub(:signup_enabled).and_return(true)
|
||||
@project = create(:project, namespace: @user.namespace)
|
||||
@project.team << [@user, :master]
|
||||
visit account_profile_path
|
||||
end
|
||||
it { page.should have_content("Remove account") }
|
||||
|
||||
it "should not allow user to delete the account" do
|
||||
expect { click_link "Delete account" }.not_to change {User.count}.by(-1)
|
||||
end
|
||||
end
|
||||
|
||||
describe "when signup is disabled" do
|
||||
before do
|
||||
Gitlab.config.gitlab.stub(:signup_enabled).and_return(false)
|
||||
visit account_profile_path
|
||||
end
|
||||
|
||||
it "should not have option to remove account" do
|
||||
page.should_not have_content("Remove account")
|
||||
current_path.should == account_profile_path
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue