Story #1776: Add mailer and update users_controller. Also, update workbench and setup...
authorradhika chippada <radhika@curoverse.com>
Tue, 8 Apr 2014 21:29:03 +0000 (17:29 -0400)
committerradhika chippada <radhika@curoverse.com>
Tue, 8 Apr 2014 21:29:03 +0000 (17:29 -0400)
apps/workbench/app/controllers/users_controller.rb
apps/workbench/config/application.default.yml
services/api/app/controllers/arvados/v1/users_controller.rb
services/api/app/mailers/user_notifier.rb [new file with mode: 0644]
services/api/app/views/user_notifier/account_is_setup.text.erb [new file with mode: 0644]
services/api/config/application.default.yml
services/api/script/setup-new-user.rb
services/api/test/functional/user_notifier_test.rb [new file with mode: 0644]

index 5ace8d68193d50cd278d87167fdfaede3194c8c5..ed5edb13fb87b5c12f5add5d3ac9f6eed1aeb075 100644 (file)
@@ -149,6 +149,7 @@ class UsersController < ApplicationController
     respond_to do |format|
       if current_user.andand.is_admin
         setup_params = {}
+        setup_params[:send_notification_email] = "#{Rails.configuration.send_user_setup_notification_email}"
         if params['user_uuid'] && params['user_uuid'].size>0
           setup_params[:uuid] = params['user_uuid']
         end
index dfc4f03fd8e0d10939d095396b68c3e74810abea..c80b7f960a66f0fe11099688074ae6df289120b2 100644 (file)
@@ -73,3 +73,4 @@ common:
   show_user_agreement_inline: false
   secret_token: ~
   default_openid_prefix: https://www.google.com/accounts/o8/id
+  send_user_setup_notification_email: true
index 58661a0e9a3c970712eccc054b8d2e9060dc249e..f39a8830df5d63aa76210d1530c933a4a1d88b59 100644 (file)
@@ -131,6 +131,11 @@ class Arvados::V1::UsersController < ApplicationController
                     params[:repo_name], params[:vm_uuid]
     end
 
+    # setup succeeded. send email to user
+    if params[:send_notification_email] == true || params[:send_notification_email] == 'true'
+      UserNotifier.account_is_setup(@object).deliver
+    end
+
     render json: { kind: "arvados#HashList", items: @response }
   end
 
@@ -141,4 +146,12 @@ class Arvados::V1::UsersController < ApplicationController
     show
   end
 
+  protected
+
+  def self._setup_requires_parameters 
+    {
+      send_notification_email: { type: 'boolean', required: true },
+    }  
+  end
+
 end
diff --git a/services/api/app/mailers/user_notifier.rb b/services/api/app/mailers/user_notifier.rb
new file mode 100644 (file)
index 0000000..759325a
--- /dev/null
@@ -0,0 +1,8 @@
+class UserNotifier < ActionMailer::Base
+  default from: Rails.configuration.user_notifier_email_from
+
+  def account_is_setup(user)
+    @user = user
+    mail(to: user.email, subject: 'Welcome to Curoverse')
+  end
+end
diff --git a/services/api/app/views/user_notifier/account_is_setup.text.erb b/services/api/app/views/user_notifier/account_is_setup.text.erb
new file mode 100644 (file)
index 0000000..0f584c7
--- /dev/null
@@ -0,0 +1,6 @@
+<%= @user.full_name %>,
+
+Your Arvados account has been set up. You can log in here using your
+Google account (<%= @user.email %>):
+
+<%= Rails.configuration.workbench_address %>
index 298b001c547ae7cba2df994a73982040b022a311..1de4db1b7a81c1d55ea67dd6928a4bfaebbea00c 100644 (file)
@@ -85,6 +85,7 @@ common:
   new_users_are_active: false
   admin_notifier_email_from: arvados@example.com
   email_subject_prefix: "[ARVADOS] "
+  user_notifier_email_from: arvados@example.com
 
   # Visitors to the API server will be redirected to the workbench
   workbench_address: https://workbench.local:3001/
index ebff19263e92129e04d93d7aa5898ddb7ac0dd89..af0de13b2c0305b4b41f369e158924950ebf091e 100755 (executable)
@@ -21,6 +21,9 @@ If creating a new user record, require authentication from an OpenID \
 with this OpenID prefix *and* a matching email address in order to \
 claim the account.
   eos
+  opt :send_notification_email, <<-eos, default: 'true'
+Send notification email after successfully setting up the user.
+  eos
 end
 
 log.level = (ENV['DEBUG'] || opts.debug) ? Logger::DEBUG : Logger::WARN
@@ -55,10 +58,12 @@ end
 # Invoke user setup method
 if (found_user)
   user = arv.user.setup uuid: found_user[:uuid], repo_name: user_repo_name,
-        vm_uuid: vm_uuid, openid_prefix: opts.openid_prefix
+          vm_uuid: vm_uuid, openid_prefix: opts.openid_prefix,
+          send_notification_email: opts.send_notification_email
 else
   user = arv.user.setup user: {email: user_arg}, repo_name: user_repo_name,
-        vm_uuid: vm_uuid, openid_prefix: opts.openid_prefix
+          vm_uuid: vm_uuid, openid_prefix: opts.openid_prefix,
+          send_notification_email: opts.send_notification_email
 end
 
 log.info {"user uuid: " + user[:uuid]}
diff --git a/services/api/test/functional/user_notifier_test.rb b/services/api/test/functional/user_notifier_test.rb
new file mode 100644 (file)
index 0000000..c06f62e
--- /dev/null
@@ -0,0 +1,7 @@
+require 'test_helper'
+
+class UserNotifierTest < ActionMailer::TestCase
+  # test "the truth" do
+  #   assert true
+  # end
+end