summaryrefslogtreecommitdiff
path: root/users/app/models/account_settings.rb
diff options
context:
space:
mode:
authorjessib <jessib@riseup.net>2013-08-08 11:54:19 -0700
committerjessib <jessib@riseup.net>2013-08-08 11:54:19 -0700
commitbca39b8f0d44dc31f77a3bfc8a94d452b4c77670 (patch)
treee3ee949bf6e02fc1bbc2ab8e3f247105b962b08e /users/app/models/account_settings.rb
parent31441fc921c3a60bff7c606f1da343fdd62d80d5 (diff)
parentb1065710102193ba11e2a18b5f6506ba1d5b31f9 (diff)
Merge pull request #64 from azul/feature/identity-rewrite
Feature/identity rewrite
Diffstat (limited to 'users/app/models/account_settings.rb')
-rw-r--r--users/app/models/account_settings.rb36
1 files changed, 36 insertions, 0 deletions
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