From 859b79d0dcd53c85bb57e3db888a1af702802987 Mon Sep 17 00:00:00 2001 From: Azul Date: Fri, 30 Aug 2013 11:20:04 +0200 Subject: 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). --- users/app/models/account_settings.rb | 36 ------------------------------------ 1 file changed, 36 deletions(-) delete mode 100644 users/app/models/account_settings.rb (limited to 'users/app/models/account_settings.rb') 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 -- cgit v1.2.3