From d70c5796a2989b7b43f7e287899fb1394ae28280 Mon Sep 17 00:00:00 2001 From: Azul Date: Fri, 19 Jul 2013 16:02:02 +0200 Subject: separate signup and settings service objects for user --- users/app/models/account_settings.rb | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create 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 new file mode 100644 index 0000000..a73a95a --- /dev/null +++ b/users/app/models/account_settings.rb @@ -0,0 +1,36 @@ +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, verifier) + 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 From 115d96398246dcda23a51728dfafe1ea3c8ede88 Mon Sep 17 00:00:00 2001 From: jessib Date: Tue, 20 Aug 2013 12:37:58 -0700 Subject: Tweak to parameters to fix wrong-number-of-arguments error blocking other work. --- users/app/models/account_settings.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'users/app/models/account_settings.rb') diff --git a/users/app/models/account_settings.rb b/users/app/models/account_settings.rb index a73a95a..27fa227 100644 --- a/users/app/models/account_settings.rb +++ b/users/app/models/account_settings.rb @@ -16,7 +16,7 @@ class AccountSettings protected - def update_login(login, verifier) + def update_login(login) return unless login.present? @old_identity = Identity.for(@user) @user.login = login -- cgit v1.2.3