add create method. refs #1406
[arvados.git] / app / controllers / user_sessions_controller.rb
index f941cb065329e293de2de7351118b5f71cbed57a..28e7e795cd83307f66a32f2a130016dea8dfcc9a 100644 (file)
@@ -29,16 +29,18 @@ class UserSessionsController < ApplicationController
                       :first_name => omniauth['info']['first_name'],
                       :last_name => omniauth['info']['last_name'],
                       :identity_url => omniauth['info']['identity_url'])
-      Thread.current[:user] = user # prevents OrvosModel#before_create
-                                   # from throwing "unauthorized"
-      user.save!
     else
       user.email = omniauth['info']['email']
       user.first_name = omniauth['info']['first_name']
       user.last_name = omniauth['info']['last_name']
-      user.save
     end
 
+    # prevent OrvosModel#before_create and _update from throwing
+    # "unauthorized":
+    Thread.current[:user] = user
+
+    user.save!
+
     omniauth.delete('extra')
 
     # Give the authenticated user a cookie for direct API access
@@ -64,7 +66,8 @@ class UserSessionsController < ApplicationController
     session[:user_id] = nil
 
     flash[:notice] = 'You have logged off'
-    redirect_to "#{CUSTOM_PROVIDER_URL}/users/sign_out?redirect_uri=#{root_url}"
+    return_to = params[:return_to] || root_url
+    redirect_to "#{CUSTOM_PROVIDER_URL}/users/sign_out?redirect_uri=#{CGI.escape return_to}"
   end
 
   # login - Just bounce to /auth/joshid. The only purpose of this function is