summaryrefslogtreecommitdiff
path: root/users/app/models/account_settings.rb
diff options
context:
space:
mode:
authorAzul <azul@leap.se>2013-08-30 11:20:04 +0200
committerAzul <azul@leap.se>2013-09-03 08:54:25 +0200
commit859b79d0dcd53c85bb57e3db888a1af702802987 (patch)
treecb0e293a6eddba2a9aa0b22baa0bfb43f56c43ed /users/app/models/account_settings.rb
parent0d44e39d2ec591c9ab98464b93a0c867ca96e02a (diff)
Account: Composition to handle User and its identities
We have a lot of things that act upon a user record and one or more of it's identities at the same time: * Sing up: Create a user and it's initial identity * Rename: Change the username and create a new identity, turn old into an alias * Cancel Account: Remove user and all their identities. In order to keep the User and Identity behaviour isolated but still have a this logic represented in a sinle place the Account model deals with all these things. We could have overwritten the User#create, User#update and User#destroy methods instead. But then we would always create identities, even if we only need a user (for example in tests).
Diffstat (limited to 'users/app/models/account_settings.rb')
-rw-r--r--users/app/models/account_settings.rb36
1 files changed, 0 insertions, 36 deletions
diff --git a/users/app/models/account_settings.rb b/users/app/models/account_settings.rb
deleted file mode 100644
index 27fa227..0000000
--- a/users/app/models/account_settings.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-class AccountSettings
-
- def initialize(user)
- @user = user
- end
-
- def update(attrs)
- if attrs[:password_verifier].present?
- update_login(attrs[:login])
- @user.update_attributes attrs.slice(:password_verifier, :password_salt)
- end
- # TODO: move into identity controller
- update_pgp_key(attrs[:public_key]) if attrs.has_key? :public_key
- @user.save && save_identities
- end
-
- protected
-
- def update_login(login)
- return unless login.present?
- @old_identity = Identity.for(@user)
- @user.login = login
- @new_identity = Identity.for(@user) # based on the new login
- @old_identity.destination = @user.email_address # alias old -> new
- end
-
- def update_pgp_key(key)
- @new_identity ||= Identity.for(@user)
- @new_identity.set_key(:pgp, key)
- end
-
- def save_identities
- @new_identity.try(:save) && @old_identity.try(:save)
- end
-
-end