diff options
author | jessib <jessib@riseup.net> | 2013-08-08 11:54:19 -0700 |
---|---|---|
committer | jessib <jessib@riseup.net> | 2013-08-08 11:54:19 -0700 |
commit | bca39b8f0d44dc31f77a3bfc8a94d452b4c77670 (patch) | |
tree | e3ee949bf6e02fc1bbc2ab8e3f247105b962b08e /users/app/models/account_settings.rb | |
parent | 31441fc921c3a60bff7c606f1da343fdd62d80d5 (diff) | |
parent | b1065710102193ba11e2a18b5f6506ba1d5b31f9 (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.rb | 36 |
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 |