summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzul <azul@leap.se>2013-11-05 11:40:25 +0100
committerAzul <azul@leap.se>2013-11-05 11:40:25 +0100
commitb4ca13257341792f5e6496264c421af1888bcdb8 (patch)
treece573e9b360b389ab83f21fc360e9d9434423f63
parentd4f835662fac2d9dca705b5cba2e207562dec833 (diff)
refactor: Identity.disable_all_for(user) on user destruction
This way the identity model defines how identities should be disabled. We currently still destroy them. But it will be easy and nicely isolated to change this next.
-rw-r--r--users/app/models/account.rb4
-rw-r--r--users/app/models/identity.rb12
2 files changed, 13 insertions, 3 deletions
diff --git a/users/app/models/account.rb b/users/app/models/account.rb
index 5368a1b..726f642 100644
--- a/users/app/models/account.rb
+++ b/users/app/models/account.rb
@@ -29,9 +29,7 @@ class Account
def destroy
return unless @user
- Identity.by_user_id.key(@user.id).each do |identity|
- identity.destroy
- end
+ Identity.disable_all_for(@user)
@user.destroy
end
diff --git a/users/app/models/identity.rb b/users/app/models/identity.rb
index e0a24e9..c24af73 100644
--- a/users/app/models/identity.rb
+++ b/users/app/models/identity.rb
@@ -50,6 +50,12 @@ class Identity < CouchRest::Model::Base
identity
end
+ def self.disable_all_for(user)
+ Identity.by_user_id.key(user.id).each do |identity|
+ identity.disable
+ end
+ end
+
def self.attributes_from_user(user)
{ user_id: user.id,
address: user.email_address,
@@ -57,6 +63,12 @@ class Identity < CouchRest::Model::Base
}
end
+ #
+ # about to change towards actually disabling the identity instead of
+ # destroying it.
+ #
+ alias_method :disable, :destroy
+
def keys
read_attribute('keys') || HashWithIndifferentAccess.new
end